martes, 2 de diciembre de 2008

Tecnologia .NET

Tecnología .NET

1. Introducción:

¿A quién va dirigido este curso? Con este curso pretendemos llegar a dos grupos de usuarios. Por una parte los que nunca han programado y quieren aprender este mundillo, y por otro los que ya conocen Visual Basic en sus anteriores versiones y quieren "saltar" al nuevo sistema .NET.

Hay ventajas y desventajas para estos dos grupos. Para los que se quieren iniciar van a aprender una filosofía y técnicas de programación muy ambiciosas y robustas que componen el mejor entorno de desarrollo que existe actualmente. Por contra necesitarán un "duro" aprendizaje para entender todas las técnicas en las que se basa .NET para desarrollar aplicaciones, ahí es donde este curso entra en acción: proporcionar un buen nivel a los nuevos programadores para que comiencen a desarrollar en esta plataforma. Para el segundo grupo, como ventaja obvia está el conocimiento de un lenguaje de programación tan extendido como Visual Basic. La desventaja es que hay que borrar los conocimientos anteriores y partir de cero, es decir, hay que conocer esta nueva tecnología profundamente para entenderla y trabajar con la nueva filosofía de .NET. (Yo acabo de terminar esta fase)

Es muy habitual ver programadores que enseguida obtenían unos modestos resultados poniendo cuatro controles de Visual Basic y unas líneas de código. Con este nuevo entorno nos tenemos que olvidar de esta técnica y madurar técnicamente hablando al conocer un entorno tan ambicioso como .NET. Empecemos por saber que esto del .NET...

La evolución

Hace varios años (como diez mas o menos) las aplicaciones las aplicaciones se creaban utilizando un mismo lenguaje para todas las tareas y para un sistema operativo concreto. Inicialmente la aplicaciones para Windows se realizaban en C y con llamadas directas a las "tripas" del Windows con la API (que tiempos más duros!!) El trabajo era enorme por dos cosas: la complejidad del lenguaje y la necesidad de conocer todos los detalles del sistema operativo para poder programar sobre él.

Ahí nació Visual Basic, como una herramienta que permitía el desarrollo de las interfaces de una forma tremendamente sencilla para lo conocido hasta entonces y con un lenguaje conocido por entonces como el Basic. Se utilizaban los controles en formato VBX para diseñar las ventanas y luego un mecanismo de métodos y eventos para controlar el código.

La parte profesional se "pasó" al C+, un lenguaje orientado a objetos muy complejo y difícil de mantener. Por otro lado Visual Basic seguía avanzando con los COM (Component Objetc Model): un modelo de objetos que permitía la reutilización de componentes independiente del lenguaje con el que estuviesen escritos, así transcurrieron las versiones 5 y 6 de Visual Basic que se convirtieron en los entornos mas importantes del panorama Windows.

La solución

Con el tiempo además de los COM aparecieron otras técnicas complementarias para ampliar los lenguajes existentes. Pero esto heterogeneidad de tecnologías, muchas veces dictadas por las necesidades tecnológicas del momento, como Internet, hicieron que se produjeran multitud de servicios duplicados, creación de servicios exclusivamente para algunos lenguajes, poca reutilización de código, mas complejidad, ...

La solución definitiva se ha planteado con .NET que consta de una serie de servicios iguales en todos los lenguajes que mantienen la integridad con los desarrollos existentes y hace posible una interoperatividad entre los lenguajes desconocida hasta el momento. Esto es podemos utilizar varios lenguajes diferentes (los permitidos .NET) y todos tendrán disponibles desde el mismo entorno de desarrollo hasta los controles y componentes de programación. Se acabó que Visual C tenga estos componente o Visual Fox Pro otros o Visual Basic otros... todos parten de la tecnología .NET y comparten por lo tanto los mismos componentes y objetos. Podemos incluso escribir partes distintas de un mismo programa con varios lenguajes .NET.

Visual Basic .NET y el entorno .NET Framework

Visual Basic .NET usa una jerarquía de clases que están incluidas en el .NET Framework, por tanto conocer el .NET Framework nos ayudará a conocer al propio Visual Basic .NET, aunque también necesitarás conocer la forma de usar y de hacer del VB.NET ya que, aunque en el fondo sea lo mismo, el aspecto sintáctico es diferente para cada uno de los lenguajes basados en .NET Framework.

Importante Luego el verdadero núcleo de todo es .NET Framework un entorno con multitud de clases y objetos disponibles para trabajar con ellos. Sobre este núcleo tendremos los lenguajes de programación y uno de ellos es Visual Basic .NET. Por eso es muy importante conocer que es el .NET Framework

Así que tranquilo primero veamos que eso del .Net Framework que básicamente se puede decir que es el hermano mayor de .NET

1.1 ¿Qué es el .NET Framework?

Literalmente .Net Framework es:

".NET Framework es un entorno para construir, instalar y ejecutar servicios Web y otras aplicaciones.
Se compone de tres partes principales: el Common Language Runtime, las clases Framework y ASP.NET"

"El .NET Framework es un entorno multi-lenguaje para la construcción, distribución y ejecución de Servicios Webs y aplicaciones."
"El .NET Framework es una nueva plataforma diseñada para simplificar el desarrollo de aplicaciones en el entorno distribuido de Internet."

Luego .NET es una nueva filosofía en cuanto a entornos de desarrollo. Este entorno puede utilizar varios lenguajes diferentes para escribir programas, todos se apoyarán en las herramientas que ofrece para conseguir aplicaciones .NET y el alma de este entorno es el .NET Framework

