![]() |
| |||||||
| .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: component, lisanslama |
![]() |
| | LinkBack | Seçenekler | Stil |
| |
| | #1 (permalink) |
| Mendoza | 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. 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. ![]() ![]() ![]() 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... |
| | |
| |
![]() |
| Anahtar Kelimeler |
| component, lisanslama |
| Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| Seçenekler | |
| Stil | |
| |
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 |