UltraVB.Com | vBulletin Destek ve Geliştirme Forumu  

Geri git   UltraVB.Com | vBulletin Destek ve Geliştirme Forumu > Programlama > Yazılım > .Net Framework

.Net Framework Visual Studio.Net Temelini oluşturan .Net Framework hakkındaki akıllarda bulunan soruların cevapları bulabileceginiz önemli bir Türkçe kaynaktır. • NET Framework kütüphanesi • Common Language Runtime • Program örnekleri • Visual Studio .Net Patformu ve geleceği hakkında konular, makaleler, örnek kodlar

Tags: ,

Cevapla
 
LinkBack Seçenekler Stil

Alt 02-09-2007   #1 (permalink)
Mendoza
 
SaidX - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Dec 2006
Nerden: Linux
Mesajlar: 474
Rep Gücü: 0
SaidX is an unknown quantity at this point
SaidX - MSN üzeri Mesaj gönder
Component Lisanslama

COMPONENT LİSANSLAMA

3rd party componentler yazılım dünyasının yadsınamaz bir gerçeğidir. Microsoft’un varsayılan olarak verdiği componentler bir çok projede kullanışlı olsa da, gerek hayatı daha fazla kolaylaştırmak için, gerekse de görselliği daha iyi hale getirebilmek için 3rd party componentler kendilerine pazarda oldukça fazla yer bulmuşlardır. Biz de çoğu zaman kendi projelerimizde kendi componentlerimizi yapmak zorunda kalırız. Örneğin sadece nümerik değer alan bir TextBox, bir çok projenin vazgeçilmez componentlerinden biridir. Visual Studio ile beraber gelen TextBox’un böyle bir özelliği olmadığı için böyle bir senaryoda ya kendi TextBox’ımızı yazarız ya da 3rd party bir TextBox kullanırız. Böyle bir TextBox oluşturmak oldukça kolay bir iştir. Peki ya componentimiz çok daha karışık bir işlem yapıyor olsaydı? Muhtemelen o component için günler hatta haftalar harcayacaktık. Bu kadar emek verdiğimiz bir componenti bizim iznimiz olmadan başkaları tarafından kullanılmasını istemeyebiliriz. Normal şartlarda dll’imiz exe’nin yanında oluşacağı için herkes tarafından kullanılabilir. İşte bu sorunu ortadan kaldırmak için bu makalemde kendi componentimizi nasıl lisanslayacağımızı anlatacağım.
Lisanlama yapmak için gerekli olan kütüphane, System.ComponentModel’dir. Bu kütüphane içerisinden License,LicenseProvider ,LicenseManager kullanacağımız sınıflar olacak. Senaryomuz şu şekilde ilerleyecek. Önce componentimizi yazacağız. Daha sonra lisanslamanın kurallarını koyan LicenseProvider’dan türemiş bir sınıf yaratcağız, ve bunun GetLicense methodunu ezerek geriye yine kendi yazacağımız License sınıfndan miras almış bir nesne döneceğiz. Daha sonra Componentimizde bu sınıflarla çalışmak için gerekli ayarları yaptıktan sonra uygun yerlerinde LicenseManager ile geçerli olup olmayacağına karar vereceğiz.
Componentimiz, oldukça basit olsun diye sadece nümerik değerler alan bir TextBox yaratıyoruz.



Kod:
Bu Bölümü Sadece Kayıtlı Kullanıcılar Görebilir.


Haftalar harcadığımız componentimiz bu kadar.. Artık lisanslama işlerine başlayabiliriz.
İlk önce soyut License sınıfından miras alan kendi Lisans sınıfımızı yaratmak zorundayız.