.Net Framework permite el desarrollo de aplicaciones a través del uso de un conjunto de herramientas y servicios que proporciona y que se agrupan en tres bloques:

  • El entorno de ejecución común ó Common Languaje Runtime (CLR)
  • Jerarquía de clases de .NET
  • Motor de generación de formularios, para crear nuestras aplicaciones

El Common Lenguage Runtime (CLR) es una serie de librerías dinámicas (DLLs), también llamadas assemblies (o ensamblados), que hacen las veces de las DLLs del API de Windows así como las librerías runtime de Visual Basic o C++.

Como sabrás, cualquier ejecutable depende de una forma u otra de una serie de librerías, ya sea en tiempo de ejecución como a la hora de la compilación. Pues el CLR es eso, una serie de librerías usadas en tiempo de ejecución para que nuestros ejecutables o cualquiera basado en .NET puedan funcionar. Se acabó eso de que existan dos tipos de ejecutables: los que son autosuficientes y no dependen de librerías externas o los que necesitan de librerías en tiempo de ejecución para poder funcionar, tal es el caso de las versiones anteriores de Visual Basic. (Esto lo entenderán mejor los antiguos programadores de VB)

Es decir podíamos tener un fichero ejecutable único que no dependiese de ninguna librería, bastaba por lo tanto copiarlo a otro equipo y podía funcionar sin problemas. Por otro lado están los que necesitan librerías externas o ficheros DLL que se instalan en nuestro equipo ayudándose de programas de instalación. Estas librerías se copian normalmente en nuestra carpeta \Windows\System32.

Si decimos que ahora que con este CLR ya no necesitamos esas librerías, perfecto, sólo tendremos que instalar este componente y nuestros programas .NET funcionarán en cualquier equipo.

Por otro lado, la biblioteca de clases de .NET Framework proporciona una jerarquía de clases orientadas a objeto disponibles para cualquiera de los lenguajes basados en .NET, incluido el Visual Basic. Esto quiere decir que a partir de ahora Visual Basic ya no será la "oveja negra" de los lenguajes de programación, sino que tendrá a su disposición todas las clases disponibles para el resto de los lenguajes basados en .NET, (o casi), con lo cual sólo nos diferenciará del resto de programadores en la forma de hacer las cosas: ¡más fáciles!

Los poco flexibles modelos de programación actuales impiden al programador contemplar la idea de un proyecto para Internet que le permita crear aplicaciones distribuidas más potentes. Estos sistemas utilizaban las tecnologías COM, ASP, ADO, ... que individualmente son buenas pero que no están pensadas para ser ejecutadas en la red. Estos elementos definían la arquitectura Windows DNA (Distributed Internet Architecture) que hasta ahora era el modelo de programación para Internet. Esta tecnología queda ahora desplazada completamente por la arquitectura .NET

Microsoft .NET ofrece una visión orientada a objeto del sistema operativo Windows e incluye cientos de clases que encapsulan los objetos mas importantes del núcleo de Windows. Mas adelante veremos y definiremos las clases pero de una forma resumida digamos que son plantillas para crear objetos, por ejemplo: la clase "botón" me permite crear botones de comando y trabajar con ellos.

En este curso nos centraremos en la parte de Visual Basic.NET pero no debemos olvidad que .NET es mas que este lenguaje, por ejemplo ASP.NET es una potente plataforma de desarrollo para Internet, permite crear complejas aplicaciones basadas en web. Lo bueno es que al terminar este curso tendremos un gran punto de partida para seguir con esta tecnología de .NET.

Espero no haberte liado mucho, mas que nada que esto no es la presentación de un simple lenguaje de programación, es la presentación de cómo funciona nuestro Windows y como lo hará en el futuro apoyado en esta tecnología.

1.2 Comenzar con .NET

Por ahora estamos convencidos de que .NET es la mejor plataforma de desarrollo y el que no la domine quedará apartado del mundo Windows en poco tiempo. Del mundo Windows me refiero al conocimiento de su tecnología y desarrollo de nuevas aplicaciones con los nuevos sistemas operativos: Windows 2003 Server y Windows XP. Vamos ahora con lo que necesitamos para instalarlo y los pasos necesarios

Al igual que las anteriores versiones anteriores de Visual Basic, éste se encuentra dentro del paquete Visual Studio .NET, que incorpora varios lenguajes, herramientas y tecnologías. En nuestro caso nos centraremos en Visual Basic .NET del que realizaremos ahora su instalación.

Los requisitos son los siguientes:

Mínimo Recomendado
Procesador Pentium II - 500 Mhz Pentium III- 800 Mhz
Memoria 128 Mb 256 Mb
Espacio en disco 3 Gb 10 Gb
Sistema operativo Windows 2000/XP Windows 2000/XP

En Visual Studio .NET y como ya es habitual en el resto de las aplicaciones de Microsoft, debemos ser generosos con el equipo para desarrollar en .NET. Por ejemplo, como veremos mas adelante, el entorno de desarrollo tiene tanta información que trabajar con una resolución menor que 1027x768 es imposible, y ésta se queda incluso limitada y no podremos desplegar todas las pantallas. La ayuda ocupa bastante espacio en disco así como el programa en memoria cuando está en ejecución. En definitiva, debemos tener como mínimo la configuración recomendada por Microsoft para trabajar de una forma cómoda...

En cuanto al sistema operativo si que es obligatorio utilizar las versiones 2000 o XP por razones de aprovechamiento de recursos y sobre todo, de estabilidad.

