FSP: Flyweight Silverlight Pattern - Parte 2

lunes, 14 de diciembre de 2009

La cache de assemblies

Para lograr la cache de assemblies con SL, todas las ddls que componen o compondrán el proyecto se deben seguir los siguentes pasos:

  1. Cada assembly deberá tener un "strong name"
  2. Cada librería(.dll) deberá tener un fichero descriptivo "extmap"
  3. Una vez logrado esto se ha de activar la cache de assemblies en la propiedades del proyecto.

Generando el strong name

Propiedades del proyecto -> Signing


Hay que seleccionar el fichero snk a firmar o sino crear uno nuevo.


Si elegimos crear un fichero de firma, deberiamos indicarle un nombre y es recomendable también colocarle una contraseña.


Generando el fichero descriptivo "extmap"

Antes de generar el fichero descriptivo debemos compilar el proyecto y posteriormente obtener la "Public key token" de la dll resultante con la utilidad sn.exe.

La dll suele estar en C:\directorioProyecto\Bin\Debug\miproyecto.dll

Para obtener la "Public key token" hay que abrir una consola, preferentemente la del visual studio ya que suele contener todos los PATHs correspondientes cargados.


Una vez en la consola hay que colocarnos en el directorio de la dll y utilizar la utilidad sn.exe con el parámetro -T.



Imaginemos que la librería se llama System.Windows.Interactivity y su strong name es 31bf3856ad364c35, asi el fichero que debemos generar debe llamarse System.Windows.Interactivity.extmap.dll con el siguiente contenido:
<?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.Interactivity</name>
    <version>1.0.0.0</version>
    <publickeytoken>31bf3856ad364c35</publickeytoken>
    <relpath>System.Windows.Interactivity.dll</relpath>
    <extension downloadUri="System.Windows.Interactivity.zip" />
  </assembly>
</manifest>
Este fichero ha de estar dentro de la misma carpeta que la dll.

Activar la cache de assemblies del XAP
Finalmente en el proyecto principal (el shell en el caso de usar CAL) y todos los módulos que lo compondrán, hay que marcar la casilla "Reduce XAP size by using application library caching"



Esto acabará generando tantos ficheros .zip como referencias a librerías hayan con ficheros "extmap" tenga el proyecto, dentro de la carpeta ClientBin del proyecto web donde se aloje el control.

Advertencia : Todas las referencias de todos los módulos que componen la aplicación, han de estar referenciadas en el proyecto del Shell.

Enlaces relacionados:
Cómo: Usar el almacenamiento en caché de biblioteca de aplicaciones


- FIN -