HERRAMIENTAS Y ENTORNOS DE PROGRAMACIÓN



Documentos relacionados
.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

Visual Studio 2008 es el conjunto de herramientas de

PROGRAMA FORMATIVO MICROSOFT VISUAL BASIC. NET

JAVA EE 5. Arquitectura, conceptos y ejemplos.

Versión: 01. Fecha: 01/04/2013. Código: F004-P006-GFPI GUÍA DE APRENDIZAJE Nº 1 1. IDENTIFICACIÓN DE LA GUIA DE APRENDIZAJE

Introducción al.net Framework. Introducción al.net Framework. Diseño Basado en Componentes. Curso 2008 / 09. Diseño Basado en Componentes

Introducción a las redes de computadores

CONCLUISIONES Y RECOMENDACIONES

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida

TEMA 6. ARQUITECTURA DE ADO.NET 6.1. INTRODUCCIÓN A ADO.NET

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

CAPÍTULO 3 DISEÑO DE LA ARQUITECTURA

SUPLEMENTO EUROPASS AL TÍTULO

CAPÍTULO 3 VISUAL BASIC

Capítulo 5. Cliente-Servidor.

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano

Introducción a Visual Studio.Net

La utilización de las diferentes aplicaciones o servicios de Internet se lleva a cabo respondiendo al llamado modelo cliente-servidor.

TÈCNICO EN PROGRAMACIÒN DE SOFTWARE SERVICIO NACIONAL DE APRENDIZAJE, SENA Material de Apoyo Plataforma.NET LA PLATAFORMA.NET

Para obtener más información, vea Introducción al control DataRepeater (Visual Studio).

Workflows? Sí, cuántos quiere?

CORPORACIÓN MEXICANA DE INVESTIGACIÓN EN MATERIALES, S.A. DE CV

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

Componentes de Integración entre Plataformas Información Detallada

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

Introducción a la Firma Electrónica en MIDAS

Capítulo VI. Conclusiones. En este capítulo abordaremos la comparación de las características principales y

FUNDAMENTOS DE PROGRAMACION CON C#

SUPLEMENTO EUROPASS AL TÍTULO

Creación y administración de grupos de dominio

Plataforma de expediente

1.1.- Objetivos de los sistemas de bases de datos Administración de los datos y administración de bases de datos Niveles de Arquitectura

Familia de Windows Server 2003

Microsoft Visual Basic.NET

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

PLAN DE CARRERA DE MICROSOFT TECHNICAL:

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

Edición de Ofertas Excel Manual de Usuario

DEPARTAMENTO: Informática. MATERIA: Programación. NIVEL: 1º Desarrollo de Aplicaciones Multiplataforma

ADO.NET. Arquitectura de ADO.NET

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

PROGRAMA FORMATIVO MICROSOFT VISUAL BASIC 2008

Autenticación Centralizada

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

MICROSOFT VISUAL BASIC.NET

Un primer acercamiento a la CMDB.

Microsoft Access proporciona dos métodos para crear una Base de datos.

Ambiente Virtual de Comercio Electrónico B2B para la Comunidad Virtual de Negocios del departamento del Cauca

CAPITULO 8. Planeamiento, Arquitectura e Implementación

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

LiLa Portal Guía para profesores

App para realizar consultas al Sistema de Información Estadística de Castilla y León

ENTORNO DE DESARROLLO MICROSOFT.NET 2010

Novedades. Introducción. Potencia

Servidores Donantonio

Internet Information Server

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

Clientes Donantonio. Especificación de requisitos software. Juan José Amor David Escorial Ismael Olea

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz

Ingº CIP Fabian Guerrero Medina Master Web Developer-MWD

Guía de instalación de la carpeta Datos de IslaWin

Soluciones Informáticas para la Gestión de la Calidad c/vicente Aleixandre nº 10 4º H, A CORUÑA Telf: / info@spuch.

Utilidades de la base de datos

UNIVERSIDAD DE SALAMANCA

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema

VISIÓN GENERAL HERRAMIENTAS COMERCIALES

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Creación y administración de grupos locales

1: La plataforma.net (.NET Framework)

INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS

GENERALIDADES DE BASES DE DATOS

Capítulo VI. Estudio de Caso de Aplicación del Integrador de Información Desarrollado

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa Configuración Internet Explorer para ActiveX...

Introducción a Visual Studio.NET

serra Access y SQL Server Qué es mejor en cada caso? Valentín Playá, Serra GTS 22 de enero de 2009 Bases de datos 1

LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

INF 473 Desarrollo de Aplicaciones en