2. Una definición más profunda de .NET

La mejor forma de comprender cómo funciona .NET es analizar las numerosas capas en las que se divide .NET Framework. Veamos la siguiente figura:

(No te asustes con lo que vas a leer aquí, es obligatorio que lo veamos por encima, al terminar el curso vuelve a leer esto y veras que sencillo era.)

Como hemos comentado antes .NET Framework constituye la base sobre la que se asienta .NET. Para nosotros es la pieza fundamental de esta nueva tecnología y es la que nos va a proporcionar las herramientas y servicios que necesitaremos en nuestros desarrollos. Podemos agrupar en tres bloques el conjunto de herramientas y servicios:

  • El runtime de lenguaje común o entorno de ejecución común (CLR)

  • Biblioteca de clases base de la plataforma .NET (.NET Framework Base Classes)

  • Motor de generación de la interfaz para crear formularios e interfaces de usuario.

Estas son tres de las capas del esquema anterior. Simplemente esa jerarquía me dice que en el nivel mas alto están los lenguajes que vamos a utilizar en nuestro desarrollo con .NET que pueden ser varios (en nuestro caso Visual Basic). Luego traduce esas instrucciones al estándar .NET para poder trabajar con esas instrucciones de una forma independiente al lenguaje con que se escribieron. El siguiente paso es la generación de formularios para Windows o web (ASP). Luego el enlace con bases de datos si las hay. Por fin llegamos a todos los objetos disponibles y por último el runtime de lenguaje común (CLR) que es el que va a ejecutar la aplicación. Veamos ahora más técnicamente de abajo hacia arriba:

1. Runtime del lenguaje común

El runtime del lenguaje común es la primera capa que pertenece a .NET Framework. Esta capa es la responsable de los servicios básicos de .NET, tales como la administración de memoria, la recolección de los elementos no utilizados, el control estructurado de excepciones y del subprocesamiento múltiple. Si .NET se transporta a otras arquitecturas que no estén basadas en Windows el primer paso sería escribir un runtime del lenguaje para el nuevo equipo. El CLR tiene estas características:

  • Proporciona mejoras para el programador que antes tenía que elaborar

  • Administra el código en tiempo de ejecución: carga en memoria, liberación de memoria, ...

  • Gestiona la seguridad del código ejecutado

  • Abre posibilidades a otros fabricantes para incorporar sus lenguajes

  • Facilita la distribución e instalación de aplicaciones. Elimina los temibles conflictos de DLL's y versiones de ellas

Es la interfaz entre nuestro código y el sistema operativo, de ahí que si mañana Microsoft hace un CLR en lugar de para Windows, para Macintosh se puedan ejecutar nuestras aplicaciones .NET en este sistema.

2. Biblioteca de clases

La biblioteca de clases base (BCL) es la parte de .NET Framework que define todos los tipos de datos básicos, tales como System.Object (raíz de la jerarquía de objetos .NET), tipos numéricos y de fechas, tipo string, matrices y colecciones. La BCL contiene también clases que administrarán las características centrales de .NET: entrada/salida de archivos , subprocesamiento, serialización y seguridad. La forma en la que los tipos se implementan en la BCL siguen las especificaciones llamadas Common Type System (CTS). Por ejemplo, estas especificaciones dicta la forma en la que un tipo .NET expone campos, propiedades, métodos y sucesos, también cómo un tipo puede heredar otro tipo...

Tranquilo... a lo largo del curso veremos estas clases y por fuerza trabajaremos con ellas porque todo en .NET son clases: desde un gráfico, un botón o nuestro programa.

3. Capa de datos

La capa de datos y XML contienen las clases .NET que trabajan con bases de datos y con XML. Anteriormente el soporte XML era una compatibilidad proporcionada por un componente externo. En .NET vemos cómo está integrado en su mismo núcleo. Podemos decir que XML es el formato que utiliza .NET para almacenar cualquier tipo de información. La parte de datos es la que se conoce como ADO.NET y es el equivalente en .NET a la tecnología ActiveX Data Object (ADO), ampliamente conocida por los programadores de Visual Basic, Intranets, ...

Nota para los conocedores de ADO: Aunque su nombre es muy parecido a ADO.NET son muy diferentes. ADO cubre prácticamente todas las técnicas de bases de datos disponibles (incluyendo cursores del lado del cliente y del servidor, conjuntos de datos desconectados y actualizaciones en diferido). ADO.NET está centrado principalmente en los conjuntos de resultados desconectados (llamados DataSets) Este objeto es mucho mas potente que el objeto ADO Recordset y puede almacenar datos provenientes de varias tablas, relaciones entre diferentes tablas de datos y puede importar y exportar datos en XML.
4. Capa de formularios y ASP

Las dos capas siguientes son ASP.NET y Windows Forms. Aquí se sitúan todas las clases que podremos utilizar para generar las páginas web en el primer caso y las ventanas estándares o formularios en las aplicaciones de Windows en el segundo caso.

Nota ASP.NET es la parte de .NET encargada del desarrollo en web. Una evolución muy ampliada de las páginas ASP y comprende los web forms y los servicios web XML. No lo veremos en este curso pero el salto a desarrollar en Web es muy sencillo...

Aunque estén en el mismo nivel las tecnologías son muy distintas. Web Forms se ejecuta en el servidor y produce HTML y es la base de las conocidas Intranets donde estas páginas devuelven otras páginas web con conjuntos de resultados u otros datos. Windows Forms se ejecuta en el cliente, un equipo Windows.

