marcos de desarrollo -...
TRANSCRIPT
Marcos de Desarrollo Diseño e implementación de aplicaciones Web con .NET
Objetivos
Conocer el origen y las características de la plataforma .NET Estudiar el núcleo de la plataforma .NET: el .NET Framework Conocer herramientas de desarrollo e implementaciones alternativas
Contenido Introducción
Principales características
.NET Framework
Acceso a datos con ADO.NET
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Implementaciones alternativas
¿Qué es .NET? Plataforma de desarrollo y ejecución compuesta de
Entorno de Ejecución (Common Language Runtime) Bibliotecas de Funcionalidad (Class Library)
Lenguajes de Programación E.g. C#, VB .NET, COBOL, Perl, Phython
Compiladores Herramientas de Desarrollo (IDE & Tools) Documentación y Guías de Arquitectura
Contenido Introducción
Principales características
Acceso a datos con ADO.NET
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Implementaciones alternativas
Características de .NET Plataforma independiente del lenguaje
Múltiples lenguajes disponibles (C#, VB .NET, COBOL, Perl, Phython, Eiffel, etc.)
Código fuente se compila a Intermediate Language (IL) También denominado Microsoft Intermediate Language (MSIL) o Common
Intermediate Language (CIL) Se compila antes de ser ejecutado (no es interpretado) Sentencias IL manipulan tipos de datos comunes, compartidos por todos los
lenguajes de .NET Common Type System (CTS)
Todos los lenguajes proporcionados por Microsoft tienen la misma potencia y capacidad de acceso a los recursos y servicios que expone el .NET Framework No condiciona la elección del lenguaje
Características de .NET Plataforma de ejecución intermedia
En tiempo de ejecución, el Common Language Runtime (CLR) es el responsable de cargar y ejecutar una aplicación .NET
Utiliza compilación Just-In-Time (JIT) para traducir IL a código máquina El código .NET siempre es compilado, nunca interpretado No usa máquina virtual para ejecutar aplicaciones Código es compilado JIT la primera vez que se llama El proceso de compilación produce un fichero Windows ejecutable en formato
portable executable (PE). Implicaciones: El CLR nunca sabe, ni le importa, qué lenguaje fue usado para crear la aplicación o
componente Basta reemplazar el compilador para que el código funcione en otra plataforma (en teoría)
Características de .NET. Modelo de ejecución
Todos los lenguajes son compilados a IL Extraído de: Grimes, F. (2002). Microsoft. Net for Programmers: Manning.
Características de .NET Código gestionado (managed code)
Las aplicaciones .NET que se ejecutan bajo el esquema mostrado se dice que son aplicaciones gestionadas (managed applications) No se ejecutan directamente sobre el SO El CLR es el responsable de cargar y verificar el código, la recolección de basura
(Garbage Collector), ... La metadata es una característica clave en .NET
Describe tipos incluyendo sus campos, propiedades, firmas de los métodos y operaciones soportadas
Se genera automáticamente en tiempo de compilación Así, los componentes .NET son auto descriptivos y no se requiere
configuración adicional para que componentes escritos en diferentes lenguajes interoperen
Características de .NET Plataforma 100% Orientada a Objetos Permite el desarrollo de aplicaciones empresariales Modelo de programación único para todo tipo de aplicaciones (consola,
Web, aplicaciones móviles, etc.) y dispositivos de hardware (PC, PDA, SmartPhone, etc.)
IL vs. Java bytecode Java bytecode específicamente diseñado para soportar lenguaje Java,
mientras IL diseñado para soportar múltiples lenguajes Java Virtual Machine diseñada para permitir Java bytecode interpretado
o compilado, mientras IL fue diseñado explícitamente para compilación JIT (Just-In-Time Compilation) y no para interpretar código
Evolución de la plataforma .NET Versión Número de
Versión
Fecha de liberación
(Release Date)
Versión de Visual Studio
Novedades Instalado por defecto en Windows
1.0 1.0.3705.0 2002-02-13 VS .NET Visual Basic .NET, C#
1.1 1.1.4322.573 2003-04-24 VS .NET 2003
.NET Compact Framework, J# Windows Server 2003
2.0 2.0.50727.42 2005-11-07 VS 2005 Windows Server 2003 R2
3.0 3.0.4506.30 2006-11-06 Windows Vista, Windows Server 2008
3.5 3.5.21022.8 2007-11-19 VS 2008 WPF, WF, WCF , Card Space Windows 7, Windows Server 2008 R2
4.0 4.0.30319.1 2010-02-10 VS 2010 Entity Framework
4.5 4.5.50709.17929 2012-08-15 VS 2012 Windows 8, Windows Server 2012
Contenido Introducción
Principales características
.NET Framework
Arquitectura
Common Language Runtime
.NET Framework Class Library
Common Type System (CTS)
Common Language Specification (CLS)
Assemblies
CLR Hosting & Application Domains
Acceso a datos con ADO.NET
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Implementaciones alternativas
.NET Framework Paquete de software fundamental de la plataforma .NET. Incluye:
Entorno de ejecución (CLR) Bibliotecas de funcionalidad reutilizable (Class Library)
Tres variantes principales: .NET Framework Redistributable Package (CLR + CL) .NET Framework SDK (CLR + CL + compiladores, depuradores, etc.) .NET Compact Framework
Distribución libre y gratuita
Arquitectura del .NET Framework
Windows COM+ Services
Common Language Runtime
Base Class Library
ADO.NET
Common Language Specification
VB C++ C# J# …
.NET
Fra
mew
ork
Red
istr
ibut
able
.NE
T Fr
amew
ork
SD
K
.NET
Fra
mew
ork
Cla
ss L
ibra
ry
WinForms ASP.NET
WPF WCF
LINQ
WF Card Space
ADO.NET Entity Framework
Common Language Runtime El CLR es un entorno de ejecución que puede ser usado por distintos
lenguajes de programación (realmente IL) Es una implementación del estándar Common Language Infrastructure (CLI)
El CLR es el responsable de cargar y ejecutar una aplicación .NET Utiliza compilación JIT para traducir IL a código máquina
Además, gestiona las aplicaciones, haciéndose responsable de: Cargar, verificar y ejecutar código, la recolección de basura (Garbage
Collector), proteger las aplicaciones unas de otras, hacer cumplir las restricciones de seguridad, proporcionar servicios de depuración e incluir soporte para versiones y desarrollo
La gestión del código por parte del CLR proporciona una capa extra que desacopla la aplicación del SO
.NET Framework Class Library Conjunto de tipos básicos (clases, interfaces, etc.) que vienen incluidos
en el .NET Framework Los tipos están organizados en jerarquías lógicas de nombres,
denominados namespaces E.g. System.Collections, System.Data, System.Web, etc.
Los tipos son independientes del lenguaje de programación de alto nivel que se desee utilizar (C#, VB .NET, etc.)
Los tipos están disponibles para todos los lenguajes compatibles con la plataforma .NET
Es extensible y totalmente orientada a objetos
.NET Framework Class Library Se divide en dos partes
Base Class Library Incluye un pequeño subconjunto de la CL Clases en mscorlib.dll y algunas de las clases en System.dll y
System.core.dll Las clases de la BCL están disponibles en las distinas
implementaciones del .NET Framework
Framework Class Library Es un superconjunto de las clases de la BCL formado por la librería
completa de clases incluidas con el .NET Framework Incluye un conjunto muy extenso de librerías como WinForms,
ADO.NET, ASP.NET, LINQ, WPF y WCF, entre otras
Enterprise Library Biblioteca de clases (Application Blocks) que agrupa funcionalidades
comunes en aplicaciones empresariales
Common Type System (CTS) El Common Type System (CTS) o Sistema de Tipos Común es el
conjunto de reglas que han de seguir las definiciones de tipos de datos para que el CLR las acepte Es clave para la integración multilenguaje
Define un conjunto común de tipos de datos orientados a objetos Filosofía: Todo es un objeto
Todo tipo hereda directa o indirectamente del tipo System.Object
Todo lenguaje de programación .NET debe implementar los tipos definidos por el CTS (no tiene porqué implementar todos, pero sí un subconjunto: CLS)
Define tipos valor y tipos referencia
Common Language Specification (CLS) El CLS define el mínimo conjunto de características que todos los lenguajes deben
soportar, si pretenden ajustarse al CLR y soportar operatividad multilenguaje Todos los componentes desarrollados y compilados de acuerdo con la especificación
CLS pueden interactuar entre sí, independientemente del lenguaje de programación de alto nivel en el que fueron escritos
El CLR/CTS soporta muchas más características que el subconjunto definido por el CLS Si la operatividad multilenguaje no es un objetivo, se pueden desarrollar tipos más
ricos, limitados únicamente por el conjunto de características del lenguaje que se esté utilizando
El CLS define reglas a las que se deben adherir los tipos y los métodos visibles externamente, para que éstos sean accesibles desde cualquier lenguaje de programación Las reglas del CLS no afectan a código que es accesible únicamente desde el
ensamblado (assembly) en que se define Librerías que se adhieren al CLS se dicen CLS-compliant
El CLR/CTS ofrece un conjunto de características Algunos lenguajes exponen un gran subconjunto del CLR/CTS
Programando en IL se podrían utilizar todas las características del CLR/CTS El CLS define el mínimo conjunto de características que todos los lenguajes
deben soportar
Los lenguajes ofrecen un subconjunto del CLR/CTS y un superconjunto del CLS (pero no necesariamente el mismo superconjunto)
Extraído de: Richter, J. (2003). Applied Microsoft. NET framework programming: Microsoft Press.
Common Language Specification (CLS)
CLS. Lenguajes compatibles Ada
APL
Basic (Visual Basic)
C#
C
C++
Delphi
Java
COBOL
Component Pascal (Queensland U Tech)
ECMAScript (JScript)
Eiffel (Monash U.)
Fortran
F#
Haskell (Utrecht U.)
JavaScript
Lisp
Mondrian (Utrecht)
Mercury (Melbourne U.)
Oberon (Zurich University)
Perl
Prolog (P#)
Python
Scheme (Northwestern U.)
SmallTalk
…
Assemblies Un Assembly o Ensamblado es la unidad mínima de ejecución,
distribución, instalación y versionado de aplicaciones .NET Extensión .dll o .exe
Todo código ejecutable debe formar parte de un Assembly
Contienen: Código IL Manifest (Manifiesto): describe el conjuntos de archivos que forman el
ensamblado METADATA: información sobre sí mismos y los recursos de los que dependen (son
autodescriptivos)
El CLR utiliza la metadata al cargar y ejecutar el ensamblado
Assemblies Aplicación .NET se compone de uno o más ensamblados
Pueden ser: Privados: sólo pueden ser usados por una aplicación (opción por defecto) Compartidos: se instalan en la Global Assembly Cache y pueden ser
usados por varias aplicaciones
Combinando módulos gestionados en Assemblies Extraído de: Richter, J. (2003). Applied Microsoft. NET framework programming: Microsoft Press.
Assemblies
Assemblies Herramienta IL Dissasembler (ildasm.exe), incluida en el .NET
Framework SDK
Global Assembly Cache (GAC) Es un repositorio centralizado de ensamblados en el cual se instalan todos
los ensamblados que serán utilizados por múltiples aplicaciones en la misma máquina
Para registrar un ensamblado en la GAC es necesario utilizar la herramienta gacutil.exe, incluida en el .NET Framework SDK
Obligatorio un nombre completo distinto para cada librería (no confundir con el nombre del archivo) Se consigue con tecnología de cifrado de clave pública
Es posible distinguir entre versiones de un mismo ensamblado y éstas pueden convivir sin ningún conflicto Cada aplicación utiliza la versión de la librería que necesite Soluciona problema DLL Hell
Actualizaciones y desinstalaciones más simples
Global Assembly Cache (GAC) En XP: Panel de Control > Herramientas Administrativas >
.NET Framework Configuration Administrative tool
Global Assembly Cache (GAC)
Global Assembly Cache (GAC) En W7, directamente desde Windows Explorer
%windir%\assembly\ E.g. C:\WINDOWS\assembly
CLR Hosting & Application Domains Una aplicación .NET necesita una pieza de código llamada Runtime
Host para ejecutarse El Runtime Host carga el CLR en un proceso, crea Application Domains
dentro del proceso y carga y ejecuta el código del usuario dentro de esos Application Domains
Código Gestionado
CLR CLR Host
AppDomain 1
Código Gestionado
AppDomain N
CLR Hosting & Application Domains Los Application Domains son procesos virtuales dentro del CLR
Se ejecutan dentro de un proceso del Sistema Operativo Un proceso puede contener varios Application Domains Más eficiente que múltiples procesos del SO
Todos los ensamblados que conforman una aplicación siempre son cargados en un Application Domain
Los Application Domains proporcionan un aislamiento entre aplicaciones, que garantiza: Una aplicación pueda ser detenida independientemente del resto Una aplicación no pueda acceder directamente a código en ejecución de
otra aplicación Un fallo en una aplicación no afecte al resto de aplicaciones
Desarrollo (VisualStudio .NET)
Ejecución (Plataforma .NET)
Análisis y diseño
Código fuente
Compilador
Código IL (Ensamblado)
Verificación
Compilación (JIT)
Código Nativo
Ejecución (CLR)
Resumen
Contenido Introducción
Principales características
.NET Framework
Acceso a datos con ADO.NET
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Implementaciones alternativas
Acceso a datos con ADO.NET System.Data
OleDb
SqlClient
OracleClient
Common
Odbc SqlTypes
System.Xml
Serialization
XPath
XSLT
Schema
Entorno Desconectado Entorno Conectado
ADO.NET: Arquitectura
Acceso a Bases de Datos Relacionales: Entorno Conectado Los usuarios están constantemente conectados a la fuente de datos Ventajas:
Mejor control de concurrencia Los datos se mantienen actualizados
Desventajas: Se requiere una conexión constante (consume recursos del servidor) Escalabilidad limitada por cantidad de conexiones
En un escenario conectado, los recursos se mantienen en el servidor hasta que la conexión se cierra
Pasos 1) Abrir Conexión 2) Ejecutar Comando 3) Procesar Filas en DataReader 4) Cerrar DataReader 5) Cerrar Conexión
Acceso a Bases de Datos Relacionales: Entorno Conectado
Acceso a Bases de Datos Relacionales: Entorno Desconectado Una parte de los datos del repositorio central se copia y modifica en
forma local, para luego sincronizarse con éste
Ventajas Forma cómoda de trabajar, si los datos únicamente se necesitan para
lectura
Desventajas Los datos no están sincronizados Sólo es válido para ciertos escenarios
En un escenario desconectado, los recursos no se mantienen en el servidor mientras los datos se procesan
Pasos 1) Abrir Conexión 2) Llenar DataSet mediante DataAdapter 3) Cerrar Conexión 4) Procesar DataSet 5) Abrir Conexión 6) Actualizar fuente de datos mediante DataAdapter 7) Cerrar Conexión
Acceso a Bases de Datos Relacionales: Entorno Desconectado
ADO.NET Entity Framework Es un OR/M (Object Relational / Mapping) para .NET Incluído en .NET Framework 3.5 SP1 y en VS2008 SP1 (11 de agosto de
2008) A día de hoy ya proporciona soporte para la mayoría de los SGBD
relacionales Mapeado:
Store Schema Definition Language (SSDL) Conceptual Schema Definition Language (CSDL) Mapping Specificacion Language (MSL) ⇒ VS 2008 incluye asistente gráfico para hacerlo
ADO.NET Entity Framework
Arquitectura Global de Entity Framework Extraído de: Lerman, J. (2009). Programming Entity Framework: O’Reilly.
Contenido Introducción
Principales características
.NET Framework
Acceso a datos con ADO.NET
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Implementaciones alternativas
Aplicaciones Web: ASP.NET Versión para la plataforma .NET de la tecnología ASP
(Active Server Pages) Tres partes muy diferenciadas:
Formularios Web (Web Forms) Controles (Server Controls)
Controles HTML Controles HTML Servidor (runat=server) WebControls
Servicios Web
Aplicaciones Web: ASP.NET System.Web
Caching
Configuration
Services UI
SessionState
HtmlControls
WebControls
Description
Discovery
Security
Protocols
Contenido Introducción
Principales características
.NET Framework
Acceso a datos con ADO.NET
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Implementaciones alternativas
Herramientas de Desarrollo Visual Studio
Herramientas de desarrollo gratuitas http://www.microsoft.com/express
Diseñadas para estudiantes y principiantes Hay varias ediciones, según el tipo de aplicación y el lenguaje:
Visual Web Developer XXXX Express, Visual Basic XXXX Express, Visual C# XXXX Express, Visual C++ XXXX Express, Windows Phone Developer Tools, SQL Server Express, etc.
Características avanzadas, por ejemplo: Refactoring
Code Snippets
Diseñadores WYSIWYG para Windows Presentation Foundation
Depuradores
Intellisense
Persistencia mediante “Entity Framework”
Herramientas de Desarrollo Express Editions
Edición gratuita: SQL Server 2008 Express (Runtime only)
Motor de Base de Datos
SQL Server 2008 Express with Tools + SQL Server Management Studio Basic
SQL Server 2008 Express with Advanced Services: + Motor de búsqueda de datos de texto
+ Servicios para la creación de informes
Soporta LINQ, Entity Data Model y ADO.NET Entity Framework Funcionalidades para la gestión de datos complejos
Nuevos tipos de datos Date y Time mejorados
Nuevos tipos de datos: “Filestream” y “HierarchyID”
Proporciona “T-SQL Intellisense” Integración con Visual Studio 2008 + SP1
Distribución a partir de noviembre de 2008
Herramientas de Desarrollo Express Editions: SQL Server Express
Contenido Introducción
Principales características
.NET Framework
Acceso a datos con ADO.NET
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Implementaciones alternativas
Implementaciones Alternativas Otras implementaciones del “Framework .NET”:
Portable .NET MONO Project (Novell Corporation)
Entornos de desarrollo
MonoDevelop SharpDevelop
Portable .NET http://www.dotgnu.org Implementación limitada de la plataforma .NET bajo licencia GNU
GPL Soporta las librerías:
Base Class XML Windows Forms
Persigue el funcionamiento de .NET sobre cualquier tipo de plataforma De momento, tiene un alcance limitado El proyecto tiene como objetivos principales de desarrollo de aplicaciones
“stand-alone” y servicios Web en C#
Mono Project http://www.mono-project.com Incluye
Implementación de Common Language Infrastructure (CLI)
Librería clases sobre CLR
Compilador C#
Entornos ejecución: Linux, Unix, Solaris
MacOS X
Windows
Portabilidad .NET – MONO MoMA
Patrocinado por Novell Corporation
Mono develop http://www.monodevelop.org
SharpDevelop SharpDevelop. The Open Source Development Environment for .NET:
http://www.sharpdevelop.com Soporta:
C# Visual Basic .NET
SharpDevelop SharpDevelop:
Requiere la instalación previa del framework .NET 3.5 Sistemas operativos Windows XP SP2 y posteriores
Características Soporte para compiladores Microsoft Integración con “NUnit” y “NAnt” Integración con la documentación de .NET 3.5
Funcionalidades: “IntelliSense”, soporte para “snippets”, código autocompletable Diseñador visual de “Windows Forms” Navegador de clases y utilidades de definición de código Diseñador de bases de datos visual Conversión de código C# - VisualBasic
Bibliografía Recomendada:
Grimes, F. (2002). Microsoft. Net for Programmers: Manning.
Complementaria: Richter, J. (2003). Applied Microsoft. NET framework
programming: Microsoft Press.
Recursos Open Source Software in C#
http://csharp-source.net/ IDEs Librerías, Fuentes, etc.
Project Hosting for Open Source Software http://www.codeplex.com/
MSDN Code Gallery: http://code.msdn.microsoft.com/ Aplicaciones, snippets Ejemplos, guías