ESTUDIO DE LA PLATAFORMA

Toda base de datos relacional se basa en dos objetos

Ley Orgánica de Protección de Datos

FAMILIA PROFESIONAL: Informática y Comunicación CICLO SUPERIOR DESARROLLO DE APLICACIONES MULTIMEDIA DAM 350 HORAS

Visión General de GXportal. Última actualización: 2009

Estructura de Bases de datos. Leonardo Víquez Acuña

Tools. Ibermática Soluciones Empresariales 2012, Todos los derechos reservados

Elementos requeridos para crearlos (ejemplo: el compilador)

Ingeniería de Software. Pruebas

Manual de instalación del programa EDDI-7 INTRODUCCIÓN

III. ADMINISTRACIÓN DE ORACLE.

SEGURIDAD Y PROTECCION DE FICHEROS

Tema 4. Gestión de entrada/salida

Windows Server 2012: Infraestructura de Escritorio Virtual

Capítulo 12: Indexación y asociación

Informática 4º ESO Tema 1: Sistemas Informáticos. Sistemas Operativos (Parte 2)

Entre los más conocidos editores con interfaz de desarrollo tenemos:

Microsoft SQL Server Conceptos.

Transcripción:

HERRAMIENTAS Y ENTORNOS DE PROGRAMACIÓN Tema 3. Entornos de Desarrollo. Caso de Estudio: Tecnología.NET Escuela Superior de Informática Ramón Hervás Lucas - Curso 2009/2010 - HyEP 1 Tema 3. Entornos de Desarrollo.!! Entornos de Desarrollo. Caso de Estudio Tecnología.NET (~ 8 horas)!! Características generales de.net!! Ensamblados (Assemblies)!! Administración de datos con ADO.NET!!.NET frente a otras tecnologías!! El entorno Visual Studio.NET!! Lenguaje de Programación C# 2 1

Tema 3. Entornos de Desarrollo. Características!! Qué es.net?!!.net es una plataforma para el desarrollo, despliegue y ejecución de aplicaciones orientadas a servicios sobre entornos altamente distribuidos.!! Es el Resultado de la confluencia de dos proyectos:!! El primero de ellos tenía como objetivo la mejora del desarrollo sobre las plataformas Windows, prestando una especial atención a la mejora del modelo COM.!! El segundo proyecto, conocido como NGWS (Next Generation Windows Services), tenía como objetivo la creación de una plataforma para el desarrollo del software como servicio.!! La plataforma.net cubre todas las capas del desarrollo de software, existiendo una alta integración entre las tecnologías de presentación, de componentes y de acceso a datos. 3 Tema 3. Entornos de Desarrollo. Características!! Objetivos de la Tecnología.NET!! Proporcionar un modelo de programación simple y consistente.!! A diferencia del modelo anterior, en el cual algunas facilidades del sistema operativo son ofrecidas mediante DLLs y otras mediante objetos COM, todos los servicios del framework son proporcionados de la misma forma mediante un modelo de programación orientado a objetos.!! Así mismo, se ha simplificado el modelo de programación, lo que permite a los desarrolladores centrarse en las cuestiones relativas a la lógica de la aplicación.!! Liberar al programador de las cuestiones de infraestructura (aspectos no funcionales).!! El framework.net se encarga de gestionar automáticamente tales cuestiones como la gestión de la memoria, de los hilos o de los objetos remotos. 4 2

Tema 3. Entornos de Desarrollo. Características!! Objetivos de la Tecnología.NET!! Proporcionar integración entre diferentes lenguajes. El problema de la interoperabilidad ha sido considerado durante muchos años, desarrollándose varios estándares y arquitecturas con diferente nivel de éxito:!! Estándares de representación de datos, que solucionan las cuestiones relativas al paso de tipos de datos entre distintas máquinas, tales como los formatos little-endian y big-endian.!! Estándares arquitecturales, como RPC, CORBA o COM, que solucionan las cuestiones relativas a la llamada de métodos entre diferentes lenguajes, procesos o máquinas.!! Estándares de lenguajes, como ANSI C, que permite la distribución de código fuente entre distintos compiladores y máquinas.!! Entornos de ejecución, como los proporcionados por las máquinas virtuales de SmallTalk y Java, que permiten la ejecución en diferentes máquinas físicas proporcionando un entorno de ejecución estandarizado. Sin embargo, ninguno de estos esquemas ha solucionado completamente los problemas asociados con un entorno de computación distribuido. 5 Tema 3. Entornos de Desarrollo. Características!! Objetivos de la Tecnología.NET!! Proporcionar una ejecución multiplataforma.!!.net ha sido diseñado para ser independiente de la plataforma sobre la cual se ejecutaran las aplicaciones. Para conseguir este objetivo las aplicaciones.net se compilan a un lenguaje intermedio denominado Lenguaje Intermedio de Microsoft o MSIL (Microsoft Intermediate Language), el cual es independiente de las instrucciones de una CPU concreta.!! Proporcionar soporte para arquitecturas fuertemente acopladas y débilmente acopladas.!! Para conseguir un buen rendimiento, escalabilidad y confiabilidad con grandes sistemas distribuidos, hay operaciones en las cuales los componentes están fuertemente acoplados.!! Sin embargo, también debe soportarse una comunicación débilmente acoplada, de forma que una transacción no quede interrumpida o bloqueada por cualquier dependencia en tiempo de ejecución. 6 3