La biblioteca de clases de .NET Framework está formada por una colección de ensamblados (o Assembly), cada uno de los cuales comprende una o más DLL. Veamos que esto de un "ensamblado"...

Un ensamblado consiste en un conjunto de tipos y recursos reunidos para formar la unidad mas elemental de código que puede ejecutar el entorno .NET Framework. Estos ensamblados son los elementos con los que construiremos una aplicación: una aplicación .NET se compone de varios ensamblados. Podemos llamar también a un ensamblado como una DLL lógica (recordamos que una DLL es una biblioteca de enlaces dinámicos). Decimos lógica porque se trata de una lista de ficheros que se referencian en tiempo de ejecución pero que no se compilan para producir un fichero físico, a diferencia de las DLL's tradicionales. Un ensamblado va mucho más allá ya que puede contener otros recursos además de clases como imágenes, ...

5. Capas de CLS y lenguajes

Donde están las especificaciones de los lenguajes y su sincronización con el entorno .NET

Después de esta locura de siglas y tecnologías vamos al grano con la instalación y la realización de algún ejemplo sencillo...

3. Instalación

Lejos quedan las sencillas instalaciones de las versiones anteriores de Visual Basic, en las que prácticamente en un sólo CD disponíamos de todas las herramientas y componentes necesarios... Esta versión es un poco mas compleja de instalar (sólo un poco mas) sobre todo porque Microsoft ha cumplido con algo largamente esperado que era un entorno único de desarrollo. Ahora todos los lenguajes de desarrollo de Microsoft estarán incluidos en Visual Studio .NET con un único interfaz, con todas la ventajas que conlleva en cuanto a simplicidad y sobre todo coherencia entre entornos. Vamos con la instalación...

En nuestro curso vamos a utilizar la versión "Enterprise Developper" de Microsoft Visual Studio .NET 2003. La diferencia con otras versiones es la cantidad de componentes que tenemos para instalar, pero como en nuestro caso nos centraremos únicamente en Visual Basic .NET sólo instalaremos estos componentes.

Introducimos el Cd número 1 y se presentará una pantalla como esta:

Aquí empiezan las diferencias con otras versiones. Para empezar debemos instalar los prerrequisitos, es decir, elementos que necesita tener instalado nuestro sistema operativo antes de instalar Visual Studio. Si tenemos activada esta primera opción debemos hacer clic en ella para instalarlos...

Estos prerrequisitos pueden variar de una versión de sistema operativo a otro y según el equipo. Por ejemplo algunos de los componentes que va a instalar son:

  • Microsoft Windows Installer 2.0 (para realizar las instalaciones de este entorno)
  • Cliente de extensiones web de Microsoft FrontPage. Para conectar Internet Information Server con Front Page. Esto se utilizará mas con ASP.NET
  • Archivos de tiempo de ejecución para instalación
  • Microsoft Data Access Components. Todos las bibliotecas y controles para acceso a datos
  • Microsoft .NET Framework. (El alma de nuestro entorno)

Introducimos entonces el CD marcado como "Prerrequisitos", pulsaremos en instalarlos y tras algún anuncio de que va a comenzar esta instalación veremos la pantalla con la lista de componentes que va a instalar:

Dependiendo de los elementos a instalar es posible que nos pida reinicio del sistema para continuar con la instalación, incluso una pantalla nos pedirá si queremos un inicio de sesión proporcionando los credenciales en la pantalla.

Nota Debido a la cantidad de elementos que instala y sobre todo, a su importancia, ya que algunos son de sistema, se recomienda encarecidamente que esta instalación se realice en un equipo lo más limpio posible. Lo mejor es que no hayas tenido versiones anteriores de otros lenguajes y sobre todo un equipo un poco con buenas prestaciones.

Una vez instalada esta parte veremos que la parte de prerrequisitos queda deshabilitada y ya podemos acceder a la de la instalación. Vamos por fin a la instalación de VB.NET. Pulsamos en el enlace de la instalación y tras unos segundos se nos presentará la pantalla de instalación de .NET en la que debemos aceptar el contrato de licencia para usuario final. Finalmente obtendremos:

Ahora debemos seleccionar sólo los componentes que nos interesen... Para empezar en las herramientas del lenguaje sólo dejaremos marcado Vb.NET:

Los demás componentes podríamos deshabilitarlos porque no los vamos a necesitar en nuestro curso. Son elementos mucho más ambiciosos para el desarrollo empresarial que son más complejos. De momento bastante con comprender bien esta arquitectura y comenzar a programar con Vb.NET. Para los programadores de ASP: la opción ASP.NET se encuentra dentro de la opción "Componentes de servidor" y luego en "Desarrollo Web". En mi instalación voy a desactivar todas las opciones porque no las voy a utilizar ahora, siempre podremos acudir al este Cd de instalación para añadir componentes. Nos quedamos pues, sólo con Visual Basic .NET, si vemos la ocupación veremos que "sólo" se queda en unos 750 Mb de espacio. (Eso si, sin la ayuda todavía). Pulsamos en instalar y comenzará...

Al cabo de unos minutos nos pedirá el siguiente CD:

Hasta que por fin un mensaje nos avisará de que la instalación ha terminado (podemos ir tranquilamente a tomar un café mientras tanto...). Ahora nos queda la segunda parte que es la extensa documentación que como siempre es muy precisa y bien traducida. Para esto utilizaremos los dos cd marcados como "MSDN Library". Cuando nos parezca la pantalla inicial de instalación pulsaremos en la opción "Documentación del producto" que nos pedirá el Cd1 de MSDN:

