<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.NET</title>
        <link>http://www.ozgurbelul.com/category/6.aspx</link>
        <description>.NET üzerine genel bilgiler</description>
        <language>tr-TR</language>
        <copyright>Özgür Belül</copyright>
        <managingEditor>ozgurbelul@hotmail.com</managingEditor>
        <generator>Subtext Version 1.9.5.177</generator>
        <item>
            <title>Managed mı Unmanaged mı?</title>
            <link>http://ozgurbelul.com/archive/2008/06/15/managed-mı-unmanaged-mı.aspx</link>
            <description>&lt;p class="MsoNormal"&gt;İnanması belki zor olabilir ancak managed kodlar unmanaged kodlara göre daha performanslı olabilmektedir. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;Örneğin JIT derleyici IL kodunu çalışma anında makine diline çevirdiğinden derleyici unmanaged derleyiciye göre çalışma ortamı hakkında daha fazla bilgiye sahip oluyor. Bu durumda Pentium 4 işlemcili bir makinede çalıştığımızı düşünürsek derleyici çalışma anında derleme yaparken P4 işlemciye özel komutları kullanabiliyor. Unmanaged uygulamalar genelde en düşük CPU’ya göre derlendiğinden performans artışı sağlayan özel komutlardan faydalanma imkanı olmuyor.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Bununla birlikte, örneğin sonucu sürekli false dönecek bir kodumuza varsa JIT bu kod için makine dili oluşturmuyor.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;İf(CPUSayisi &amp;gt; 1)&lt;/p&gt;
&lt;p class="MsoNormal"&gt;{&lt;/p&gt;
&lt;p class="MsoNormal"&gt;...&lt;/p&gt;
&lt;p class="MsoNormal"&gt;}&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Yukarıdaki kod tek işlemcili makinede her zaman false döneceğinden gereksiz yere makine dilinde işlemci komutu oluşturmaya gerek yok. Bu durumda oluşan kod makineye özel, daha kısa ve daha hızlı oluyor.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Başka bir nokta ise CLR kodun çalışma planının profilini çıkartıp uygulama çalışırken IL kodunu farklı bir şekilde makine diline çevirebilir. Yeniden oluşturulan kod diğerine göre daha hızlı olacaktır.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Bunlar sadece bir kaç örnek ama yakın gelecekte managed kodların günümüzün unmanaged kodlarına oranla daha hızlı çalışacağının sinyallerini veriyor.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Ayrıca .Net Framework SDK ile gelen NGEN.exe’yi kullanarak IL kodlarınızın tamamını makine diline çevirebilirsiniz. Bu durumda bir dosya oluşacak ve sürücünüze kaydedilecektir. Çalışma anında CLR assembly’nin çevrilmiş bir versiyonu olup olmadığına bakacak ve eğer varsa bunu kullanacaktır.&lt;/p&gt;&lt;img src="http://ozgurbelul.com/aggbug/9.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Özgür Belül</dc:creator>
            <guid>http://ozgurbelul.com/archive/2008/06/15/managed-mı-unmanaged-mı.aspx</guid>
            <pubDate>Sun, 15 Jun 2008 15:51:55 GMT</pubDate>
            <wfw:comment>http://ozgurbelul.com/comments/9.aspx</wfw:comment>
            <comments>http://ozgurbelul.com/archive/2008/06/15/managed-mı-unmanaged-mı.aspx#feedback</comments>
            <wfw:commentRss>http://ozgurbelul.com/comments/commentRss/9.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Module, metadata, assembly, manifest, component</title>
            <link>http://ozgurbelul.com/archive/2008/06/15/module-metadata-assembly-manifest-component.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;Ö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. &lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;&lt;br /&gt;
Derleyici tarafından derlenen kod sonucunda ortaya çıkan en küçük birime &lt;strong&gt;module&lt;/strong&gt; denir. .Net platformunda CLR tarafından yönetilen kod yazdığımız için ise bu birime &lt;strong&gt;managed module&lt;/strong&gt; 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.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Bu dosya içerisinde şu kısımlar yer alır. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;PE32/PE32+ Header :&lt;/strong&gt;  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.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;CLR Header :&lt;/strong&gt;  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.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Metadata :&lt;/strong&gt;  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.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Intermediate Language (IL) Code :&lt;/strong&gt; 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.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Aslında CLR doğrudan module ile çalışmaz, bunun yerine bir ya da daha fazla module’ün mantıksal gruplamasından meydana gelen &lt;strong&gt;Assembly&lt;/strong&gt; 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ı &lt;strong&gt;Component&lt;/strong&gt;’tir.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Assemblyler de içerisinde &lt;strong&gt;Manifest&lt;/strong&gt; 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.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://ozgurbelul.com/aggbug/8.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Özgür Belül</dc:creator>
            <guid>http://ozgurbelul.com/archive/2008/06/15/module-metadata-assembly-manifest-component.aspx</guid>
            <pubDate>Sun, 15 Jun 2008 12:54:46 GMT</pubDate>
            <wfw:comment>http://ozgurbelul.com/comments/8.aspx</wfw:comment>
            <comments>http://ozgurbelul.com/archive/2008/06/15/module-metadata-assembly-manifest-component.aspx#feedback</comments>
            <wfw:commentRss>http://ozgurbelul.com/comments/commentRss/8.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>