viernes, 21 de agosto de 2009

Generalidades del .NET Framework

En   este   artículo   conoceremos  los   conceptos  básicos   del   .NET Framework, y cómo podemos comenzar a desarrollar aplicaciones con Visual Studio .NET 2008.

Muchos amigos me han sugerido compartir parte de mi experiencia en el mundo de .NET, y aprovecho la oportunidad para agradecerles por este reto personal. Para muchos, esta tecnología puede tener sus falencias, pero como dijo un gran amigo mío: "No hay tecnología mala, sino mal aplicada", y que siempre debemos buscar una forma práctica y óptima de hacer las cosas, para lo cual siempre tendremos a la mano a "Dr. Google".

CONOCIENDO EL .NET FRAMEWORK.

El .NET Framework se define como la plataforma de desarrollo de aplicaciones basados en la tecnología .NET, conformada por los siguientes componentes:

Common Language Runtime (CLR): encargado de ejecutar y monitorear las aplicaciones .NET, a través de servicios que hacen posible un entorno más administrado (Managed Code), que a diferencia de los motores de ejecución de versiones anteriores (ejemplo: VB 6.0), dependían del sistema operativo (Unmanaged Code).

Librerías de Clase Base: conformado por los componentes o ensamblados requeridos para construir cualquier aplicación soportada por el .NET Framework, ejemplo: aplicaciones de escritorio (Win32), librerías dinámicas (DLL), páginas Web, servicios Windows, servicios Web, aplicaciones móviles, etc. Los componentes o ensamblados, se organizan de forma jerárquica a través de Namespace , ejemplo:
  • System: Namespace principal, donde localizamos la definición de los tipos de datos nativos del .NET Framework, como: Int32, Int64, Boolean, String, etc.
  • System.Collection: aquí localizamos las clases para definir colecciones o arreglos, ejemplo: ArrayList, Dictionary, HashTable, etc.
  • System.Data: aquí localizamos las clases principales para trabajar con ADO.NET y consumir un origen de datos. 

    Importante: se recomienda aplicar esta nomenclatura cuando configure sus propias librerías, ejemplo: Rze.Tools.dll, Rze.Security.BusinessEntities.dll}
Lenguaje de Especificación Común (CLS): encargado de administrar la compatibilidad en el uso de tipos (enteros, alfanuméricos, etc), cuando los componentes de una aplicación se implementen en diferentes lenguajes.

Importante:
cuando haga uso de diferentes lenguajes para los componentes de su aplicación, procure respetar las equivalencias en los tipos de datos, esto optimiza la integración en tiempo de ejecución.