Una vez en marcha dispondremos de opciones para instalar la ayuda de todos los elementos de .NET:

Pulsaremos en siguiente, aceptaremos el contrato de licencia y escribiremos si queremos un nombre de registro de instalación. Luego seleccionaremos la opción Personalizada para poder elegir los componentes que queremos instalar. Seleccionaremos "Documentación de VB.NET", lo demás son opciones del entorno que no utilizaremos en este curso pero que podríamos instalar mas adelante...

Pulsamos continuar y ya tenemos lista la instalación... Aceptamos para que inicie y el programa instalará la ayuda indicada... si es necesario pedirá los otros dos cd con el resto de la información hasta que finalmente termine.

Si todo es correcto por fin tenemos nuestro Visual Basic .NET instalado. Vamos a pasar ahora a realizar una rápida aplicación para ver que todo funciona e ir conociendo el entorno de desarrollo... No te preocupes si no entiendes alguna cosa, es más que nada para conocer de que partes se compone un programa, cómo escribir y por fin ejecutarlo...

4. La primera aplicación con Vb.NET

Extensión de los ficheros de código.

En Visual Basic .NET a diferencia de lo que ocurría en las versiones anteriores de Visual Basic, sólo existe un tipo de fichero de código, el cual tiene la extensión .vb, en este tipo de fichero pueden coexistir distintos tipos de elementos, por ejemplo: un módulo de clase, un formulario, un módulo de código, un control, etc.; mientras que en las versiones anteriores de Visual Basic, cada uno de estos elementos tenían su propio tipo de fichero con su respectiva extensión. Como cometamos al principio no es necesario ningún conocimiento de anteriores versiones de Visual Basic pero iré comentando los cambios importantes para aquellos que ya conocían versiones anteriores y puedan ir viendo los cambios de esta nueva versión.

Ejemplo de los ficheros de un proyecto:

Para los antiguos programadores, esta tabla muestra la extensión que tienen los diferentes tipos de ficheros de VB.NET y su comparación con los de VB.NET:

Recurso Visual Basic 6.0 Visual Basic .NET
Formulario (Form) .frm .vb
Módulo (Module) .bas .vb
Módulo de clase (Class Module) .cls .vb

Obviamente si hemos dicho que en Vb.NET todos los ficheros tienen la extensión .vb, los equivalentes de anteriores versiones cambiarán a esta extensión.

Tipos de ejecutables.

Con Visual Basic .NET podemos crear muchos tipos de proyectos pero los más importantes son los destinados a crear aplicaciones ejecutables, éstas pueden ser de dos tipos:

  • De consola, no gráfico, al estilo del viejo MS-DOS. Es decir se abrirá una ventana tipo MS-DOS donde se ejecuta un programa en modo texto.
  • Gráficos, como los que normalmente estamos acostumbrados a ver en Windows. Es decir, compuesta de formularios donde podremos interactuar con el programa.

Existen otros tipos de aplicaciones que se pueden crear con Visual Basic .NET: aplicaciones ASP.NET, (realmente no es una aplicación o ejecutable, sino un compendio de distintos tipos de elementos...), servicios Web, servicios Windows, etc.

4.1 La primera aplicación con Visual Basic .NET.

Vamos cuanto antes a crear nuestra primera aplicación para conocer por fin el funcionamiento de .NET.

El primer paso es iniciar el entorno de Visual Studio .NET, vamos al menú Inicio y seleccionamos Visual Studio .NET 2003 (en mi caso por la versión que he instalado). La primera pantalla que aparece por defecto nos muestra la "página de inicio" desde la cual pueden crearse nuevos proyectos o bien abrir alguno de los más recientemente abiertos:

Para los conocedores de otros entornos podemos ver en la pantalla la disposición de los elementos que recuerda más al Visual C que la de Visual Basic. De hecho este es el primer obstáculo para los programadores de Visual Basic: el nuevo IDE o Entorno de desarrollo integrado, auque en cuanto lo conozcamos no será un obstáculo sino una imprescindible ayuda para desarrollar y depurar programas. Sigamos con nuestro primer programa... para esto pulsamos en la opción de "Nuevo Proyecto"

Nos mostrará los diferentes tipos de proyectos que se pueden crear:

Para empezar tampoco esta nada mal ¿no?. Vemos una buena cantidad de nuevos proyecto para crear... y eso que sólo hemos instalado el Visual Basic .NET. Si hubiésemos instalado los otros lenguajes tendríamos un buen número adicional de proyectos para crear. Bien, seleccionamos Visual Basic a la izquierda y a la derecha seleccionamos "Aplicación de consola"

El objetivo de este ejemplo es crear una básica aplicación de consola que se ejecutará en una ventana MS-DOS en lugar del habitual Windows. De momento es mas sencillo para que creemos nuestro primer ejemplo...

Especificaremos el directorio en el que se guardará el proyecto, así como el nombre del mismo, (creando un directorio con el nombre del proyecto indicado), dejamos el nombre que muestra por defecto : "ConsoleApplication1", pulsamos Aceptar y finalmente se creará el proyecto.

Si nos fijamos en la pantalla central y en la derecha podemos ver varias cosas:

Por una parte a la derecha vemos en el explorador de soluciones que ha creado un fichero llamado Module1.vb, con el código necesario para empezar a escribir. Vemos también que ha creado un "procedimiento" Sub Main, que se utilizará como punto de entrada de nuestro ejecutable, también ha creado una "definición" llamada Module Module1 con su respectivo End Module, que indica dónde termina la definición del módulo.

