|1.


.Net uygulamalarının derlenmesini müteakip oluşan dosyalara denir. Ya dll suretinde görünür ya da executable suretinde.


Bir assembly dosyası IL (intermediate language) kodları, metadata ve manifestten oluşur. IL kodları bizim yazdığımız C#, vb.net, ve benzeri dillere ait kodların .net standardında, assembly diline yaklaştırılmış halinden başka bir şey değildir. Java byte kodlarıyla yaklaşık aynı anlama gelir. Metadata programımızda kullandığımız tipler (type) hakkında bilgi taşırken, manifest ise assemblinin mevcut versiyonuyla ilgili bilgi taşır.
Assembly yaklaşımıyla COM nesnelerinde karşılaşılan klişeleşmiş bazı problemler çözülmüş oldu :
- Örneğin COM nesnelerinin kullanılabilmesi için regsvr32.exe tool'u ile registery'ye kaydedilmesi gerekiyordu. Mesela ASP ile yaptığınız web sitenizde file upload işlemleri için bir COM nesnesi kullandınız diyelim. Sitenizi host eden firmadan bu dll'i registery'ye eklemesini ve ardından web server'ı yeniden başlatmasını isterdiniz. Onlar da size "olur güzelim, hemen hallederiz, başka bir ihtiyacın olursa çekinme söyle" demezlerdi tabi. Güvenlik gerekçesiyle third party COM nesnelerini yüklemeyi kabul etmezlerdi.
- Ayrıca COM nesnelerinin registery'ye bağlı olması, registery'deki deformasyonlardan direk etkilenmesi anlamına geliyordu.
- Artı COM nesneleri kullanan bir uygulama deployment açısından da sorunluydu. Mutlaka bir setup hazırlamanız gerekirdi. Öyle eski DOS tabanlı uygulamalar gibi xcopy deployment yapılamıyordu.
- Sonra COM ile versiyon problemleri de yaşanıyordu. Örneğin bilgisayarınızda bir COM nesnesinin 1.0 versiyonunu kullanan programlar olsun. Siz bu nesnenin 2.0 versiyonunu kullanan yeni bir programı bilgisayarınıza yüklediğinizde registery'de yeni versiyona ait bilgiler eski versiyonun üstüne yazılırdı. Yeni programınız düzgün çalışırdı belki ama diğer programlar gümlerdi.
Hasılı COM, kullanımı zor ve kırılgan bir teknoloji idi. Assembly teknolojisi ile bu problemlerin tamamı çözüldü:
- .NET assembly'leri registery'ye bağlı değildir.
- Xcopy deployment ile kurulabilir.
- Assembly'lerin manifest kısmı versioning problemlerine makul çözümler getirir. Aynı dll'in iki farklı versiyonu yan yana çalıştırılabilir. Hatta programınızı tekrar derleminize bile gerek olmadan bir konfigürasyon dosyasıyla kullandığınız dll'in yeni versiyonuna geçiş yapabilirsiniz.
fizikci
06 Haziran 2005 22:08 ~ 25 Kasım 2005 17:00