Kod:
Bu Bölümü Sadece Kayıtlı Kullanıcılar Görebilir.
Buradaki LicenseKey sizin senaryonuza göre dönmek istediğiniz herhangi bir string olabilir. Örneğin setup anında kullanıcının girdiği bir serial’dan tutun da, hdd seri no’suna göre istediğiniz bir şey olabilir. Hatta bununla componentin demo,tam sürüm kontrolünü de yapabilirsiniz. Yani yaratcağınız bu lisans sınıfı tamamen sizin senaryonuz ve hayal gücünüze bağlıdır.
Lisansımızı oluşturduğumuza gçre sıra kendi LicenseProvider’ımıza geldi. Bu sınıfta componentimizin geçerli olup olmadığını belirleyen kuralları yazacağız. Sadece tek işlemcili makinalarda çalışsın, Systemde belirli bir dosya varsa geçerli olsun, registry’de kendi belirlediğiniz bir yerde bir değer varsa geçerli olsun, Internet varken geçerli olsun gibi aklınıza gelebilecek bir yığın senaryoya göre bir kontrol yazabilirsiniz. Ama biz çok daha basit bir senaryoyla gidelim. Eğer içinde bulunulan sene 2005 ise component geçerli olsun, yoksa kullanılmasına izin vermesin.


Kod:
Bu Bölümü Sadece Kayıtlı Kullanıcılar Görebilir.

Kontrol kısmımız bu kadar. Burada neler yaptığımıza bir bakalım:

GetLicense methodunu ezerek kontrolümüzü yapacağımızı daha önce de belirtmiştik. Bu fonksiyon geriye License nesnesi döndürüyor. Eğer license Nothing olarak dönerse bu component geçersiz demektir. Yani çalışmayacaktır. Bu yüzden istdediğimiz kurallar geçerliyse kendi yarattığımız License sınıfını döndüreceğiz. Bu methodda dikkatimiz çeken bir başka şey ise context.UsageMode özelliği. Bu özelliğin aldığı iki enum değeri var. Birisi DesignTime, öbürü ise RunTime. Burada kontrolün çalışma anında mı yoksa dizayn anında mı kontrol edileceğini seçebiliriz. Ben örnekte sadece designtime’ı seçtim. Böylelikle eğer kod geçersizse, componentimi toolbox’tan forma sürüklenip bırakılamayacaktır.
Lisans sınıfımızı böylelikle bitirdik. Bunu dll olarak derlersek istediğimiz komponentlerde defalarca kullanabiliriz. Şimdi son aşamaya geldik. Componentimizle bu sınıfları nasıl ilişkiye geçireceğiz?


Kod:
Bu Bölümü Sadece Kayıtlı Kullanıcılar Görebilir.

Burada componentimize bir Attribute tanımlıyoruz. Bu Attribute’da hangi LicenseProvider’ı kullanacağımızı belirtiyoruz. Bunu yaptıktan sonra en önemli kısmı LicenseManager’ı kullancağımız yer. Kontrolü nerede yapmak istiyorsanız orada gerekli kodlarımızı yazıyoruz. Bu herhangi bir fonksiyon olabilir. Benim senaryoma göre ben kontrol yaratılırken kontrol ettirmek istiyorum. O yüzden componentimin Constructor’ına yazıyorum.

lic = LicenseManager.Validate(GetType(BenimKomponent.Ben imTeksBaks), Me)

Bu kod kontol için yeterli olacaktır. Eğer Validate methodu nothing dönerse component yaratılmayacaktır. Finalize’da ise lisansın kullandığı kaynakları temizliyoruz.
Bu kadar! Artık test aşamasına geldik. Solution’uma test etmek için bir Windows Projesi açıp, ToolBox’ıma componentimi atıyorum.


Tarih 2005’te ise herhangi bir sorun yaşamadan componentimi kullanıyorum. Tarihi 2006 olarak değiştirirsem, VS 2003 ve 2005’te şu hataları alıyorum.




Görüldüğü gibi form’a, Component’imim sürüklenip bırakılamıyor bile... Eğer bu Component’i sene 2005’te yarattığım bir projede kullanıp, sene 2006’da tekrar derlemeye çalışırsam da şöyle bir hata alıyorum.



Eğer kontrolü Runtime’da kontrol ettirseydim, componentim hiç bir şekilde 2005 yılı dışında çalışamayacaktı. İşin en güzel tarafı ise “Please contact the manufacturer of the component for more information” yazısındaki manufacturer’in biz olması..
__________________
sevince...
SaidX isimli Üye şimdilik offline konumundadır  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Alıntı ile Cevapla

Cevapla

Anahtar Kelimeler
component, lisanslama





Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Flash component 'leri arası veri bağlama CoNaNx Macromedia Flash 0 03-13-2007 01:33


Şu Anki Saat: 03:19


Powered by vBulletin® Version 3.7.4
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
Beşiktaş Tezahüratları