Es decir parece que un proyecto de consola se compone de un fichero "module1.vb" en dentro de él las instrucciones de colocarán dentro de las etiquetas "Module Module1" y "End Module". Y dentro de estas etiquetas el programa principal se colocará dentro de las instrucciones "Sub Main" Mas adelante conoceremos el porqué de estos módulos y nombres...

Nota : lo que estamos creando es una aplicación tipo consola, es decir, no se creará ninguna ventana gráfica, sino que el ejecutable que vamos a crear funciona desde una ventana de MS-DOS (o consola). Esto lo comprobaremos cuando ejecutemos el proyecto..

Lo que queremos hacer en este ejemplo es un muy sencillo programa que diga "Hola mundo .NET", por tanto para mostrar un texto en la "consola" usaremos una función, método o instrucción, ... como veremos más tarde, todo esto es posible gracias a los assemblies o a las clases incluidas en el .NET Framework. De momento sigamos este ejemplo ...

La función en cuestión es Console.Write y se usa de la siguiente forma:

Console.Write("Hola mundo .NET"), es decir incluiremos dentro de paréntesis lo que queremos que se muestre en la consola, en este caso queremos mostrar un texto, el cual hay que incluirlo dentro de comillas dobles.

Lo escribimos entre el Sub Main() y el End Sub. Comprobaremos que cuando escribimos Console y el punto, se mostrarán las funciones que Console pone a nuestra disposición, así como una pequeña ayuda, en modo de ToolTip, (ya conocido en otras versiones de Visual Basic).

Bien, ya tenemos todo lo que necesitamos. Ahora tendremos que indicarle al "Entorno Integrado" (IDE) que compile el proyecto y lo ejecute, y después de compilarse el proyecto, se deberá mostrar el texto en una ventana de DOS (o consola). Una vez escrito pulsamos en el botón que se muestra en esta pantalla:

Para verla correctamente añadiremos debajo una instrucción para que haga una pausa y podamos comprobar que el programa funciona:

Que al ejecutarlo da como resultado:

Al ejecutarse hemos visto una pantalla en modo texto con el mensaje que hemos escrito de "Hola Mundo .NET". Lo que hemos hecho ha sido ejecutar el programa desde nuestro entorno de desarrollo, para hacer el programa final tendríamos que compilarlo para generar el programa ejecutable, lógicamente con extensión .exe.

Cómo escribir este programa

Con lo que tenemos terminada nuestra primera y "útil" aplicación en MS-DOS realizada en .NET, (ya puedes presumir :-).

5. Mas conceptos de Visual Basic .NET.

Sigamos con mas conceptos básicos sobre .NET. Una aplicación .NET se compone como hemos dicho antes de uno o mas ensamblados, cada uno de los cuales estará formado por uno o mas archivos. La aplicación por tanto puede ser tan simple como un sólo archivo .EXE o un conjuntos de varios archivos de código y elementos externos.

Las aplicaciones .NET se ejecutan en lo que se llama "dominio de la aplicación" que es como un espacio donde se ejecuta nuestra aplicación y está aislada del resto de las aplicaciones que se están ejecutando en Windows. Perfecto para la seguridad y para que un fallo de aplicación no afecte a los demás...

Antes de continuar con otro sencillo ejemplo vamos a conocer un poco sobre el entorno de desarrollo de Visual Studio .NET, (que es obviamente el que utilizamos con Visual Basic .NET), para que podamos configurar algunos aspectos, por ejemplo para indicar cómo se comportará el compilador e intérprete sobre el código que escribamos o para configurar los ensamblados (assemblies) que se usarán en nuestras aplicaciones. (Recuerda que Visual Basic .NET usa una serie de librerías (de clases) con las funciones que necesitemos en cada momento...)

Nota: Es muy importante seguir estos ejemplos para conocer un poco las tripas y nomenclatura de VB.NET, así que es obligatorio realizar una pausada lectura de esta parte del capítulo... luego me lo agradeceréis

Sigamos, para poder mostrar un texto en la consola, necesitamos tener disponible la librería en la cual está declarada la clase Console, para que podamos acceder a las funciones que dicha clase pone a nuestra disposición, (por ejemplo Write o Read); en este caso la librería en la que está la clase Console es: System. System realmente es un Namespace o espacio de nombres, no es una librería o assembly. (Tranquilo, sigue leyendo)

Luego añadiremos otras librerías para trabajar con bases de datos, gráficos, ... así cada una de ellas agrupa un tipo de funciones.

¿Que es un Namespace (o espacio de nombres)?

"Un espacio de nombres es un esquema lógico de nombres para tipos en el que un nombre de tipo simple, como MiTipo, aparece precedido por un nombre jerárquico separado por puntos. [...]"

Así es como lo definen en el eBook de .NET Framework de Microsoft. Pero mas claro... un Namespace es una forma de agrupar clases, funciones, tipos de datos, etc. que están relacionadas entre sí. Por ejemplo, entre los Namespaces que podemos encontrar en el .NET Framework encontramos uno con funciones relacionadas con Visual Basic: Microsoft.VisualBasic. Si te fijas, Microsoft y VisualBasic están separados por un punto, esto significa que Microsoft a su vez es un Namespace que contiene otros "espacios de nombres", tales como el mencionado VisualBasic, CSharp y Win32 con el cual podemos acceder a eventos o manipular el registro del sistema...

