Qué es .NET 3.0 y qué no es

viernes, 26 de enero de 2007

Con la reciente liberación de la versión final de .NET 3.0, son frecuentes las preguntas acerca de qué es, qué incluye, y otras dudas como "cuál es su compatibilidad con la versión 2.0".

Para clarificar el panorama, presento algunas de mis conclusiones sobre el tema agrupadas en dos afirmaciones:

.NET 3.0 es un avance importantísimo en la plataforma .NET

.NET 3.0 no es una nueva version del runtime .NET, no, no no

.NET 3.0 es un avance importantísimo en la plataforma .NET

Después de mucha investigación, feedback de los desarrolladores, y participación de la comunidad, Microsoft completó e hizo público el paquete de nuevas tecnologías que, luego de pasar por diversos alias durante su gestación (WinFx, Indigo, Avalon, Workflow Foundation, etc) finalmente salió a la luz con el nombre .NET 3.0.

Este conjunto de tecnologías lleva a una nueva dimensión las aplicaciones en código manejado (.NET) al abrir posibilidades inéditas en la experiencia de usuario, comunicación entre aplicaciones, automatización de procesos de negocios, y otros avances. Estas nuevas funcionalidades se distribuyen entre los componentes centrales de .NET 3.0:

  • Windows Presentation Foundation (ex "Avalon")
  • Windows Communication Foundation (ex "Indigo")
  • Windows Workflow Foundation
  • Windows CardSpace

Físicamente (en términos binarios) estas funcionalidades están contenidas en varios assemblies (.dll) que se adicionan a los de .NET 2.0 luego de un proceso de instalación del runtime 3.0.

Para una una idea más completa del alcance de estas tecnologías visite el portal de .NET 3.0 para desarrolladores en http://www.netfx3.com/.

.NET 3.0 no es una nueva version del runtime .NET, no, no, no


Algunos elementos de la presentación comercial de .NET 3.0 llevan a entenderlo como "la versión del runtime .NET que sucede a la versión 2.0". Esta confusión en parte se origina por:

  • el nombre del producto. En la sucesión lógica de .NET 1.0, .NET 1.1, .NET 2.0 que eran versiones sucesivas del entorno de ejecución de .NET con su propia version de bibliotecas de clases, etc., es fácil caer en el error de pensar que .NET 3.0 es una nueva versión del tipo de las anteriores.
  • la carpeta de instalación. Dentro de la carpeta Windows\Microsoft.NET\Framework, la versión 3.0 aparece como una nueva subcarpeta a la par de la v2.0.50727

Sin embargo, un análisis más cuidadoso de la implementación de .NET 3.0 pone de manifiesto que este conjunto de nuevas funcionalidades se montan sobre el mismo runtime de .NET 2.0:

  • si en una aplicación nueva realizada con .NET 3.0 (por ejemplo un aplicación de Windows Presentation Foundation) se pregunta para cualquier clase del sistema el numero de version del runtime, se obtiene el valor "2.0.50727"
  • la carpeta v3.0 que se crea en Microsoft.NET\Microsoft sólo contiene los assemblies adicionados y requiere la carpeta v2.0.50727 para funcionar (de hecho la instalación del runtime "3.0" instala ambas) .

Este hecho despeja muchas de las dudas respecto a la coexistencia de aplicaciones 3.0 y 2.0: la compatibilidad es completa porque se trata de la misma versión del runtime.