Tema 3. Entornos de Desarrollo. Características!! Objetivos de la Tecnología.NET!! Proporcionar un mecanismo de errores consistente.!! En la plataforma Windows no existe un sistema unificado para el manejo de los errores, de forma que este se realiza mediante códigos de error Win32, mediante la variable HRESULT en COM, o mediante el lanzamiento de excepciones. En.NET todos los errores son manejados mediante un mecanismo de excepciones, el cual permite aislar el código de manejo de errores del resto, permitiéndose la propagación de excepciones entre distintos módulos y lenguajes.!! Proporcionar un mecanismo de seguridad avanzado.!! Así, la plataforma.net proporciona un modelo de seguridad basado en la evidencia, que posee un modelo de control de gran granularidad, pudiendo basarse o no en quien escribió el código, que intenta hacer dicho código, donde está instalado, y quién está intentando ejecutar dicho código.!! Sistema de despliegue simple.!! Se ha eliminado la necesidad de tratar con el registro, con GUIDs, etc, de forma que la instalación de una aplicación es tan sencilla como su copia en un directorio. 7 Tema 3. Entornos de Desarrollo. Características!! Compatibilidad de Visual Basic.NET!! Visual Basic.NET NO es 100% compatible con las versiones anteriores!! Alternativas iniciales!! Mejorar el código base de Visual Basic para que se ejecute sobre.net!! Reconstruir Visual Basic desde cero para aprovechar todas las posibilidades de.net!! Objetivos alcanzados!! Garantía de interoperatividad con el resto de lenguajes.net!! Comparte tipos de variables, arrays, tipos definidos por el usuario, clases e interfaces que C++ y C#.!! Visual Basic.NET es realmente un lenguaje orientado a objetos!! Pérdidas!! Eliminación de cadenas de longitud fija y arrays cuyo índice inicial es distinto a cero!! Eliminación de características inconsistentes como GoSub/Return 8 4

