Introducción a la programación visual

8
Introducción a la Programación Visual

Transcript of Introducción a la programación visual

Page 1: Introducción a la programación visual

Introducción a la Programación Visual

Page 2: Introducción a la programación visual

Prof. Villelli Miguel Ángel

Introducción a la Programación Visual

Plataforma .NET

La plataforma .NET pone a nuestra disposición un conjunto de tecnologías y herramientas que simplifican el desarrollo de aplicaciones y propone una solución para casi cualquier tipo de aplicaciones:

• aplicaciones Windows clásicas.• aplicaciones Web.• servicios Windows.• servicios Web.

Todas estas aplicaciones se pueden realizar gracias a un elemento esencial: el Framework .NET. Este Framework se encarga, por medio de numerosas capas de software superpuestas, de la integridad de la vida de una aplicación, desde el desarrollo hasta la ejecución. El sistema operativo, con el que va a interactuar, debe albergar el framework. El primer sistema que permite incorporarlo es, por supuesto, Windows, pero hay otras versiones disponibles que permiten la adaptación de la plataforma .NET a sistemas tales como Linux o Unix.

El framework contiene dos elementos principales: el Common Language Runtime y la librería de clases del .NET Framework.

La librería de clases es un conjunto de clases que se puede utilizar para el desarrollo de cualquier aplicación. Haremos uso de ellas a lo largo de la cursada.

Principio de funcionamiento del Common Language Runtime

En las aplicaciones de Windows tradicionales, el sistema se encarga directamente de la ejecución del código. En efecto, éste se genera a través del compilador asociado al lenguaje de programación utilizado para el diseño de la aplicación. El resultado de esta compilación es un archivo

2

Page 3: Introducción a la programación visual

Prof. Villelli Miguel Ángel

binario que contiene el código especificado para el microprocesador y el sistema operativo con los cuales debe funcionar la aplicación. No hay compatibilidad alguna con ningún otro tipo de microprocesador o sistema operativo.

Para convencerse de ello, basta con intentar la ejecución de una aplicación prevista para Windows en un sistema Linux para comprobar esta incompatibilidad. Si se intenta la ejecución en una estación de trabajo SUN, que utiliza un tipo de microprocesador radicalmente diferente, el resultado es idéntico. La solución para paliar estos problemas consiste en generar para la aplicación no un código específico sino genérico, independiente de cualquier plataforma de software o hardware. Se confía este código, en el momento de la ejecución, a una máquina virtual que garantiza su ejecución. Este código se llama Microsoft Intermediate Language (MSIL).

Durante la ejecución de la aplicación, la máquina virtual se hace cargo de este código y lo traduce en instrucciones específicas para el microprocesador de la máquina. Dicha traducción no se realiza en bloque desde el principio de la aplicación, sino sólo en función de las necesidades. En efecto, ¿para qué perder tiempo traduciendo el código MSIL si no se va a utilizar nunca? Es por esta razón por lo que el compilador utilizado para esta traducción se llama compilador Just In Time (JIT).

Las ventajas de esta solución son obvias, ya que para ejecutar una misma aplicación en varias plataformas de hardware o software, basta con obtener la máquina virtual capaz de efectuar la traducción. Esta máquina virtual está disponible para todos los sistemas de Microsoft. El proyecto Mono propone una versión de la máquina virtual para las plataformas siguientes:

• Linux• Mac OS X

• Sun Solaris

• BSD - OpenBSD, FreeBSD, NetBSD

Están disponibles para descargar en el sitio http://www.mono-project.com.

Podemos decir entonces que el Common Language Runtime (CLR) es la base del .NET Framework. Se puede considerar el runtime como un motor de ejecución que administra la ejecución de código y la gestión de la memoria. El código del que se encarga el CLR se llama código gestionado.

Los desarrolladores que usan CLR escriben el código fuente en un lenguaje compatible con .NET, como C# o Visual Basic .NET.

En tiempo de compilación, un compilador .NET convierte el código a CIL. En tiempo de ejecución, el compilador del CLR convierte el código CIL en código nativo para el sistema operativo. Alternativamente, el código CIL es compilado a código nativo en un proceso separado anterior a la ejecución.

3

Page 4: Introducción a la programación visual

Prof. Villelli Miguel Ángel

Esto acelera las posteriores ejecuciones del software debido a que la compilación de MSIL a nativo ya no es necesaria.

El esquema siguiente muestra el conjunto de estas operaciones:

Los servicios del Common Language Runtime

