![]() |
|
| |||||||
|
| WebMasTer SiTeSi |
| | Seçenekler |
|
#1
| |||
| | |||
AssemblyAssembly Kavramı Assembly; pek çok programcı tarafından yanlış anlaşılmış bir kavramdır. Herşeyden önce, .NET 'teki Assembly kavramı ile herhangi bir mikro işlemciye ait sembolik makine dili birbirlerinden çok farklı şey'leri ifade eder. .Net 'te derlenen sınıf kütüphaneleri (class library 'ler) ismine assembly denilen dll dosyalarını oluştururlar. Bu anlamda bir assembly; bir yada daha fazla fiziksel dosyayı barındıran bir kolleksiyondur. Bu dosyalar; assembly içerisindeki derlenmiş sınıfların kodları, resimler, resource dosyaları, ve diğer binary dosyalardır. Assembly dosyaları .dll yada .exe uzantılı olabilir. Assembly 'ler kabaca COM bileşenlerine (dll'lerine)benzetilebilir. Ancak bildiğimiz COM dll 'lerinden oldukça farklı bir yapıya sahiptirler. Bu farklılığın en önemli sebebi assembly'lerin registry'i kullanmamasıdır. Oysa; bildiğiniz gibi, COM dll'leri kendilerine ait bir takım kimlik bilgilerini saklamak için registry'i yoğun olarak kullanmaktadır. Bileşenlerin registry kullanımı beraberinde bazı dezavantajlar getirmektedir. Bir an için Visual Basic ile bileşen tabanlı uygulamalar geliştirdiğimiz günlere dönersek, kendi makinemizde yazdığımız ve derlediğimiz bir uygulamayı, dosya kopyalaması ile başka bir makineye taşıdığımızda uygulamanın çalışmadığını görürüz. Bunun nedeni; uygulamayı taşıdığımız makinedeki işletim sisteminin, uygulamamızın kullandığı bileşenler hakında herhangi bir bilgiye sahip olmamasıdır. Visual Basic 6.0 ide'si ile bir uygulamayı derlediğimiz zaman; ide, uygulamanın kullandığı bileşenlere ait kimlik bilgilerini, registry'e otomatik olarak kaydeder, bu sayede uygulama bir bileşeni kullanmak istediğinde, o bileşene ait kimlik bilgileri registry'den okunur ve bileşen uygulama tarafından sorunsuzca kullanılır. Buraya kadar herşey tamam, ancak uygulamalar her zaman yazıldıkları makinede çalışmazlar. Uygulama başka bir makineye taşınıp, çalıştırılmak istendiğinde; o makinedeki işletim sisteminin de uygulama ile birlikte taşınan bileşenlerden haberdar edilmesi gereklidir. İşletim sisteminin herhangi bir bileşen hakkında bilgi sahibi olabilmesi için, sözkonusu bileşene ait bir takım kimlik bilgilerinin registry'e kaydedilmiş olması gerekir. Bunun için iki farklı yöntem mevcuttur. Birincisi; görevi dosya kopyalamasının yanı sıra bileşenlerin registry'e otomatik olarak kaydedilmesini de sağlayan Setup programlarının kullanılmasıdır. İkinci yöntem; uygulama ve uygulamanın kullandığı bileşenler ile diğer dosyaların kopyalanması daha sonra bileşenlerin 'regsvr32.exe' gibi bir program kullanılarak sisteme register edilmesidir. Her iki yöntemde oldukça uzun ve zahmetli işlemlerdir. Yukarıda anlatılan bu zahmetli işlemler yerine sadece dosya kopyalaması ile bir uygulamayı bir makineden diğerine taşıyıp çalıştırsak ne kadar güzel olurdu... Bu düşünceden hareketle yola çıkan Microsoft mühendisleri assembly denilen tekniği geliştirdi. Assembly sayesinde bu bahsedilen işlemleri yapmak artık mümkün. Örneğin bir VB.NET programı bulunduğu dizin ile birlikte (.Net Framework'ün kurulu olduğu) başka bir makinaya taşındığında hiç bir problem çıkmadan çalışabilir. Çünkü .Net assembly'leri; COM bileşenlerinden farklı olarak kimlik bilgilerini registry'e yazmak yerine kendi üzerlerinde taşırlar. Assembly 'lerin Teknik Yapısı Assembly'ler; MSIL (Microsoft Intermediate Language) kodu içerir. Ancak assembly’ler içerisinde sadece MSIL değil, aynı zamanda meta data denilen bilgiler de bulunur. .Net bileşenlerinin de, COM bileşenlerinde olduğu gibi bileşeni tanımlamaya yarayan bir takım kimlik bilgilerine ihtiyacı vardır. İşte metadata bu kimlik bilgilerine verilen isimdir. Kimlik bilgileri isim, versiyon bilgisi gibi tanımlayıcı verilerdir. Bu bilgileri içeren, ve her assembly ’de mutlaka bulunması gereken öğe'ye assembly manifest denir. Assembly manifest COM 'daki type library'e benzerdir. (Type Library : Bir veya daha fazla COM nesnesi tarafından sunulan sınıf ve interface'lerin özelliklerinin tanımlandığı binary dosyadır) Assembly manifest 'in içeriği: Assembly ismi Versiyon bilgisi (her derlemede belirli bir düzene göre otomatik olarak artar) Assembly içerisindeki dosyalar Referanse edilen assembly'ler Ayrıca programcı da, bir assembly'e yeni özellikler de ekleyebilir. Başlık yada tanımlama gibi. Assembly 'lerin içeriği, .Net içerisindeki 'ildasm.exe' adlı programla görüntülenebilir. Assembly 'ler Ve Dağıtım Assembly'ler de faaliyet alanlarına göre iki grupta incelenebilir. 1 - Application Private Assembly (Uygulamaya özgü assembly) ve 2 - Shared Assembly (Birden fazla uygulama tarafından paylaşılabilen assembly) Application Private Assembly Application Private Assembly 'ler sadece bir tek uygulama tarafından kullanılabilen assembly'lerdir. Bir uygulamanın herhangi bir private assembly'i kullanabilmesi için derleme sırasında dll dosyasının projeye referanse edilmesi gerekir. Application Private Assembly 'ler; uygulamanın bulunduğu dizinin altındaki bin isimli dizinde bulunurlar. Shared Assembly Shared assembly'ler ise sistemde bulunan tüm .Net uygulamaları tarafından ortaklaşa kullanılabilen assembly'lerdir. Örneğin 'System.Windows.Forms.dll' gibi. Shared assembly'ler; Global Assembly Cache 'te saklanırlar. Global Assembly Cache; Winnt\Assembly dizinidir. Shared assembly'ler; application private assembly'ler gibi yaratılırlar ve ismine 'gacutil.exe' denilen bir programla Global Assembly Cache 'e eklenirler. |
![]() |
| Arama Etiketleri: assembly |
| Seçenekler | |
| |
Benzer Konular | ||||
| Konu | Konu Açanlar | Forum | Cevaplar | Güncel Mesajlar |
| Assembly nedir ? anlamı | MaNeX | Webmaster Sözlügü | 0 | 05-04-2008 01:22 |
| Visual Basic içinde Assembly kullanmak.. | Celebrian | Visual Basic & Action script | 0 | 24-12-2007 12:04 |
![]() |