Tema 3. Entornos de Desarrollo. Características!! Componentes principales 9 Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! El lenguaje común en tiempo de ejecución, o CLR, es el motor de ejecución para las aplicaciones de.net.!! El CLR puede considerarse como el núcleo de.net, desempeñando el papel de una máquina virtual que se encarga de gestionar la ejecución del código y de proporcionar una serie de servicios a dicho código.!! Entre los servicios proporcionados por el CLR a las aplicaciones.net se encuentran los siguientes:!! Gestión del código, encargándose de la carga y ejecución del código MSIL.!! Aislamiento de la memoria de las aplicaciones, de forma que desde el código perteneciente a un determinado proceso no pueda accederse al código o datos pertenecientes a otro proceso, lo que permite que un error en una aplicación no afecte al resto!! Garantizar la robustez del código mediante la implementación de un Sistema de Tipos Común o CTS (Common Type System). 10 5

Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Servicios del CLR (continuación)!! Conversión del código MSIL al código nativo, utilizándose para ello técnicas de compilación Just In Time (JIT).!! Acceso a los metadatos, que contienen información sobre los tipos, y sus dependencias, definidos en el código.!! Gestión automática de la memoria, encargándose de gestionar las referencias de los objetos y de la tareas de recolección de basura.!! Asegurar la seguridad en los accesos del código a los recursos, la cual estará en función del nivel de confianza del que goce el código, lo que dependerá de una serie de factores tales como su origen.!! Manejo de las excepciones, incluyendo las excepciones entre código escrito en diferentes lenguajes.!! Interoperabilidad con el código no gestionado, lo que incluye desde objetos COM hasta código incluido en DLLs.!! Soporte de servicios para los desarrolladores, tales como la depuración. 11 Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! El CLR es el que posibilita la integración entre diferentes lenguajes, proporcionando a su vez una mejora en el rendimiento como consecuencia de los servicios que ofrece, tales como la gestión automática de la memoria. El CLR esta formado principalmente por tres componentes:!! Un Sistema de Tipos Común o CTS, formado por un amplio conjunto de tipos y operaciones que se encuentran presentes en la mayoría de los lenguajes de programación.!! Un sistema de metadatos, que permite almacenar dichos metadatos junto con los tipos a los que se refieren en tiempo de compilación, así como obtenerlos en tiempo de ejecución.!! Un sistema de ejecución, que se encarga de ejecutar las aplicaciones del framework.net, haciendo uso del sistema de información de metadatos para desarrollar los servicios tales como la gestión de la memoria. 12 6

Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Un fichero fuente, podría contener una definición de un nuevo tipo escrito en cualquiera de los lenguajes soportados por.net. Ese tipo podría heredar de cualquiera de los tipos de las librerías de.net.!! Dicho fichero es compilado, generando un fichero con código intermedio MSIL y con los metadatos correspondientes a dicho tipo.!! Los metadatos podrían ser utilizados para importar dicho tipo, de forma que pueda ser utilizado por cualquiera de los lenguajes de.net!! En tiempo de ejecución, el sistema carga el fichero con MSIL, compila a código máquina. Cualquier referencia a un tipo situado en un fichero de MSIL diferente provoca que dicho fichero sea cargado y leídos sus metadatos, siguiéndose el mismo proceso de ejecución. 13 Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de tipos común (CTS) Para conseguir la interoperabilidad entre lenguajes es necesario adoptar un sistema de tipos común. Así, el sistema de tipos común (CTS) define como se declaran, utilizan y gestionan los tipos en el CLR. El CTS desarrolla las siguientes funciones:!! Establece un framework que permite la integración entre lenguajes, la seguridad de tipos, y la ejecución de código con un alto rendimiento.!! Proporciona un modelo orientado a objetos que soporta la implementación de muchos lenguajes de programación.!! Define una serie de reglas que los lenguajes deben seguir para permitir la interoperabilidad de los mismos. 14 7

Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de tipos común (CTS) Tipos Valor.!! Las instancias de los tipos Valor son almacenadas como la representación de su valor como una secuencia de bits en memoria, careciendo del concepto de identidad.!! Dentro de los tipos valor se encuentran los predefinidos (implementados por el CLR), los definidos a medida por el usuario, y las enumerados. Tipos Referencia.!! Las instancias de los tipos Referencia son almacenadas como referencias a la localización de su valor.!! Los tipos referencia son una combinación de una localización, su identidad, y una secuencia de bits (su valor).!! Dentro de los tipos referencia se encuentran los tipos interfaz, los tipos punteros, y los tipos autodescriptivos. Los tipos autodescriptivos son aquellos en los cuales es posible obtener el tipo de su valor por inspección. 15 Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de tipos común (CTS) 16 8

Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de tipos común (CTS). Definición de Tipos. Una definición de un tipo construye un nuevo tipo a partir de tipos existentes. Los tipos valor predefinidos, los punteros, arrays y delegados son definidos al ser utilizados, por lo que a estos tipos se les conoce como tipos implícitos. La definición de un tipo incluye los siguientes elementos:!! Los atributos definidos sobre el tipo (cómo se verá en la sección de los metadatos, los atributos son un mecanismo de extensión de los mismos).!! La visibilidad del tipo. Un tipo puede ser visible a todos los ensamblados (visibilidad pública), o sólo para el ensamblado que lo define (visibilidad de ensamblado).!! Nombre del tipo. Un tipo queda definido dentro de un ensamblado, por lo que sólo tiene que ser único dentro del ensamblado.!! El tipo base del tipo definido. Un tipo definido sólo puede tener un tipo base.! Las interfaces implementadas por el tipo. Continúa 17 Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de tipos común (CTS). Definición de Tipos. Las definiciones de cada uno de los miembros del tipo. Dentro de un tipo pueden definirse los siguientes miembros:!! Eventos. Definen incidentes a los que se puede responder.!! Campos (variables). Describen y contienen el valor de un tipo.!! Tipos anidados. Definen a un tipo dentro del ámbito del tipo que lo contiene.!! Métodos. Definen las operaciones disponibles para un tipo!! Propiedades. Nombran a un valor lógico o al estado de un tipo, y constituyen una alternativa a los tradicionales métodos de acceso/ modificación get/set, de forma que internamente las propiedades son mapeadas a métodos get y set. Las propiedades pueden contener lógica interna, así como lanzar excepciones si fuera necesario. 18 9

Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de tipos común (CTS). Definición de Tipos.!! Un Ejemplo: 19 Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de tipos común (CTS). Tipos Referencia. Los tipos referencia son la combinación de una localización, y una secuencia de bits. Las localizaciones, que denotan las áreas de memoria en las cuales los valores pueden ser almacenados, poseen seguridad de tipos, de forma que sólo pueden asignarse tipos compatibles. A continuación se describen los distintos tipos Referencia del CTS.!! Clases Como en cualquier sistema orientado a objetos, el CTS incluye el concepto de clase. Implícitamente, cualquier clase hereda de System.Object, la cual proporciona una serie de métodos.!! Delegados El CTS soporta un tipo de objetos denominados delegados, los cuales tienen una finalidad similar a los punteros a funciones de C++, pero con la diferencia en que estos cuentan con la seguridad del sistema de tipos, de forma que siempre apuntan a un objeto válido.!! Arrays Los arrays son definidos especificando el tipo de sus elementos, su número de dimensiones y sus límites inferior y superior para cada dimensión.!! Interfaces Un tipo interfaz es la especificación parcial de un tipo, actuando como contratos que ligan a los implementadores con lo especificado en la interfaz.!! Punteros El CTS soporta tres tipos de punteros: punteros gestionados, punteros no gestionados, y punteros no gestionados a funciones. 20 10

Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Metadatos!! Los metadatos son información binaria que describe los tipos implementados por un programa.!! Los metadatos se almacenan en un fichero Ejecutable Portable (PE) o en memoria, de forma que cuando un fichero con código es compilado, los metadatos son almacenados junto con el código MSIL. Todos los compiladores para.net están obligados a emitir metadatos sobre cada tipo contenido en un fichero fuente.!! Sirven de puente que enlaza el sistema de tipos común (CTS) y el motor de ejecución del.net.!! Los metadatos solucionan dos de los problemas existentes en muchos de los sistemas actuales basados en componentes, como son que la información sobre los componentes, como los ficheros IDL, son almacenados separados de los componentes, y que la descripción de los componentes que poseen muchos de estos sistemas sólo especifican la sintaxis de sus interfaces, y no su semántica.!! En.NET se ha solucionado este problema proporcionando un mecanismo de extensión de los metadatos, conocido como atributos. 21 Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Metadatos.NET almacenan el código MSIL junto con los metadatos, constituyendo así unas unidades autodescriptivas denominadas ensamblados, mediante los cuales se simplifica enormemente el despliegue de las aplicaciones del framework.net. Debido a su importancia, los ensamblados serán explicados más adelante en un apartado específico. Los metadatos proporcionan los siguientes beneficios:!! Proporcionan ficheros de código autodescriptivos, eliminando la necesidad del registro y manteniéndose siempre sincronizados las descripciones de los tipos y el código que los implementan.!! Proporcionan la información necesaria para conseguir la interoperabilidad entre distintos lenguajes.!! Proporcionan la información necesaria que requiere el sistema de ejecución para la gestión de los objetos. Así mismo, los metadatos permiten las invocaciones remotas en la plataforma.net.!! Mediante los atributos es posible especificar una serie de aspectos que permiten especificar más en detalle como se comporta un programa en tiempo de ejecución. 22 11

Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de Ejecución El motor de ejecución del CLR es el responsable de asegurar que el código es ejecutado como requiere, proporcionando una serie de facilidades para el código MSIL como:!! Carga del código y verificación.!! Gestión de las excepciones.!! Compilación Just In Time (JIT).!! Gestión de la memoria.!! Seguridad Lenguaje intermedio MSIL: El código intermedio MSIL generado por los compiladores del framework.net es independiente del juego de instrucciones de una CPU específica. La principal ventaja del MSIL es que proporciona una capa de abstracción del hardware, lo que facilita la ejecución multiplataforma y la integración entre lenguajes 23 Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de ejecución Compilador JIT:La traducción de MSIL a código nativo de la CPU es realizada por un compilador Just In Time o jitter,!! El Jitter va convirtiendo dinámicamente el código MSIL a ejecutar en código nativo según sea necesario.!! La compilación JIT tiene en cuenta el hecho de que algunas porciones de código no serán llamadas durante la ejecución, por lo que en lugar de invertir tiempo y memoria en convertir todo el código MSIL a código nativo, únicamente convierte el código que es necesario durante la ejecución, almacenándolo por si fuera necesario en futuras llamadas. 24 12