La máquina virtual no se limita a efectuar la traducción del código. El código MSIL también se llama código gestionado, lo que supone que se llevará a cabo un cierto número de operaciones adicionales sobre el código en tiempo de ejecución. La figura siguiente muestra el conjunto de las funcionalidades disponibles en el CLR.

Class Loader: Gestiona la carga en memoria de las instancias de clases.

IL to Native Compilers: Convierte el código intermedio (MSIL) en código nativo.

Code Manager: Gestiona la ejecución del código.

Garbage Collector: Asegura la gestión de la memoria vigilando las instancias de clases que ya no son accesibles.

4

Page 5: Introducción a la programación visual

Prof. Villelli Miguel Ángel

Security Engine: Permite la verificación de la identidad de la persona requeriendo la ejecución del código y acepta o no esta ejecución, en función de los permisos otorgados.

Debug Engine: Permite la depuración de la aplicación al encargarse por ejemplo de la ejecución paso a paso del código.

Type Checker: Vigila el uso de variables no incializadas y las conversiones entre variables de tipo diferente.

Exception Manager: Facilita la gestión estructurada de las excepciones en relación con Windows Structured Exception Handling (SEH). Esta técnica permite una gestión individual de cada excepción más que una gestión global.

Thread Support: Propone un conjunto de clases que permite la realización de aplicaciones multihilo.

COM Marshaler: Permite traducir llamadas hacia componentes COM, asegurando, por ejemplo, la conversión de los tipos de datos.

Base Class Library Support: Facilita el acceso a los servicios disponibles en el sistema operativo anfitrión.

La Base Class Library

El Framework .NET pone a disposición de los desarrolladores un conjunto de herramientas que les permite obtener una solución rápida a la mayoría de los problemas encontrados durante el desarrollo de una aplicación.

Estas herramientas están disponibles en forma de clases. Al contrario que las librerías de código de los lenguajes de la generación anterior, que sólo eran una lista sin fin de procedimientos o funciones, la librería de clases se organiza bajo la forma de una estructura jerarquizada. El elemento esencial de esta jerarquización es el espacio de nombres (Namespace). Permite la agrupación lógica de clases que tienen puntos en común. Por ejemplo, encontramos en el namespace System.Data todas las clases necesarias para acceder a una base de datos.

Naturalmente esta librería de clases es independiente de cualquier lenguaje de programación. Permite, pues, la mezcla de diferentes lenguajes a lo largo del desarollo de una aplicación. También está perfectamente integrada a Visual Studio, lo que nos procura comodidad en el uso gracias a herramientas tales como Intelissence. Como esta librería está orientada a objetos, es fácilmente extensible a través de relaciones de herencia.

La librería contiene una cantidad impresionante de espacios de nombres y clases; tanto es así que, durante el desarrollo de sus aplicaciones con Visual C#, es probable que usted nunca utilice algunos de ellos.

Los espacios de nombres usados más frecuentemente son los siguientes:

5

Page 6: Introducción a la programación visual

Prof. Villelli Miguel Ángel

System: Es el espacio de nombres raíz para los tipos de datos en el Framework .NET. Contiene, en particular, la definición de la clase Object, que es el ancestro de todos los tipos de datos del Framework .NET.

System.Windows: Contiene el conjunto de los elementos que permiten la creación de interfaces de usuarios de Windows.

System.Web : Contiene todos los recursos necesarios para la creación de aplicaciones Web, con, por ejemplo, las clases de la tecnología ASP.NET o las clases necesarias para la creación de servicios Web XML.

System.data: Contiene un conjunto de clases especializadas en el acceso a las bases de datos con el soporte de ADO.NET.

System.Xml: El lenguaje Xml se ha hecho omnipresente y este espacio de nombres contiene las clases que aseguran la manipulación de documentos Xml.

Las versiones y evoluciones de la plataforma .NET

La primera versión (1.0) de la plataforma .NET sale en enero del 2002 con Visual Studio 2002. Esta versión es sustituida rápidamente por la versión 1.1, que corrige algunos problemas de juventud de la versión anterior y añade tecnologías que sólo estaban disponibles anteriormente como instalaciones independientes y son ahora incluidas. Las aportaciones de esta versión son principalmente:

Los controles ASP.NET para móviles (antiguamente Microsoft Mobile Internet Toolkit), que extienden el Framework .NET sobre los periféricos móviles (sin cable) tales como teléfonos móviles y asistentes digitales personales.

El proveedor de datos .NET Framework para ODBC y el proveedor de datos para Oracle, que previamente sólo estaban disponibles a través de descarga, vienen, a partir de ahora, integrados en el .NET Framework.

