Despliegue distribuido de clientes en .NET problemas y futuro

Desde la beta 1 de Visual Studio 2010 llevo testeándolo, pero aun no me había atrevido a escribir nada. Pero esta mañana leí una cosa que me pareció bastante interesante.

Para aquellos que tenemos aplicaciones distribuidas usando .NET 3.5 SP1 tenemos bastantes problemas a la hora de la distribución o inclusión de nuevos clientes.

Estos problemas derivan de que .NET 3.5 SP1 es una recopilación de bastantes actualizaciones partiendo de .NET 2.0 como base:

image

Lo que supone instalar 6 actualizaciones acumulativas, esto sobre una instalación base de XP sin .NET. Sobre todo la última actualización .NET 3.5 SP1 se hizo más pesada de lo habitual. Ya que incluía parches para el .NET 2.0, para el .NET 3.0 y para .NET 3.5. Ya que aun que en el gráfico yo lo puse en ese orden, no fue ese el orden real de publicación, ya que el .NET 2.0 SP2 y el .NET 3.0 SP2 fueron publicados junto al .NET 3.5 SP1 y durante un tiempo solo se podían instalar con el .NET 3.5 SP1 (el gráfico de publicación lo podéis ver a continuación).

image

Esto supuso un gran problema. Si nosotros nuestro proyecto de .NET 2.0 (con Visual Studio 2005) lo migrábamos a Visual Studio 2008 SP1 (liberado junto a .NET 3.5 SP1) y compilábamos con .NET 2.0, realmente estaría compilando con .NET 2.0 SP2 y en nuestros clientes no funcionaría. El problema se vio agravado ya que el paquete de .NET 2.0 SP2 no estuvo disponible hasta 6 meses después de la liberación de .NET 3.5 SP1. Cosa que obligaba instalar en todos los clientes el monumental .NET 3.5 SP1 (que ocupaba 3 veces más que su original 2.0). No solo eso, la instalación de dicho paquete se hacía eterna (aproximadamente entre 45 min y 1 hora dependiendo de la máquina). Esto en una máquina, ni en diez, es problema. Pero si hablamos de un sistema distribuido con un número considerable de clientes, si que podría ser un problema, sobre todo garantizando el funcionamiento del sistema durante la implantación y su mantenimiento.

Otra solución posible sería el planteamiento del uso del Client Profile de .NET Framework, que es una versión reducida para clientes distribuidos. Pero, solo era posible la opción si partíamos de una instalación limpia (sin .NET) y solo disponible en XP (ya que Windows Vista trae consigo .NET 3.0 y Windows 7 tiene .NET 3.5 SP1).

Pero .NET 4.0 tiene grandes novedades en su .NET Framework 4 Client Profile. Como gran novedad, al contrario que su antecesor, se puede instalar en cualquier SO y plataforma donde .NET 4 Framework esté soportado. Siendo Client Profile un subset de .NET 4 completo y el .NET 4 completo es un superset del primero. No solo eso, además han conseguido reducir el Client Profile a un distribuible de apenas 30 MB, incluyendo las tecnologías más comunes de los clientes como Windows Forms o WPF. Por otra parte, Visual Studio 2010 Beta 2 en sus proyectos de escritorio tiene por defecto el Client Profile activado.

Siendo esta la tabla comparativa (extraída de un post de Scott Guthier):

 

 

.NET Framework 4 Client Profile (NEW)

.NET Framework 3.5 SP1 Client Profile

Supported OS

Supported on all platforms and  OSs that are supported by the .NET Framework (excluding IA64 and the Server Core role in W2K8)

Supported only on Windows XP 32-bit machines that did not have any .NET Framework version installed.

(Client Profile setup silently installs the full 3.5 SP1 Framework otherwise)

Redistributable

Supports redistributable as well as web download

Supports web download only

Add Remove Programs entries

The full Framework comprises the Client Profile and another part called “Extended”. Thus it has two entries in the Add/Remove Programs dialog (or Programs and Features window).

If you installed the Full Framework, you can switch to the Client Profile by simply removing “Extended” from Add/Remove Programs.

Single entry in Add Remove Programs

Visual Studio

Improved support for Client Profile targeting in Visual Studio 2010.

By default many Visual Studio 2010 Beta2 Client project target the NET4 Client Profile.

Single checkbox in Visual Studio 2008 Service Pack 1 “Application” Project properties for .NET Framework 3.5 projects. Client Profile support unavailable in out-of-the-box VS 2008.

Features

Includes new .NET 4  features (such as Managed Extensibility Framework (MEF), C# 4 Dynamic Keyword,etc) as well as features previously included in NET 3.5 SP1 Full (Speech, WPF Spell Check, etc)

Subset of features in .NET 3.5 SP1 Full

Espero que os sea útil e interesante 🙂

Follow me: http://twitter.com/eugenioestrada