Para saber que es lo que contiene un Namespace, simplemente escribe el nombre con un punto y te mostrará una lista desplegable con los miembros que pertenecen a dicho espacio de nombres. Haz la prueba y en el código escribe la palabra "Microsoft." (Con el punto al final), verás que se despliega los posibles Namespaces disponibles y si seguimos y escribimos, o seleccionamos VisualBasic con un punto al final, veremos otra vez los Namespaces de esta otra clase llamada VisualBasic.

Pero de momento no te líes, simplemente que podemos utilizar como una especie de grupos de instrucciones y otros componentes añadiendo o utilizando "namespaces" a nuestros programas. De esta forma mantenemos los recursos de las aplicaciones en diferentes sitios reduciendo los conflictos.

Por regla general se deberían agrupar en un Namespace funciones o clases que estén relacionadas entre sí. De esta forma, será más fácil saber que estamos trabajando con funciones relacionadas entre sí. Pero el que distintos espacios de nombres pertenezcan a un mismo Namespace no significa que todos estén dentro de la misma librería o assembly. Un Namespace puede estar repartido en varios assemblies o librerías. Por otro lado, un assembly, (o ensamblado), puede contener varios Namespaces.

Hay espacios de nombres específicos por ejemplo para los gráficos y otros para trabajar con bases de datos, así los tenemos organizados de una forma mas cómoda para localizarlo y referirnos a ellos en el código.

Pero de esto no debemos preocuparnos, ya que el IDE de Visual Studio .NET se encarga de "saber" en que assembly está el Namespace que necesitamos.

Los Spacenames mas importantes, los de primer nivel y de los que luego "cuelgan" o pertenecen los demás son:

  • System. Contiene clases fundamentales y clases base que definen los valores y tipos de datos de referencia, eventos y controladores de eventos, interfaces, atributos y excepciones de procesamiento comúnmente utilizados.
  • Microsoft.VisualBasic. Contiene clases que admiten la compilación y generación de código mediante el lenguaje Basic .NET.

Otra vez te ruego tranquilidad y tiempo, a medida que avancemos en .NET irás juntando todos estos conceptos.

¿Que es un assembly (o ensamblado)?

"Los ensamblados componen la unidad fundamental de implementación, control de versiones, reutilización, ámbito de activación y permisos de seguridad en una aplicación basada en .NET. Los ensamblados adoptan la forma de un archivo ejecutable (.exe) o un archivo de biblioteca de vínculos dinámicos (.dll), y constituyen unidades de creación de .NET Framework. Proporcionan a Common Language Runtime la información que necesita para estar al corriente de las implementaciones de tipos. Un ensamblado puede entenderse como una colección de tipos y recursos que forman una unidad lógica de funcionalidad y que se generan para trabajar conjuntamente"

Para que nos entendamos, podríamos decir que un assembly es una librería dinámica (DLL) o programa ejecutable en la cual pueden existir distintos espacios de nombres. Aunque esto es simplificar mucho, por ahora nos vale.

Un ensamblado o assembly puede estar formado por varios ficheros DLLs y EXEs, pero lo más importante es que todos los ensamblados contienen un manifiesto (o manifest), gracias al cual se evitan muchos de los quebraderos de cabeza a los que Windows nos tiene acostumbrados, al menos en lo referente a las distintas versiones de las librerías y ejecutables. Este manifiesto es una tabla de contenido del Assembly que lo identifica y dice su versión y otros datos. Esta información elimina lo que en otras versiones se llamaba "infierno de las DLL" por los enormes problemas de versiones y conflictos que generaban.

Por ejemplo, supongamos que tenemos una librería DLL que en su primera versión contenía X funciones. Al tiempo, se crea la segunda versión de dicha librería en la que se cambian algunas funciones y se añaden otras nuevas, para mejorar el rendimiento de las funciones contenidas en esa librería se usa otra DLL que es usada por algunas de las funciones contenidas en esa segunda versión. Esa otra librería puede ser una librería del sistema, la cual a su vez se actualiza con nueva funcionalidad y puede que dicha funcionalidad dependa a su vez de una tercera librería.

Resulta que instalamos un programa que usa las últimas versiones de todas estas librerías. Todo va bien, el programa funciona a las mil maravillas y nosotros estamos muy satisfechos de ese programa que no se cuelga ni una sola vez... Ahora llega a nuestras manos otra aplicación que necesitamos instalar y la instalamos, pero resulta que esa aplicación usa la primera versión de nuestra famosa librería. Si el programa de instalación está bien hecho, no ocurrirá nada malo, ya que al descubrir que tenemos una versión más reciente de la librería, deja la que ya está instalada. Probamos el programa de todo funciona bien. Probamos el maravilloso programa anterior y también funciona bien. ¿Cual es el problema? Por ahora ninguno, pero espera...

Después instalamos un programa que usa una de las librerías del sistema u otra que también usa nuestra "flamante" librería, pero ese programa se ha instalado de "mala manera", bien porque el programa de instalación sea malo o bien porque simplemente se ha instalado mal... como quiera que ha instalado una librería anterior a la que nuestros dos maravillosos ejecutables usan, se puede dar el caso de que ninguno de los dos programas funcionen correctamente... esto ocurrió cuando salió el Internet Explorer 4 y causó no pocos problemas... aunque también ha ocurrido con otros programas que no han tenido en cuenta a la hora de instalar que ya existe una versión más reciente de la librería. Por suerte, esto ya es menos común que hace unos años, sobre todo si los programas de instalación están creados con el Windows Installer o estamos usando el Windows 2000/XP.

