Assembly Caching in Silverlight

Posted by in Silverlight category on for Intermediate level | Points: 250 | Views : 9463 red flag

In this post , I talk about how to improve the performance of your Silverlight app using the Assembly Caching feature.
Performance is key to any application and Silverlight application is no different. In this post I will show you how you can increase the performance of your app by using assembly caching feature in Silverlight.


What is Assembly Caching

You can gain the substantial performance in your application if your download time of the xap file can be reduced. Assembly caching feature allow to reduce this size of xap file by partitioning your external assemblies in separate zip files.If you view the properties of your Silverlight project. You would find a checkbox with the text “ Reduce XAP size by using application library caching ”. See the screen shot below.
Once this checkbox is checked then instead of creating a single large xap file it will create separate zip (see the diagram below) files of all the external assemblies and the xap file will only contain Silverlight core assemblies. ExternalAssemblies


Importance of Assembly Caching

This feature does not reduce the initial download time of your application, but it really helps when it comes to deploying the updates for your app. If this feature is off then the user has to download the entire application including the external assemblies with every update. But when this feature is on the user will only download the xap file without the external assemblies getting downloaded because these assemblies are cached in the user’s browser cache. These files only get downloaded when these files are changed on the server.


How it works

Every assembly which is getting cached corresponds to the external part manifest file on the same path from where it is being referenced. This file can be identified by the following name [AssemblyName].extmap.xml. So for example if we talk about System.ServiceModel.Web.Extensions assembly, its corresponding manifest file name will be in the same location with the filename as System.ServiceModel.Web.Extensions.extmap.xml. The AppManifest.xaml file , located in xap file references these external assemblies. The content of this file is listed below.

<Deployment xmlns="" xmlns:x="" EntryPointAssembly="TestBizApp" EntryPointType="TestBizApp.App" RuntimeVersion="4.0.50826.0"> <Deployment.Parts> <AssemblyPart x:Name="TestBizApp" Source="TestBizApp.dll" /> <AssemblyPart x:Name="System.Windows.Controls.Data.DataForm.Toolkit" Source="System.Windows.Controls.Data.DataForm.Toolkit.dll" /> </Deployment.Parts> <Deployment.ExternalParts> <ExtensionPart Source="" /> <ExtensionPart Source="" /> <ExtensionPart Source="" /> <ExtensionPart Source="" /> <ExtensionPart Source="" /> <ExtensionPart Source="" /> <ExtensionPart Source="" /> <ExtensionPart Source="" /> </Deployment.ExternalParts> </Deployment>



Every developer must think upfront for gaining performance improvements. He or she must leave no stone unturned to gain any performance improvements. If your project is referenced to your own external assembly you must try to cached it that also. For this the assembly should be signed. Alex Golesh has utility to generate the extmap files of your custom assemblies. PS : Assembly Caching feature is not available for Out of Browser Silverlight Apps. HAPPY CODING
Page copy protected against web site content infringement by Copyscape

About the Author

Full Name: Muhammad Afzal Qureshi
Member Level: Bronze
Member Status: Member
Member Since: 8/4/2009 10:58:17 PM
Country: India
Hello Everyone Myself Muhammad Afzal , aka GoldyTech. Thats my pen name. I reside in India and work as a solution Architect on .NET platform. I hope you must have enjoyed reading my blog. Please leave your comments or suggestions good or bad and help me to improve

Login to vote for this post.

Comments or Responses

Login to post response

Comment using Facebook(Author doesn't get notification)