domingo, 19 de julio de 2015

Vista General de Microsoft .NET Framework

Índice

0. Introducción
1. Qué es el Framework .NET
2. Generalidades de .NET Framework
3. Arquictuctura
3.1 mscorlib.dll
3.2 Principios de diseño
3.2.1 Interoperabilidad
3.2.2 Independencia del lenguaje
3.2.3 Portabilidad
3.2.4 Seguridad
3.2.5 Gestión de memoria
3.2.6 Despliegue simplificado
3.2.7 Rendimiento
4. Compatibilidad
5. Novedades de .NET Framework 4.5
6. Conclusiones
7. Glosario
8. Literatura & Enlaces

0. Introducción

Hasta este punto hemos estudiado varios aspectos de la sintaxis y funcionalidad del lenguaje de programación C#: uso de construcciones del lenguaje básicas (creación de expresiones, sentencias de control y de iteración), creación de funciones (métodos, propiedades, constructores, clases, eventos, delegados, etc), manipulación de entrada y salida de flujos, programación orientada a objetos, uso de colecciones básicas y avanzadas, estructuración del código C#, tipos (clases, herencia, structs, interfaces, genéricos, etc), expresiones lambda, manejo de excepciones, eventos, delegados, etc. Podemos considerar este conocimiento adquirido como fundamental y práctico para ir más a fondo, y debemos tomar esto como la gran oportunidad de seguir adelante y profundizar en temas como:
  • Fundamentos de .NET Framework, 
  • Colecciones, 
  • LINQ
  • LINQ a XML
  • Tecnologías XML
  • Garbage collection
  • Code Contracts
  • Concurrencia y asincronía, 
  • Flujos de entrada y salida, 
  • Networking
  • Serialización, 
  • Assemblies
  • Reflection y metadatos, 
  • Programación dinámica, 
  • Seguridad, 
  • Threading avanzado, 
  • Programación paralela, 
  • Dominios de aplicación, 
  • Interoperabilidad nativa y COM
  • Expresiones regulares.
Lo que haremos a partir de ahora es ir desplazándonos por cada uno de estos grandes temas hasta alcanzar la gran imagen -Big Picture- fundamentada de Mircrosoft .NET Framework.


Seguramente esta será una experiencia enriquecedora, estimulante, y abierta a otras oportunidades.

1. Qué es el Framework .NET

Quizás el término Framework se haya vuelto común en nuestro vocabulario computacional y esto se debe fundamentalmente a la plataforma común sobre la que hemos estado trabajando para estudiar el lenguaje de programación C#. Esto nos hace pensar que el término framework es una pila de software concebida para desarrollar soluciones a la medida recurriendo a elementos ya existentes y que aceleran y facilitan el proceso construcción de software.

.NET Framework es entonces la solución de Microsoft para permitir a programadores, desarrolladores, y arquitectos de software crear soluciones a medida de acuerdo a los requerimientos de un dominio en particular.

2. Generalidades de .NET Framework

Desde el lanzamiento oficial de Microsoft .NET Framework, 13 de febrero de 2002 [2], Microsoft ha invertido infinidad de esfuerzos y recursos para hacer este framework una solución idónea y efectiva a las demandas de software de la industria; en consecuencia, el grado de sofisticación alcanzado hasta la fecha se puede analogar con la creación de una plataforma de desarrollo robusta, segura, multi-paradigma, fiable. Desde luego su diseño se irá adaptando a las demandas de la industria y a las innovaciones en tecnologías de desarrollo de software.

Por otra parte, debemos conocer que las grandes capacidades de .NET Framework residen principalmente en un conjunto de tipos gestionados (managed). (Vale recordar que un tipo gestionado es aquel donde los procesos de asignación y manejo de memoria se hayan automatizados por un ambiente administrado capaz de gestionar memoria, manejo de excepciones, seguridad.) Todos estos tipos estructuralmente se organizan en grupos lógicos conocidos como namespaces (o nombres de espacio).

Continuando, estos namespaces se localizan en paquetes conocidos como assemblies. La suma de estos elementos y una máquina virtual conocida como Common Language Runtime [3] (CLR) conforman .NET Framework. En la Figura 1 se destacan los elementos básicos sobre los que residen otras tecnologías de este Framework.
Common Language Runtime (CLR) y Framework Class Library (FCL)
Figura 1. Common Language Runtime (CLR) y Framework Class Library (FCL).

Notamos que además de la CLR el segundo elemento básico es Framework Class Library (FCL) el cual es una librería estándar del conjunto estándar de librerías de la CLR: clases reutilizables, interfaces y tipos primitivos [4]. Esta librería está soportada por la BCL (Base Clase Library) la cual brinda clases para funcionalidad básica en namespaces como [4]:
  • System
  • System.CodeDom
  • System.Collections
  • System.Diagnostics
  • System.Globalization
  • System.IO
  • System.Resources, y 
  • System.Text

3. Arquitectura

3.1 mscorlib.dll