Pero es que .NET mejora aún esa "imposibilidad" de meter la pata ya que cada assembly contiene un manifiesto en el cual se indica:

  • Nombre y la versión del assembly
  • Si este assembly depende de otros ensamblados, con lo cual se indica hasta la versión de dichos ensamblados
  • Los tipos expuestos por el assembly (clases, etc.)
  • Permisos de seguridad para los distintos tipos contenidos en el assembly.
  • Datos del copyright, etc.

Nuevamente hay que comentar que no hay que preocuparse mucho de esto, ya que es el propio .NET el que se encarga de que todo funcione correctamente (al menos a priori)

La ventaja de los ensamblados es que "realmente" no necesitan de una instalación y un registro correcto en el registro del sistema de Windows, ya que es el "intérprete" de .NET el que se encarga de hacer las comprobaciones cuando tiene que hacerlas. Por tanto podríamos distribuir una aplicación sin necesidad de crear un programa de instalación. Pero, (¿por qué siempre hay un pero?), si la aplicación usa ensamblados compartidos, puede que sea necesario usar una instalación.

Los ensamblados compartidos se pueden usar por varias aplicaciones diferentes y deben estar "debidamente" instalados en el directorio asignado por el propio .NET Framework.

Ejemplo de ensamblados compartidos son los que definen las clases (tipos) usados por el propio .NET Framework.

¿Puedo utilizar otros lenguajes con .NET?

Pues si, como hemos dicho antes el CLR, o el entorno de ejecución común admite por encima de él cualquier tipo de lenguaje. Actualmente esos son los aprobados:

  • VB .NET
  • C#
  • C ++
  • ASP.NET
  • Jscript.NET

Pero hay otros muchos que están en camino y que podríamos utilizarlos con el mismo entorno y clases que los existentes:

  • Cobol
  • Pascal
  • Perl
  • Python
  • SmallTalk
  • ML
  • ...

6. Bases de la POO

En esta introducción general a .NET (tranquilo este capítulo puede ser un poco duro pero enseguida empezaremos con la base) debemos comentar algunos conceptos básicos de esta tecnología y que iremos ampliando a lo largo del curso. No van a ser explicaciones técnicas sino mas bien una toma de contacto de la filosofía .NET. Todo lo que trataremos en .NET se basa en clases y objetos. Es un concepto muy sencillo pero que pudiera desconcertar al principio

Veamos que son esos conceptos y la base de la programación orientada a objetos

6.1 Las clases

Todo lo que tiene .NET Framework son clases. Una clase no es ni más ni menos que código

Cuando definimos una clase, realmente estamos definiendo dos cosas diferentes: los datos que dicha clase puede manipular o contener y la forma de acceder a esos datos.

Por ejemplo, si tenemos una clase de tipo Cliente, por un lado tendremos los datos de dicho cliente y por otro la forma de acceder o modificar esos datos. En el primer caso, los datos del Cliente, como por ejemplo el nombre, domicilio etc., estarán representados por una serie de campos o propiedades, mientras que la forma de modificar o acceder a esa información del Cliente se hará por medio de métodos. Esas propiedades o características y las acciones a realizar son las que definen a una clase.

Un coche tiene unas propiedades: color, marca, modelo, ... y unos métodos para trabajar con él: arrancar, frenar, cambiar de marcha. La definición de estas partes es lo que llamamos clase, sólo la definición, para trabajar con el coche lo veremos luego. Luego es algo muy sencillo que no debe parecernos ni complejo, ni técnico. Los antiguos programadores de VB son los que menos acostumbrados están a trabajar con clases porque se podían prescindir de ellas pero en VB.NET no. Por eso es una ventaja para los novatos porque aprenderéis de 0 los conceptos y os quedarán mas claros.

6.2 Los Objetos

Por un lado tenemos una clase que es la que define un "algo" con lo que podemos trabajar. Pero para que ese "algo" no sea un "nada", tendremos que poder convertirlo en "algo tangible", es decir, tendremos que tener la posibilidad de que exista. Aquí es cuando entran en juego los objetos, ya que un objeto es una clase que tiene información real. Por fin podemos crear un coche del cual ya tenemos su definición en la clase Coche

Digamos que la clase es la "plantilla" a partir de la cual podemos crear un objeto en la memoria. Por ejemplo, podemos tener varios objetos del tipo Cliente, uno por cada cliente que tengamos en nuestra cartera de clientes, pero la clase sólo será una.

En nuestros formularios: tenemos 10 botones y ... han sido creados a partir de la clase "Botón". Otro ejemplo es que tenemos una clase que se llama "Coches" donde describe que es y cómo funciona un coche pues bien, podemos crear diferentes coches a partir de la clase "Coches", cada uno puede tener sus propias propiedades: color, ... pero funcionan todos igual

¿Quedan claros estos dos conceptos? Vale pues ahora sólo comentar que existen objetos de mas categoría que otros y que esta relación se llama jerarquía de objetos. Por ejemplo un objeto Coche puede tener a su vez varios objetos mas pequeños: motor, carrocería, ...

En .NET tenemos entonces varias Clases principales y debajo de ellas todas las instrucciones del lenguaje. Por ejemplo habrá una clase para los formularios (ventanas de Windows) que a su vez tendrán otras clases dentro: botones, textos, imágenes. Otra clase sería la colección de funciones matemáticas que podemos utilizar. Para que hagas una idea, esta es la jerarquía de objetos para desarrollo en Web:


1 comentario:

Anónimo dijo...

Buena herramienta de trabajo para desarrolladores completo de las librerias

Desarrollo - Soluciones Cabezera Animada


Ver Estadisticas