Tema 3. Entornos de Desarrollo. Características!! Lenguaje común en tiempo de ejecución!! Sistema de ejecución. Recolector de basura:!! El recolector de basura es el responsable de eliminar los objetos de la memoria heap que no van a ser referenciados nunca más, compactando el resto de objetos, y actualizando tras esto la referencia a la última posición de memoria libre.!! El proceso de recolección de basura puede ser lanzado automáticamente por el CLR o por una aplicación que lo invoca explícitamente!! Para averiguar qué objetos no van a ser referenciados nunca más, el recolector de basura obtiene las referencias raíces, que son aquellos objetos referenciados directamente por la aplicación. El recolector obtiene a su vez los objetos referenciados por cada referencia raíz, y así sucesivamente. Tras este proceso el recolector de basura es libre de eliminar los objetos no válidos 25 Tema 3. Entornos de Desarrollo. Características!! Especificación de Lenguaje Común (CLS)!! El CLR proporciona, mediante el sistema de tipos común CTS y los metadatos, la infraestructura necesaria para lograr la interoperabilidad entre lenguajes!! Todos los lenguajes siguen las reglas definidas en el CTS para la definición y el uso de los tipos, y los metadatos definen un mecanismo uniforme para el almacenamiento y recuperación de la información sobre dichos tipos.!! A pesar de esto, no hay ninguna garantía de que la funcionalidad de los tipos escritos por un desarrollador en un lenguaje determinado pueda ser completamente utilizado por otros desarrolladores que utilizan otros lenguajes.!! Para asegurar que el código escrito en un lenguaje sea accesible desde otros lenguajes se ha definido la Especificación del Lenguaje Común o CLS (Common Language Specification), que establece el conjunto mínimo de características que deben soportarse para asegurar la interoperabilidad, siendo dicho conjunto de características mínimas un subconjunto del CTS.!! El CLS ha sido diseñado para ser lo suficientemente grande como para que incluya las construcciones que son utilizadas comúnmente en los lenguajes, y lo suficientemente pequeño para que la mayoría de los lenguajes puedan cumplirlo. 26 13