Cada uno de los componentes del .NET Framework, se encuentran identificados en el siguiente gráfico:


 Figura 1: Arquitectura del .NET Framework.
    En el gráfico anterior, podemos distinguir la arquitectura del .NET Framework 3.5, la cual incluye nuevas extensiones como:
    • ASP.NET MVC: permite el desarrollo de páginas Web, basado en el patrón Model-View-Controller (esto fue incorporado en SP1 del .NET Framework 3.5).

    • Ajax: permite una interacción asíncrona desde el Browser del cliente, con el servidor Web de nuestra aplicación.

    • LINQ (Language Integrated Query): permite emplear sintaxis de consulta para diferentes tipos de orígenes de datos, ejemplo: colecciones, DataSets, XML.

    • Entity Framework: permite manejar un modelo de objetos para diferentes orígenes de datos, manejando la persistencia de datos (operaciones contra un origen), basado en código .NET.

    • WPF (Windows Presentation Foundation): permite la mejora visual de las aplicaciones a tavés del uso de XAML (eXtensible Application Markup Language), el WPF incorpora como mejora principal el uso de los aceleradores de gráfico (Codecs)

    • WCS (Windows CardSpace) permite el uso de tokens de identificación para aplicaciones que ejecuten bajo Windows XP SP2 ó superior.

    • WWF (Windows Workflow Foundation) permite implementar procesos de negocio basados en Workflows, y podemos integrarlo con otras plataformas como Microsoft Office SharePoint Server 2007 (MOSS).

    • WCF (Windows Communication Foundation) permite implementar servicios para aplicaciones distribuidas, y es la plataforma base actual de Microsoft para la construcción de soluciones basadas en SOA (Services Oriented Architecture).

    En los próximos artículos, trataremos más a detalle acerca de los componentes mencionados.

    ¿QUÉ ES UN ENSAMBLADO?.

    Para el .NET Framework, la unidad mínima de ejecución es el ensamblado (Assembly) el cual se representa como un archivo de extensión EXE o DLL.

    El ensamblado, es el resultado de la compilación de las clases que conforman una aplicación, recuerde que la unidad mínima de cualquier tipo de aplicación en .NET es una clase. (es importante recordar que Visual Basic aún mantiene el uso de módulos, sólo para fines de compatibilidad).

    Al crear una aplicación haciendo uso de una plantilla de Visual Studio .NET, el resultado final será un ensamblado, el que será desplegado al cliente, donde el prerrequisito principal, es que el .NET Framework se encuentre instalando (a excepción de las aplicaciones Web, donde el despliegue se hace sólo en el Servidor Web).

    Importante: puede existir la posibilidad que la aplicación Web, requiera que el cliente instale el .NET Framework, esto se da cuando intentamos ejecutar un ensamblado a través de la página Web, la cual se descarga al cliente para su ejecución, por ello la necesidad del .NET Framework. (Se recomienda implementar esto sólo en escenarios de aplicaciones Web para Intranets).

    CREANDO NUESTRA PRIMERA APLICACIÓN CON VISUAL STUDIO .NET 2008.

    En este ejemplo, vamos a implementar un ensamblado de tipo EXE, empleando el entorno de desarrollo de Visual Studio .NET 2008.

    Paso 1: Inicie el entorno de Visual Studio .NET 2008, ingresando a: Inicio - Programas - Microsoft Visual Studio 2008 – Microsoft Visual Studio 2008.

    Paso 2: Desde el menú principal de Visual Studio, seleccione el File - New - Project, esto activará la ventana de plantillas de Visual Studio.


    Paso 3: En la sección Project Types, seleccione el lenguaje de preferencia, y en la sección Templates, el tipo de proyecto Console Application, configure el nombre del proyecto y la carpeta de trabajo, luego haga clic en OK.


    Paso 4: El nuevo proyecto se crea, y puede visualizar su contenido desde el Explorador de Soluciones, (para activar el explorador de soluciones, haga clic en el menú View - Solution Explorer).


    Importante: Una solución puede contener más de un proyecto, y cada uno puede ser configurado con un lenguaje de programación diferente. Se recomienda emplear un nombre diferente para la Solución.

    Paso 5: En la aplicación de consola, podrá encontrar un archivo principal, para C# es el archivo Program.cs, y para Visual Basic, Module1.vb, en el cual se encuentra definido un método de nombre Main, que será el primer procedimiento en ejecutar al inciar el programa. Implementar Las siguientes líneas de código según el lenguaje de preferencia:

    C#

    VB

    Importante: para hacer uso de un Namespace, en C# hace uso de la palabra reservada using, y para VB, Imports, en algunas plantillas, estas líneas de código ya se incluyen, para este ejemplo, en VB tendrá que agregar la línea de código: Imports System.Text.

    Paso 6: El ejemplo pretende comparar los métodos de concatenación tradicionales con la clase StringBuilder, para proceder a ejecutar la aplicación, pulse la tecla F5, y observe los resultados.


    Podrá notar que la diferencia es muy representativa, y que incluso el primer bucle se ejecutó 10,000 itearciones, y el segundo, 100,000 iteraciones, a pesar de ello, el uso de StringBuilder es más óptimo (recuerde que esta clase se encuentra en el Namespace System.Text).

    Paso 8: Desde el explorador de soluciones, haga clic sobre el botón Show All Files, esto mostrará las carpetas donde se generan los resultados del ensamblado.



    Observe que aparecen las siguientes carpetas:

    • OBJ. es donde el ensamblado se graba durante el momento de compilación de la solución, esta ruta se emplea para leer las rutas relativas que puede estar empleando el ensamblado, recuerde que sólo es en el momento de compilación.
    • BIN. es donde se almacena el ensamblado compilado, a partir de esta carpeta se realizará la ejecución. Puede apreciar que aparece una sub carpeta DEBUG, esto se debe a que estamos trabajando en modo Depuración, lo cual significa que podemos hacer seguimiento al código, y que el ensamblado puede generar información de depuración (esto siempre que se usen los métodos de la clase Debug que se localiza en el Namespace System.Diagnostics).

    Importante: una vez que el ensamblado se encuentre listo para ser desplegado, se recomienda compilar la aplicación en modo RELEASE, lo cual optimizará el tamaño del archivo compilado, es importante recalcar que no se trata de optimización de la ejecución del código, ya que esto dependerá de las buenas o malas prácticas que haya aplicado en su codificación, ejemplo: concatenar con un operador tradicional y no con la clase StringBuilder.

    Cambie el modo de compilación de Debug a Release, desde la barra de herramientas de Visual Studio.


    Si procede a compilar la solución (Ctrl + Shift + B / combinación de teclas para compilar la solución), observer la carpeta que será añadida al explorador de soluciones (Nota: el archivo de extensión .pdb no requiere ser desplegado).


    Grabe los cambios y finalice el Visual Studio.

    Con este ejemplo, he querido dar a conocer la forma de construir un ensamblado, además del uso de un Namespace del .NET Framework desde C# y VB. Espero haya sido de gran utilidad para aquellas personas que están iniciándose en el desarrollo con .NET, hasta la próxima...

    8 comentarios:

    1. Que bueno que por fin te animaras a escribir.

      Te felicito por tu nueva faceta y te estaré siguiendo...

      Abracitos.

      ResponderEliminar
    2. Hola Cristiam saludos desde Peru, me alegra mucho que te hayas animando ha escribir el blog ya era hora tambien, bueno Cristiam me gustaria que postees acerca de WCF y ASP.NET MVC.Gracias

      ResponderEliminar
    3. Me olvide disculpa Por favor la emocion ps tu sabes

      ResponderEliminar
    4. Compartir los conocimuentos de este modo no tiene valor monetario, pero estoy seguro que te sientes muy bien contigo mismo. Disfrutalo y muchos exitos.

      ResponderEliminar
    5. Es bueno compartir tus conocimientos, no dejes de hacerlo, además, motivas a otros a seguir el mismo camino...

      ResponderEliminar
    6. Estoy de acuerdo, con uds. mas motivas a los q recien estan empesando, como yo...sus tu hincha Cristhian...

      ResponderEliminar
    7. Cristiam:

      Podrías crear en tu blog una sección de preguntas y respuestas relacionadas a lo que publicas?

      Saludos

      ResponderEliminar