Silverlight 3 Beta - Assembly Caching(Önbellekleme) (tr-TR)

Silverlight 3 Beta - Assembly Caching(Önbellekleme) (tr-TR)

Merhaba arkadaşlar, bu makalemizde Silverlight 3 Beta ile birlikte gelen Assembly Caching (Önbellekleme) özelliğini inceliyor olacağız.


Silverlight 2.0 ile birlikte Silverlight uygulamaları XAP dosyalarında dağıtılmaya başlamıştı. XAP dosyalarının (aslında ZIP dosyası) içerisinde Silverlight uygulamamızda kullandığımız assemly(DLL) ’ler yer alıyordu ve bu yüzden XAP dosyalarının boyutu da büyüyordu. Silverlight 3 Beta ile birlikte Assembly Caching özelliği geldi ve Silverlight uygulamalarına Referans edilen assembly dosyaları XAP dosyası içinde değil de kullanıcının makinesine internet üzerinden(microsoft.com’dan) indirilip kullanılıyor. XAP dosyasının içinde assembly’ler yer almayacağı için XAP dosyasının da boyutu da küçülüyor. Bunun dezavantajı da var, eğer o anda internet bağlantımız yoksa Silverlight uygulamamız çalışmayacaktır

Yeni bir Silverlight uygulaması oluşturalım ve projemizi derleyip oluşan XAP dosyasını inceleyelim. (XAP dosyasını Win Zip ya da Win Rar ile açabiliriz)

Resim 1 

ZAP dosyamız 290 KB görünüyor. Şimdi XAP dosyasının içindeki dosyalara bakalım.

Resim 2

Projemize referans olarak eklediğimiz Assembly(DLL)’ler XAP dosyası içerisinde yer alıyor. Boyut olarak da bir hayli büyümüş ve daha da büyüyebilir. Son olarak XAP içerisinde yer alan AppManifest.XAML dosyasını açalım ve inceleyelim.

<Deployment xmlns=http://schemas.microsoft.com/client/2007/deployment
xmlns
:x=http://schemas.microsoft.com/winfx/2006/xaml
EntryPointAssembly
="SL30AssemblyCaching" EntryPointType="SL30AssemblyCaching.App"
RuntimeVersion
="3.0.40307.0">
    <Deployment.Parts> 
        // Referans gösterdiğimiz Assembly’ler…
        <AssemblyPart x:Name="SL30AssemblyCaching" Source="SL30AssemblyCaching.dll" />
        <AssemblyPart x:Name="System.ComponentModel.DataAnnotations" Source="System.ComponentModel.DataAnnotations.dll" />
        <AssemblyPart x:Name="System.ComponentModel" Source="System.ComponentModel.dll" />
        <AssemblyPart x:Name="System.Data.Services.Client" Source="System.Data.Services.Client.dll" />
        <AssemblyPart x:Name="System.Json" Source="System.Json.dll" />
        <AssemblyPart x:Name="System.Windows.Ria" Source="System.Windows.Ria.dll" />
        <AssemblyPart x:Name="System.Xml.Linq" Source="System.Xml.Linq.dll" />
    </Deployment.Parts>
</
Deployment>

Silverlight 3 Beta ile gelen Assembly Caching özelliğini kullanalım. Bu özelliği kullanabilmemiz için Silverlight uygulaması üzerinde sağ tıklayarak properties’i açalım. Açılan pencerede “Reduce Xap size by caching framework assamblies” seçeneğini seçelim. (Default olarak seçili gelmiyor) 

Resim 3 

Şimdi projemizi tekrar derleyelim ve XAP dosyasını tekrar inceleyelim.

Resim 4

Dosya boyutu 63 KB’a düşmüş, XAP Dosyasını açalım ve içindeki dosyalara bakalım. 

Resim 5

Son olarak XAP içindeki AppManifest.XAML dosyasına da açıp bakalım, içeriğinin değiştiğini göreceğiz.

<Deployment xmlns=http://schemas.microsoft.com/client/2007/deployment
xmlns
:x=http://schemas.microsoft.com/winfx/2006/xaml
EntryPointAssembly
="SL30AssemblyCaching" EntryPointType="SL30AssemblyCaching.App"
RuntimeVersion
="3.0.40307.0">
    <Deployment.Parts>
        <AssemblyPart x:Name="SL30AssemblyCaching" Source="SL30AssemblyCaching.dll" />
        <AssemblyPart x:Name="System.Windows.Ria" Source="System.Windows.Ria.dll" />
        </Deployment.Parts>
    <Deployment.ExternalParts>
    // Referans gösterdiğimiz assembly’ler uygulama browser da çalıştığı anda indirilecek.
    <ExtensionPart Source="http://go.microsoft.com/fwlink/?LinkID=142565" />
        <ExtensionPart Source="http://go.microsoft.com/fwlink/?LinkID=141727" />
        <ExtensionPart Source="http://go.microsoft.com/fwlink/?LinkId=142566" />
        <ExtensionPart Source="http://go.microsoft.com/fwlink/?LinkId=142567" />
        <ExtensionPart Source="http://go.microsoft.com/fwlink/?LinkId=142576" />
    </Deployment.ExternalParts>
</
Deployment>

XAP içinde yer alan assembly’ler artık burada yer almıyor. Assembly yerine indirileceği linkler yer alıyor. Silverlight uygulaması browser da çalıştığında Silverlight uygulaması bu linkleri kullanılarak ilgili assembly dosyalarını kullanıcının makinesine microsoft.com’dan indirecek.

Silverlight uygulması derlenirken bu linkleri C:\program files\microsoft sdks\silverlight\v3.0\libraries\client klasöründeki*.extmap.xml dosyalarından alıyor. Eğer burada ilgili dosya yoksa XAP içerisine assembly'nin kendisini atıyor. 

<?xml version="1.0"?>
<
manifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <
assembly>
        <
name>System.Windows.Controls.Data.DataForm</name>
        <
version>2.0.5.0</version>
        <
publickeytoken>31bf3856ad364e35</publickeytoken>
        <
relpath>System.Windows.Controls.Data.DataForm.dll</relpath>
      <
extension downloadUri="http://go.microsoft.com/fwlink/?LinkID=142573"/>
    </
assembly>
</
manifest>

Leave a Comment
  • Please add 2 and 8 and type the answer here:
  • Post
Wiki - Revision Comment List(Revision Comment)
Sort by: Published Date | Most Recent | Most Useful
Comments
  • Ed Price - MSFT edited Original. Comment: Added Turkish code to title and Turkish tr-TR language tag.

Page 1 of 1 (1 items)
Wikis - Comment List
Sort by: Published Date | Most Recent | Most Useful
Posting comments is temporarily disabled until 10:00am PST on Saturday, December 14th. Thank you for your patience.
Comments
  • Ed Price - MSFT edited Original. Comment: Added Turkish code to title and Turkish tr-TR language tag.

Page 1 of 1 (1 items)