Tema 3. Entornos de Desarrollo. Características VB" C#" J#" $$$! CLS y CTS 2.0 3.0.NET Framework 2.0 ASP.NET! Windows Forms! Windows Presentation Foundation (WPF) Windows Communication Foundation (WCF) Windows Workflow Foundation (WF) Windows CardSpace (WCS) Biblioteca de Clases y ADO.NET Common Language Runtime (CLR) Ramón Windows Hervás Lucas - Curso Vista"#Windows 2007/2008 - HyEP XP"#Windows Server 2003! 27 Tema 3. Entornos de Desarrollo. Ensamblados!! Entornos de Desarrollo. Caso de Estudio Tecnología.NET (~ 8 horas)!! Características generales de.net!! Ensamblados (Assemblies)!! Administración de datos con ADO.NET!!.NET frente a otras tecnologías!! El entorno Visual Studio.NET!! Lenguaje de Programación C# 28 14

Tema 3. Entornos de Desarrollo. Ensamblados!! Introducción a los Ensamblados!! Los ensamblados son los bloques de construcción de las aplicaciones para la plataforma.net, siendo la unidad fundamental de despliegue, de re-uso y de control de versiones.!! Un ensamblado es una colección de tipos y recursos que constituyen una unidad lógica de funcionalidad, proporcionando la información que el CLR necesita sobre las implementaciones de dichos tipos.!! Los ensamblados pueden clasificarse atendiendo a varios criterios. Así, los ensamblados pueden ser:!! Ensamblados estáticos o dinámicos: los ensamblados estáticos son generados en tiempo de compilación y almacenados a disco, mientras que los dinámicos son generados en tiempo de ejecución (mediante los servicios de reflexión), ejecutados directamente desde memoria y pueden ser salvados a disco una vez que han sido ejecutados.!! Ensamblados multifichero o con un único fichero!! Ensamblados privados o compartidos: los ensamblados privados son aquellos que son utilizados únicamente por la aplicación con la cual han sido desplegados, mientras que un ensamblado compartido puede ser utilizado por varias aplicaciones. 29 Tema 3. Entornos de Desarrollo. Ensamblados!! Características de los Ensamblados!! Contiene el código intermedio (MSIL) que será ejecutado por el runtime, así como los metadatos generados por el compilador y el manifiesto del ensamblado. Los ensamblados son unidades autodescriptivas, eliminándose toda dependencia con el registro de Windows, lo que permite simplificar el despliegue de los mismos.!! Define una frontera de encapsulación para los tipos que contiene. La identidad de un tipo queda definido, en parte, por el ensamblado al que pertenece, de forma que dos tipos con idéntico nombre definidos en ensamblados diferentes son considerados independientes.!! Constituye una frontera del ámbito de las referencias. El manifiesto del ensamblado contiene metadatos que son utilizados para la obtención de los tipos y recursos solicitados, especificando los tipos y recursos expuestos por el ensamblado así como los ensamblados de los cuales depende.!! Constituye la unidad mínima versionable. La política de versiones es aplicada sobre todos los tipos y recursos contenidos en el ensamblado. La política de versiones asegura que es cargado el ensamblado correcto ante la invocación de un ensamblado 30 15