Los tipos básicos que constituyen y permiten el funcionamiento del ambiente gestionado (e.g., gestión automática de memoria, excepciones, garbage collection, seguridad, despliegue, depuración) están localizados en el assembly mscorlib.dll. Estos tipos están diseñados para llevar a cabo operaciones y prestar funcionalidad como [1]:
  • tipos integrales o primitivos, 
  • clases de colecciones, 
  • tipos para el procesamiento de entrada y salida, 
  • serialización, 
  • threading
  • interoperabilidad nativa.
A partir de este assembly se soportan las demás implementaciones de .NET Framework. Entre estas implementaciones se soportan características como la manipulación de XML, el trabajo con el lenguaje de consulta integrado (LINQ [7]), servicios de red, entre otros.

Respecto a lo anterior, los clases, interfaces, enumeraciones, etc. están organizados en los siguientes assemblies:
  • System.dll
  • System.Xml.dll
  • System.Core.dll
(En [8] podemos encontrar la guía de referencia de la relación entre namespaces y assemblies.)

En la Figura 2 se resaltan otras de las tecnologías de este ambiente de programación y aplicaciones específicas (APIs):
APIs
Figura 2. APIs.

3.2 Principios de diseño

.NET Framework fue concebido pensando en los siguientes principios de diseño.

3.2.1 Interoperabilidad

Con .NET Framework es posible interactuar con arquitecturas heterogéneas antiguas o nuevas. Esto lo logra a través de clases localizadas en los namespaces:
  • System.Runtime.InteropServices, y 
  • System.EnterpriseServices.

3.2.2 Independencia del lenguaje

Cualquier lenguaje prgramación diseñado bajo los lineamentos de diseño de la especificación Common Language Infraestructure [9] (CLI) puede interoperar con tipos definidos en otros lenguajes de programación (e.g., C#, VB.NET, F#).

3.2.3 Portabilidad

.NET Framework fue concebido para ser multiplataforma, es decir, ejecución bajo cualquier sistema operacional. Aunque en la actualidad, sólo se ha implementado totalmente en la plataforma Windows.

3.2.4 Seguridad

La seguridad de .NET Framework reside principalmente en dos características:
  • CAS - Code Access Security, y 
  • Validación y verificación.
Con estos mecanismos de seguridad se establecen permisos de ejecución, se restringe o se prohibe la ejecución de una aplicación.

3.2.5 Gestión de memoria

La gestión de memoria automática libra al programador de la tarea de asignación y remoción de memoria de tipos instanciados. La gestión de memoria es llevada a cabo por la CLR y cuenta con un componente de detección de basura conocida como Garbage Collector que monitoriza y detecta cuando un elemento es candidato para ser eliminado de la memoria.

3.2.6 Despliegue simplificado

.NET Framework cuenta con herramientas para facilitar la instalación de aplicaciones de forma sencilla, manteniendo la consistencia operacional, requerimientos de seguridad  con el sistema objetivo.

3.2.7 Rendimiento

.NET Framework implementa un mecanismo de caché (.NET Native Image Cache) para acelerar la ejecución de instancias posteriores de una aplicación.

4. Compatibilidad

En la Tabla 1 [1] se enumeran las distintas versiones de C#, la CLR, y Microsoft .NET Framework y su compatibilidad.

Versiones de C#, CLR, y .NET Framework
Tabla 1. Versiones de C#, CLR, y .NET Framework.

5. Novedades de .NET Framework 4.5

Entre las novedades sobresalientes de Microsoft .NET Framework tenemos:
  • Soporte para tareas asincronas, 
  • Soporte mejorado para HTTP
  • Mejoras en el rendimiento del garbage collector
  • Soporte para interoperabilidad WinRT
  • Soporte para aplicaciones basadas en el estilo Metro, 
  • Soporte para protocolo de compresión zip.

6. Conclusiones

Hemos estudiado los básicos de la arquitectura de Microsoft .NET Framework. Este conocimiento nos es útil para poder estudiar las diferentes tecnologías construidas bajo esta plataforma.


En el próximo artículo .NET Framework estudiáremos el core detrás de .NET Framework.

7. Glosario

  • .NET
  • API
  • Assembly
  • Framework
  • Interoperabilidad
  • Máquina virtualo
  • Principio de diseño
  • Programación
  • Tecnología
  • Windows

8. Literatura & Enlaces

[1]: C# 5.0 in a Nutshell by Joseph Albahari and Ben Albahari. Copyright 2012 Joseph Albahari and Ben Albahari, 978-1-449-32010-2.
[2]: .NET Framework - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/.NET_Framework
[3]: Common Language Runtime - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/Common_Language_Runtime
[4]: Framework Class Library - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/Framework_Class_Library
[5]: Standard Libraries (CLI) - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/Standard_Libraries_(CLI)#Base_Class_Library
[6]: Common Language Runtime (CLR) - https://msdn.microsoft.com/en-us/library/8bs2ecf4(v=vs.110).aspx
[7]: Language Integrated Query - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/Language_Integrated_Query
[8]: Framework 4.0 Namespace-to-Assembly Reference - http://www.albahari.com/nutshell/namespacereference.aspx
[9]: Common Language Infrastructure - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/Common_Language_Infrastructure


V

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.