What is Silverlight Application Library Caching?

What is Silverlight Application Library Caching?


I was just working with one Silverlight application that has too many 3rd party assemblies (Excel, theme, charts etc).

Also it was taking long time while downloading first time. Obviously, this is because of large XAP size. So, I thought to divide entire application in multiple projects which will create multiple XAP’s and then use it by on demand load.

But, I have used more third party dll’s. In this case it is too hectic to store them on separate XAP and then load it on demand. Then, I came to know about new concept (for me) about “ Application Library Caching”



So, What is Assembly caching? We all know about the on demand download of XAP file. To do this, we need to write code for downloading the external xap files using WebClient. Application Library caching does the similar thing for you very easily. Suppose, if you have a bigger application and used a huge 3rd party libraries, this easy step will help you make a separate zip file with them which can be downloaded on demand without writing any additional code.



Step 1.

Create one Silverlight 3 or 4 application(its available in SL 3 also). I have named it as ARVApplicationLibraryCaching.

If you see in the solution-references, you will find the assemblies ,those have been added to the project.





Once you build the app, you can find XAP file in the client bin directory.

To see the contents inside the XAP, go to the ClientBin folder. There you will find the XAP output of your Silverlight application. Rename it with zip and extract then, you can find as given bellow.




To see all the assembly references, open appmanifest file using notepad.




You will notice that, it has all the referenced dll information as Assembly part, entry point and required runtime version. Assembly parts tells to load the referred assembly directly from the XAP.





Step 2.

Adding more third party Assemblies.

Go to add reference and add some third party dll’s. I have added here some dll’s related to theme.





Once you build the app and unzip the XAP. Then you will find as given bellow.




You will see that all the new referenced dlls are now part of your XAP. If you open AppManifest.xmal,






it contains all those additional dll entries as AssemblyPart and tells to load them from the XAP itself.

This actually increases the XAP size and makes your application little bulky. Thus increases initial loading time of your application.



Step 3.

Use application library caching.

To overcome this, there is a setting project property window as shown bellow.






Now, build the project. You will find zip files as per you have been added third party dll’s.




Then, go to AppManifest file, then see






Here a single AssemblyPart pointing to your original project output and rest of the dll references are now moved to ExternalParts. They are now pointing to the Zip files instead of the actual dlls.

Now, when you run your application, it will only download the XAP file which contains only the main resources. Rest of the dll ZIP will be downloaded on demand whenever require by your application.

Enjoy the concept!!!!!!!



Aravind

Comments

Popular posts from this blog

Wrapping information in a symbol-Microsoft Tag

Best Ways For WCF Exception Handling

UiPath Tutorials - Part 3 (Important concepts of UiPath)