Tema 3. Entornos de Desarrollo. Ensamblados!! Características de los Ensamblados!! Constituye la unidad de despliegue. Al arrancar una aplicación, solo los ensamblados que son llamados inicialmente tienen que estar presentes. El resto de ensamblados pueden ser obtenidos bajo demanda.!! Permite el aislamiento de las aplicaciones. La existencia de ensamblados privados favorecen el aislamiento de las aplicaciones, de forma que los cambios realizados en una aplicación no afecten al comportamiento del resto.!! Definen un contexto de seguridad. En la arquitectura.net, las medidas de seguridad son tomadas a nivel de los ensamblados, quedando definidas mediante los metadatos del ensamblado, concretamente en su manifiesto.!! Soportan la ejecución de múltiples versiones simultáneas (side-by-side execution). El runtime tiene la capacidad de ejecutar múltiples versiones del mismo ensamblado en una única máquina, permitiendo aislar versiones incompatibles de un mismo ensamblado y simplificar la actualización de los mismos. 31 Tema 3. Entornos de Desarrollo. Ensamblados!! Estructura de un Ensamblado!! En general, la estructura lógica de un ensamblado estático consta de cuatro elementos:!! El manifiesto del ensamblado, que contiene metadatos del ensamblado.!! Los metadatos que describen los tipos del ensamblado.!! El código en lenguaje intermedio (MSIL) que implementa los tipos.!! Un conjunto de recursos.!! Estos cuatro elementos lógicos pueden estar dispuesto físicamente de varias formas, de manera que esto nos conduce a la posibilidad de tener ensamblados de un único fichero y ensamblados multifichero. Estos ficheros físicos, cuando su contenido es metadatos y, opcionalmente, código intermedio MSIL, son denominados módulos. 32 16

Tema 3. Entornos de Desarrollo. Ensamblados!! Estructura de un Ensamblado Ensamblados de un solo fichero Un ensamblado puede estar formado por un único módulo, estableciéndose en este caso una correspondencia uno a uno entre el ensamblado (punto de vista lógico) y el fichero binario (punta de vista físico). Un ensamblado de un solo fichero tiene una estructura como la mostrada en la siguiente figura: 33 Tema 3. Entornos de Desarrollo. Ensamblados!! Estructura de un Ensamblado Ensamblados multifichero!! Un ensamblado puede estar compuesto por una serie de ficheros físicos, de forma que los elementos lógicos del ensamblado se encuentran distribuidos en una serie de módulos o en ficheros de recursos.!! En cada ensamblado solo puede haber un módulo que contenga el manifiesto, mientras que el resto de módulos solo pueden contener metadatos sobre los tipos y opcionalmente código intermedio.!! Una de las ventajas de la utilización de los ensamblados multifichero es la optimización de la descarga de un ensamblado, de forma que situando los tipos o recursos que son poco utilizados en módulos separados la descarga del ensamblado requiere una transferencia de datos, descargándose el resto de módulos únicamente en caso de que sean referenciados.!! Los módulos que componen un ensamblado multifichero están relacionados lógicamente entre sí por medio de la información contenida en el manifiesto del ensamblado, en el cual se referencia a los ficheros físicos que componen el ensamblado. 34 17

