FSP: Flyweight Silverlight Pattern

martes, 24 de noviembre de 2009

Normalmente el objetivo de desarrollar una aplicación RIA, esta es desarrollar una aplicación web, similar a una aplicación de escritorio, tanto en apariencia como en funcionalidad.

Para lograr esta apariencia y esta funcionalidad, las aplicaciones se componen de páginas y se nutren de imagenes, ficheros de recursos, librerías desarrolladas por nosotros y en algunos casos distintos componentes comprados a terceros.

Como ya es sabido, desarrollar una aplicación RIA con Silverlight genera un único fichero XAP, que aunque comprimido, lleva todos los ficheros necesarios dentro, por tanto estamos hablando de ficheros bastante grandes con tiempos de carga elevados. Y esto es buen problema!


FSP (Flyweight Silverlight Pattern)

Es una técnica para construir aplicaciones ligeras, de bajo acoplamiento y esta compuesta por la combinación de la caché de assemblies + CAL.

Por que "flyweight"? Por que se intenta reducir al máximo las dependencias redundantes de todos XAP que componen una aplicación construida sobre CAL.

Silverlight 3, trae consigo la posibilidad de utilizar una cache de assemblies, esto se traduce en que una aplicacion se puede dividir en diferentes librerias las cuales se pueden ir descargando a medida que se van necesitando.

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

Pero solo utilizar la cache de assemblies, a veces, es insuficiente y provoca ciertas carencias, por ello, si a esto sumamos CAL (Composite application library) como base para desarrollar aplicaciones pobremente acopladas; obtendremos unos assemblies bastante más ligeros, especializados y en consecuencia más rápidos de cargar.

En los siguientes post explicaré un poco más como conseguir aplicar FSP.

- FIN -

Documentacion de Silverlight 3 en Castellano

lunes, 9 de noviembre de 2009

Actualmente se puede descargar la documentación de SL3 en Castellano de la siguiente dirección:

Documentación de Microsoft® Silverlight™ 3 sin conexión
Documentación en castellano sobre conceptos de SL3, componentes iniciales que trae, tecnologías que lo componen.

Independientemente de la documentación anteriormente citada, el entorno de desarrollo debería estar compuesto de los siguientes elementos:

Silverlight Toolkit
Incluye código fuente, test unitarios, temas, ejemplos y documentación.

Unit Test Framework for Microsoft Silverlight
Silverlight Unit Test Framework (Microsoft.Silverlight.Testing) es una solución simple y extensible para realizar testing sobre nuestras aplicaciones hechas con SL.
Composite Application Guidance for WPF and Silverlight - February 2009
Es una guia que nos ayuda a diseñar y construir aplicaciones compuestas con WPF a un nivel empresarial (aplicaciones débilmente acopladas).

Microsoft® Silverlight™ 3 SDK
Descarga del SDK de SL3

Microsoft Enterprise Library 4.1 – October 2008 (.Net 3.5 y VS2008)
Es una colección de componentes software reutilizables, diseñados para asistir a los desarrolladores de software en tareas comunes como pueden ser: Caching, Cryptography, Data Access, Exception Handling, Logging, Policy Injection, Security, Validation, y Unity.
Hands-On Labs for Enterprise Library 4.1
Incluye laboratorios de Caching, Cryptography, Data Access, Exception Handling, Interception, Logging, Security, Validation, y Unity.

Guidance Automation Extensions - February 2008 Release
Guidance Automation Toolkit for Visual Studio 2008 - February 2008 Release

Guidance Automation Extensions for Visual Studio 2008 and Visual Studio 2008 Service Pack 1 Update (GAXP1409)
Web Client Software Factory - February 2008

Unity Application Block 1.2 for Silverlight - December 2008
Es un contenedor que nos permite aplicar IoC y DI en nuestras aplicaciones (similar a Spring), facilita la creación de aplicaciones débilmente acopladas, entre otras cosas nos evita crear objetos y nos proporciona unas factorias para hacerlo, permitiendo cambiar las dependencias en tiempo de ejecución.
Unity Application Block 1.2 Documentation for Visual Studio 2008

Using Prism Quick Start Kit for Silverlight 3
Conjunto de plantillas de proyectos para ayudarnos a implantar PRISM para SL.

Microsoft Expression Blend 3 SDK Con las librerias de este SDK podemos enchufar fácilmente comportamiento a los eventos de los objetos según el patron MVVM.

- FIN -

Sirviendo ficheros xml incompletos

martes, 3 de noviembre de 2009

Hoy me ha vuelto a salir un viejo error del cual no recordaba la solución.

Resulta que estoy sirviendo ficheros xml (que se generan dinámicamente) desde una página asp.net; pero en la descarga se me devuelve el fichero incompleto, normalmente se "pierde/o quita" el caracter de cierre del nodo raiz (>).

String sxml = builder.ConstruyeXML(obj);
Response.AddHeader("Content-Disposition", "attachment; filename=fich_" + id + ".xml");
Response.ContentType = "text/xml";
Response.Write(sxml);
Response.Flush();
Response.End();
La solución ha sido añadirle un retorno de carro al final del xml a devolver:
String sxml = builder.ConstruyeXML(obj) + "\r\n";
Es cutre, si!!! y no se si realmente es la forma mas efectiva, lo que si es seguro, es que funciona.

- FIN -