La compatibilidad con el nuevo protocolo de Internet, comúnmente llamado IP versión 6 o más sencillamente IPv6. Este protocolo está diseñado para aumentar de manera sensible el espacio de direccionamiento utilizado para identificar los puntos de entrada de comunicación con Internet.

El desarollo de aplicaciones Web es también cada vez más fácil con la nueva versión de ASP.NET, que propone una multitud de nuevos controles.

La clase Console es mejorada con la inserción de nuevas propiedades y métodos (gestión de los colores, borrado, posición del cursor...).

El .NET Framework 2.0 vuelve a introducir la funcionalidad Modificar y Continuar, que permite al usuario que depura una aplicación en Visual Studio modificar el código fuente en modo parado. Una vez aplicadas las

6

Page 7: Introducción a la programación visual

Prof. Villelli Miguel Ángel

modificaciones del código fuente, el usuario puede retomar la ejecución del código y observar el efecto.

La aparición de la noción de genérico, que permite declarar y definir la las clases, estructuras, interfaces, métodos y delegados con parámetros de tipo no especificado o genérico en lugar de tipos específicos. Los tipos reales se especifican posteriormente durante la utilización.

La versión 3.0 llega en noviembre del 2006 y aporta nuevas tecnologías, a la vez que sigue siendo principalmente una versión 2.0. Estas tecnologías están disponibles en descargas que vienen a integrarse al framework 2.0. A continuación echamos un vistazo a estas novedades:

Windows Presentation Foundation (WPF) representa el nuevo sistema de interfaces gráficas. Se basa en un motor de aspecto vectorial y permite una separación más clara entre la definición de la interfaz gráfica de una aplicación y su código. Para esto utiliza el lenguaje XAML (eXtensible Application Markup Language). Las tareas se pueden repartir más facilmente entre diseñadores y desarrolladores.

Windows Communication Foundation (WCF) constituye la nueva base de desarrollo de aplicaciones distribuidas. Facilita la comunicación entre aplicaciones añadiendo una capa de abstracción que uniforma las técnicas de comunicación entre aplicaciones (Servicios Web, .NET Remoting, Microsoft Transaction Server y Microsoft Message Queuing…).

Windows Workflow Foundation (WF) está compuesto por un modelo de programación de un motor de ejecución y herramientas para integrar flujos de trabajo en una aplicación. Se puede definir un flujo de trabajo como un conjunto de acciones o etapas que se ejecutan en un orden predefinido. Estas acciones se pueden encadenar en función de condiciones, interacciones con procesos informáticos o en función de interacciones humanas.

Windows Cardspace facilita una nueva técnica a los usuarios para identificarse en una aplicación. Tiene la misma vocación que Microsoft Passport, pero no es específica para las aplicaciones de Microsoft (Hotmail, MSDN…).

La versión 3.5 de noviembre del 2007 aporta principalmente mejoras y evoluciones a las tecnologías aparecidas con la versión 3.0. La única verdadera novedad de esta versión corresponde a la aparición del lenguaje LINQ (Language Integrated Query). El objetivo de este lenguaje consiste en uniformar el método utilizado para extraer información de una fuente de datos. Este nuevo lenguaje permite consultar colecciones de objetos, bases de datos de SQL Server, DataSet ADO.NET y documentos XML con la misma síntaxis.

La versión 4.0 disponible desde mayo del 2010 mejora aún más las capacidades y funcionalidades disponibles. Entre sus novedades podemos señalar:

7

Page 8: Introducción a la programación visual

Prof. Villelli Miguel Ángel

La mejora del recolector de basura, que se ejecuta ahora en segundo plano. Durante una operación de recolección, los hilos de la aplicación ya no quedan en suspenso durante la limpieza de la memoria, lo que aumenta de forma efectiva la capacidad de reacción de la aplicación.

El añadido de un núcleo de ejecución para poder trabajar lenguajes dinámicos tales como IronPython y IronRuby. Con este tipo de lenguajes, los tipos de variables ya no sólo pueden ser fijados en el momento del diseño de la aplicación, sino también durante su ejecución.

La disponibilidad de nuevos tipos de datos, como BigInteger y Complex, permiten respectivamente el uso de valores numéricos enteros sin límite superior o inferior y la manipulación de números complejos.

La mejora de las clases de manipulación del sistema de archivos y la creación de archivos mapeados en memoria.

Poder trabajar más fácilmente los procesadores multinúcleo que permiten el reparto de las tareas mediante la programación paralela.

8