Tema 3. Entornos de Desarrollo. Ensamblados!! Estructura de un Ensamblado Ensamblados multifichero En la siguiente figura se muestra un ejemplo de ensamblado multifichero, el cual está compuesto por tres módulos (el que contiene el manifiesto y los dos restantes) y por un fichero de recursos (que contiene una imagen) 35 Tema 3. Entornos de Desarrollo. Ensamblados!! Manifiesto de un Ensamblado!! El manifiesto del ensamblado contiene un conjunto de metadatos que describe como los elementos contenidos en el ensamblado están relacionados. Un manifiesto puede ser almacenado en un fichero portable (un.exe o un.dll) junto metadatos de los tipos y código intermedio MSIL o en un fichero portable que contiene únicamente el manifiesto (esto puede darse en los ensamblados multifichero).!! Específicamente, el manifiesto de un ensamblado contiene los siguientes datos sobre el ensamblado:!! Identidad. La identidad de un ensamblado está compuesta por tres partes: un nombre, un número de versión y la cultura del ensamblado (información sobre la cultura o lenguaje soportado por el ensamblado).!! Lista de ficheros del ensamblado. Se incluye una lista con todos los ficheros que constituyen el ensamblado. Para cada fichero, el ensamblado almacena su nombre y un hash criptográfico con el contenido del fichero en el momento de la construcción del ensamblado, verificándose dicho hash en tiempo de ejecución para verificar que la unidad de despliegue es consistente. Continúa 36 18

Tema 3. Entornos de Desarrollo. Ensamblados!! Manifiesto de un Ensamblado!! Información sobre los ensamblados referenciados. Se almacena una lista con los ensamblados referenciados de los cuales se depende estáticamente. La información de cada dependencia esta formada por la identificación del ensamblado referenciado, la cual incluye un número de versión, que es utilizado para asegurar en tiempo de ejecución que es cargado la versión correcta del ensamblado referenciado.!! Información sobre los tipos y recursos exportados. Contiene información relativa al mapeo entre un tipo y el fichero físico que contiene sus metadatos y su implementación, lo cual es utilizado en tiempo de ejecución. Así mismo, también contiene las opciones de visibilidad de los tipos, los cuales pueden ser visibles solo dentro del ensamblado o visible para los consumidores fuera del ensamblado.!! Permisos solicitados. Los permisos solicitados por un ensamblado se agrupan en tres conjuntos: aquellos que son requeridos por el ensamblado para ejecutarse, los que son deseables que tenga el ensamblado (pero que sin ellos el ensamblado mantendrá alguna funcionalidad) y los que el autor del ensamblado nunca quiere que le sean concedidos a éste. 37 Tema 3. Entornos de Desarrollo. Ensamblados!! Clases de Ensamblados!! Existen dos tipos de ensamblados: los privados y los compartidos.!! Esta clasificación es bastante débil, pues no hay diferencias en la estructura de ambos tipos de ensamblados, sino que la diferencia radica en el uso que se le da a dichos ensamblados, que pueden ser privados a una aplicación o compartidos entre varias aplicaciones.!! Las diferencias reales entre ambos tipos de ensamblados residen en las convenciones de nombrado, las políticas de versiones y en los aspectos del despliegue: Ensamblados privados!! El nombre de un ensamblado debe ser único dentro de la aplicación, no existiendo la necesidad de un nombre global único.!! La política de versiones en el caso de los ensamblado privados es ignorada.!! Los ensamblados privados son desplegados en el directorio local de la aplicación o en uno de sus subdirectorios 38 19

Tema 3. Entornos de Desarrollo. Ensamblados!! Clases de ensamblados Ensamblados compartidos!! Nombrado: Los ensamblados compartidos utilizan los denominados nombres fuertes para satisfacer las restricciones de nombrado asociadas a los ensamblados compartidos. Los nombres fuertes satisfacen 3 restricciones:!! Garantizan la unicidad del nombre. Para lograr esto se utiliza criptografía de clave pública, la cual se basa en la utilización de un par de claves únicas, una privada y otra pública, utilizándose la clave privada para la generación del nombre del ensamblado, garantizándose su unicidad al garantizarse la unicidad de la clave privada.!! Previenen contra la suplantación del nombrado. No es posible que alguien realice una versión de un ensamblado y que lo utilice en el proceso de carga, en lugar de utilizar la versión con la que la aplicación fue construida.!! Proporciona una comprobación de integridad fuerte. El uso de nombres fuertes garantiza que los contenidos de un ensamblado no han cambiado con respecto al momento de construcción de la aplicación. 39 Tema 3. Entornos de Desarrollo. Ensamblados!! Clases de ensamblados Ensamblados compartidos!! Nombrado (continúa): Un nombre compartido consta de la siguiente información:!! Un nombre amigable (un nombre de texto) y, opcionalmente, la información relativa a la cultura del ensamblado.!! Un número de versión.!! Una clave pública.!! Una firma digital. El proceso de creación de un nombre fuerte es el siguiente: el autor del ensamblado, que constará de un nombre de texto, un número de versión y opcionalmente de información relativa a su cultura, firmará el fichero que contiene el manifiesto con su clave privada, incluyendo en dicho manifiesto la clave pública para que esté a disposición de los llamantes. 40 20