Özgür Belül

x += x++;
posts - 11, comments - 3, trackbacks - 0

Module, metadata, assembly, manifest, component

Özellikle yeni başlayanlar için kavramlar arasında kaybolmak oldukça kolay olduğundan module, metadata, assembly, manifest, component gibi temel bir kaç kavrama açıklık getirmek istedim.

Derleyici tarafından derlenen kod sonucunda ortaya çıkan en küçük birime module denir. .Net platformunda CLR tarafından yönetilen kod yazdığımız için ise bu birime managed module denir. Managed module çalışmak için CLR’a ihtiyaç duyan standart bir 32-bit Microsoft Windows portable executable (PE32) ya da 64-bit (PE32+) dosyasıdır.

Bu dosya içerisinde şu kısımlar yer alır.

PE32/PE32+ Header :  Eğer header kısmında PE32 formatı kullanılmışsa uygulama çalışmak için 32-bit sisteme, PE32+ kullanılmışsa 64-bit sisteme ihtiyaç duyar. Burada ayrıca dosyanın tipi bilgisi (DLL, GUI, CUI), dosyanın üretildiği tarihin tutulduğu tarih bilgisi gibi bilgiler yer alır.

CLR Header :  Bu dosyayı managed hale getiren CLR versiyon bilgisi, başlangıç metodu olan Main metodunun bilgisi, metadata bilgisinin yeri ve büyüklüğü, kaynaklar gibi bilgileri tutar.

Metadata :  Her module metadata tablolarına sahiptir. 2 tip metadata tablosu vardır. Birincisi kaynak kodunuzda yer alan tiplerin ve üyelerin tanımlarını tutarken ikincisi kaynak kodunuz tarafından refere edilen tiplerin ve üyelerin tanımlarını tutar.

Intermediate Language (IL) Code : IL Microsoft tarafından bazı akademik ve ticari dil / derleyici yazarları ile görüşülerek yaratılmış bir dildir. Kaynak kodu derlendiğinde ortaya çıkan CPU bağımsız yüksek seviyeli makine dilidir. IL'i nesne yönelimli makine dili olarak da düşünebilirsiniz. Sembolik makine dili olan Assembly (Aşağıda geçen assembly ile sadece isim benzerliği var.) kullanılarak IL kodu yazılabilir. Bunun için ILAsm.exe'yi kullanabilirsiniz. Ancak C# gibi yüksek seviyeli bir dil kullanan developerlar için bu iş derleyici tarafından yapılır ve kod derlendiğinde derleyici tarafından IL koduna çevrilir, calışma anında ise CLR bu kodu makine dilinde işlemci komutlarına çevirir.

Aslında CLR doğrudan module ile çalışmaz, bunun yerine bir ya da daha fazla module’ün mantıksal gruplamasından meydana gelen Assembly ile çalışır. Assembly tekrar kullanılabilirlik, güvenlik ve versiyonlama uygulanabilirliği açısından en küçük birimdir. Bir ya da daha fazla dosyadan meydana gelen assembly olabilir. Assembly’nin CLR dünyasında geçen adı Component’tir.

Assemblyler de içerisinde Manifest denilen bilgileri taşırlar. Manifest aslında metadata tablolarının bir başka setidir. Bu set içerisinde ise assembly’i oluşturan dosyaların bilgilerini, assembly ile ilgili kaynak (.jpg, .html vb.)  veya data dosyalarının bilgilerini tutarlar.

Print | posted on Sunday, June 15, 2008 3:54 PM | Filed Under [ .NET ]

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 5 and 5 and type the answer here:

Powered by: