introducción a la plataforma -...
TRANSCRIPT
Integración de Sistemas
Curso 2008 - 2009 1
Introducción a la plataforma .NET
Integración de SistemasIntegración de SistemasParte II. Diseño e implementación de aplicaciones Web con .NET
Contenido
IntroducciónNET Framework.NET Framework
Acceso a datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Integración de Sistemas
Curso 2008 - 2009 2
¿Qué no es .NET?
.NET no es un Sistema Operativo
.NET no es un Lenguaje de Programación
.NET no es un Entorno de Desarrollo
.NET no es un Servidor de Aplicaciones
¿Qué es .NET?
Plataforma de Desarrollo compuesta de
E t d Ej ió (C L R ti )Entorno de Ejecución (Common Language Runtime)Common Type System
Common Language Specification
Bibliotecas de Funcionalidad (Class Library)
Lenguajes de Programación
Compiladores
Herramientas de Desarrollo (IDE & Tools)
Documentación y Guías de Arquitectura
Integración de Sistemas
Curso 2008 - 2009 3
Línea del tiempo de .NETVisual Studio 6.0Visual BasicVBAVBAVisual FoxProVBScriptC++J++JScriptASP
Visual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#
Visual Studio 2008.NET Framework 3.5.NET Compact Framework 3.5
2000 2001 2002 2003 2004 2005 2006 2008
Visual Studio 2005 (“Whidbey”).NET Framework 2.0 (“Whidbey”).NET Compact Framework 2.0 (“Whidbey”)
Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#
Características de .NET
Plataforma independiente del lenguaje
Múltiples lenguajes (C# VB NET COBOL Perl Phython Eiffel etc )Múltiples lenguajes (C#, VB .NET, COBOL, Perl, Phython, Eiffel, etc.)
Código fuente se compila a MSIL (Microsoft Intermediate Language)MSIL se compila antes de ser ejecutado (no es interpretado)Sentencias MSIL manipulan tipos de datos comunes, compartidos por todos los lenguajes de .NET
Juntos forman el Common Type System (CTS)
Todos los lenguajes proporcionados por Microsoft tienen la misma i id d d l i ipotencia y capacidad de acceso a los recursos y servicios que expone
el .NET FrameworkNo condiciona la elección del lenguaje
Integración de Sistemas
Curso 2008 - 2009 4
Características de .NET
Plataforma de ejecución intermedia
El C L R ti (CLR) l bl dEl Common Language Runtime (CLR) es el responsable de cargar y ejecutar una aplicación .NET
Utiliza compilación Just-In-Time (JIT) para traducir MSIL a código máquina
Código .NET siempre es compilado, nunca interpretadoNo usa máquina virtual para ejecutar aplicaciones
Código es compilado JIT la primera vez que se llama
Proceso de compilación genera fichero ejecutable en formato portable executable (PE). Implicaciones:
CLR nunca sabe, ni le importa, que lenguaje fue usado para crear la aplicación o componente
Para que el código funcione en otra plataforma basta reemplazar el compilador JIT
Características de .NET
Plataforma 100% Orientada a Objetos ⇒ no existen tipos primitivos
P it l d ll d li i i lPermite 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.)
Código gestionadoAdemás de compilar, CLR 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
Además del MSIL, compiladores generan MetadataMetadata describe tipos
Componentes .NET son autodescriptivos
Integración de Sistemas
Curso 2008 - 2009 5
Características de .NETModelo de ejecución
Todos los lenguajes son compilados a ILExtraído de: Grimes, F. (2002). Microsoft. Net for Programmers: Manning.
MSIL vs. Java bytecode
Java bytecode específicamente diseñado para soportar lenguaje Java, mientras MSIL diseñado para soportar múltiples lenguajes
Java Virtual Machine diseñada para permitir Java bytecodeinterpretado o compilado, mientras MSIL fue diseñado explícitamente para compilación JIT (Just-In-Time Compilation)
Integración de Sistemas
Curso 2008 - 2009 6
Common Type System (CTS)
El Common Type System (CTS) o Sistema de Tipo Común es el conjunto de reglas que han de seguir las definiciones de tipos de datos para que el CLR las acepte
Define un conjunto común de tipos de datos orientados a objetos
Todo lenguaje de programación .NET debe implementar los tipos definidos por el CTS
Todo tipo hereda directa o indirectamente del tipo System.Object
Define tipos valor y tipos referencia
Tipos valor vs. Tipos referenciaCLR administra dos segmentos de memoria: Stack (Pila) y Heap (Montón)
Ti l (i t t b lTipos valor (i.e: enteros, caracteres, boleanos, etc.) se almacenan en el Stack
Tipos referencia (i.e: strings, clases definidas por el usuario, etc.) en el Heap
El Stack es liberado automáticamente una vez finaliza el procedimiento o el bloque de código, mientras que el Heap es administrado por el GC
Ti f i d l i lTipo referencia puede ser nulo, tipo valor no
Posible crear nuevos objetos valor (e.g.C# struct)
Para preservar filosofía “Todo es un objeto”, .NET provee un tipo referencia correspondiente a cada tipo valor
Integración de Sistemas
Curso 2008 - 2009 7
Assemblies
Un Assembly o Ensamblado es la unidad mínima de ejecución, distribución, instalación y versionado de aplicaciones .NET
Normalmente extensión dll o exeNormalmente, extensión .dll o .exe
Todo código ejecutable debe formar parte de un Assembly
Contienen:Código MSILManifest (Manifiesto)
METADATA: información sobre sí mismos y los recursos de los que dependen (son autodescriptivos)p )
Aplicación .NET se compone de uno o más ensamblados
Pueden ser privados (opción por defecto) o compartidos (se instalan en la Global Assembly Cache)
Assemblies
Combinando módulos gestionados en AssembliesExtraído de: Richter, J. (2003). Applied Microsoft. NET framework programming: Microsoft Press.
Integración de Sistemas
Curso 2008 - 2009 8
Assemblies
Herramienta MSIL Dissasembler (ildasm.exe), incluida en el .NET Framework SDK
Assemblies. 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áquinamisma 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 distinto para cada librería
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 conflictopueden 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
Integración de Sistemas
Curso 2008 - 2009 9
Assemblies. Global Assembly Cache (GAC)
Panel de Control > Herramientas Administrativas > .NET Framework Configuration Administrative tool
Assemblies. Global Assembly Cache (GAC)
Integración de Sistemas
Curso 2008 - 2009 10
Contenido
Introducción
NET Framework.NET FrameworkAcceso a datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
.NET Framework
Paquete de software fundamental de la plataforma .NET. Incluye:Entorno de ejecución (Runtime)j ( )
Bibliotecas de funcionalidad reutilizable (Class Library)
Tres variantes principales:.NET Framework Redistributable Package (R + CL)
.NET Framework SDK (R + CL + compiladores, depuradores, etc.)
.NET Compact Framework
Distribución libre y gratuita
Instalado por defecto en Windows 2003 Server, Windows XP SP2 y Vista
Integración de Sistemas
Curso 2008 - 2009 11
Arquitectura del .NET Framework
VB C++ C# J#
ADO NET
Common Language Specification
VB C++ C# J# …
ram
ewor
k rib
utab
le
T Fr
amew
ork
SD
K
T Fr
amew
ork
ass
Libr
ary
WinForms ASP NET
WPF WCF
LINQ
WF Card Space
ADO.NET Entity Framework
Windows COM+ Services
Common Language Runtime
Base Class Library
ADO.NET
.NET
Fr
Red
istr
.NE
T
.NET Cla WinForms ASP.NET
Arquitectura del .NET FrameworkCommon Language Runtime
El CLR es un entorno de ejecución que puede ser usado por distintos lenguajes de programación
El CLR es el responsable de cargar y ejecutar una aplicación .NET
Utiliza compilación Just-In-Time (JIT) para traducir MSIL a código máquina
Además de compilar, CLR 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 deproteger 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
Integración de Sistemas
Curso 2008 - 2009 12
Arquitectura del .NET Framework.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
Los tipos son independientes del lenguaje de programación de alto nivel que se desee utilizar (C#, VB .NET, etc.)
Es extensible y totalmente orientada a objetos
Estas clases están disponibles para todos los lenguajes .NET
Arquitectura del .NET Framework.NET Framework Class Library
Se divide en dos partes
Base Class LibraryBase Class Library
Incluye un pequeño subconjunto de la class library y es el núcleo de clasees que constituyen el API básica del CLR
Clases en mscorlib.dll y algunas de las clases en System.dll y System.core.dll
Las clases de la BCL están disponibles 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 extemsp de librerías como WinForms, ADO.NET, ASP.NET, LINQ, WPFy WCF, entre otras.
Integración de Sistemas
Curso 2008 - 2009 13
Arquitectura del .NET FrameworkCommon Language Specification
El CLS define el mínimo conjunto de características que todos los lenguajes deben soportar, si pretenden ajustarse al CLR y soportar operatividad multilenguajep g j
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 solo por el conjunto de características del lenguaje
El CLS define reglas a las que se deben adherir los tipos y los métodosEl 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 CLS-compatible
Las reglas del CLS no afectan a código que es accesible sólo desde el asembly en que se defineLibrerías que se adhieren al CLS se dicen CLS-compliant
Arquitectura del .NET FrameworkCommon Language Specification
El CLR/CTS ofrece un conjunto de características
Algunos lenguajes exponen un gran subconjunto del CLR/CTSAlgunos lenguajes exponen un gran subconjunto 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.
Integración de Sistemas
Curso 2008 - 2009 14
Arquitectura del .NET FrameworkCommon Language Specification. Lenguajes compatibles
Ada Haskell (Utrecht U.)
APL
Basic (Visual Basic)
C#
C
C++
Delphi
Java
COBOL
Component Pascal
JavaScript
Lisp
lcc (MS Research Redmond)
Mondrian (Utrecht)
ML (MS Research Cambridge)
Mercury (Melbourne U.)
Oberon (Zurich University)
Oz (Univ of Saarlandes)
Perl(Queensland U Tech)
ECMAScript (JScript)
Eiffel (Monash U.)
Fortran
Prolog
Python
Scheme (Northwestern U.)
SmallTalk
CLR Hosting & Application Domains
Una aplicación .NET necesita una pieza de código llamada RuntimeHost para ejecutarse
El Runtime Host carga el Runtime (CLR) en un proceso, crea Application Domains dentro del proceso y carga y ejecuta el código del usuario dentro de esos Application Domains
CLRCLR Host
Código Gestionado
CLRAppDomain 1
Código Gestionado
AppDomain N
Integración de Sistemas
Curso 2008 - 2009 15
CLR Hosting & Application Domains
Los Application Domains son procesos virtuales dentro del CLRSe ejecutan dentro de un proceso del Sistema OperativoUn proceso puede contener varios Application DomainsMá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:p , q g
Una aplicación pueda ser detenida independientemente del restoUna aplicación no pueda acceder directamente a código en ejecución de otra aplicaciónUn fallo en una aplicación no afecte al resto de aplicaciones
Funcionamiento: Resumen
Desarrollo EjecuciónDesarrollo(VisualStudio .NET)
Ejecución(Plataforma .NET)
Análisis y diseño
Código fuente
Compilador
Verificación
Compilación(JIT)
Código Nativop
Código MSIL(Ensamblado)
Código Nativo
Ejecución(CLR)
Integración de Sistemas
Curso 2008 - 2009 16
Contenido
Introducción
NET Framework.NET Framework
Acceso a datos con ADO .NETWindows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Acceso a datos con ADO.NET
System.Data
OleDbSqlClient
OracleClientCommon
Odbc SqlTypes
System.XmlSerialization
XPathXSLT
Schema
Integración de Sistemas
Curso 2008 - 2009 17
ADO.NET - Arquitectura
ADO.NET - DataSet
DataSet DataTableDataSet
DataTableDataTable
DataTable
DataRowDataRow
DataColumnDataColumn
RelationsRelations
DataRelationDataRelationXML SchemasXML Schemas
Integración de Sistemas
Curso 2008 - 2009 18
Acceso a Bases de Datos Relacionales: Entorno Conectado
Los usuarios están constantemente conectados a la fuente de datos
Ventajas:Ventajas:
Mayor seguridad
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
Acceso a Bases de Datos Relacionales: Entorno Conectado
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 D t R d3) Procesar Filas en DataReader
4) Cerrar DataReader
5) Cerrar Conexión
Integración de Sistemas
Curso 2008 - 2009 19
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
Acceso a Bases de Datos Relacionales: Entorno Desconectado
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
Integración de Sistemas
Curso 2008 - 2009 20
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 deIncluí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)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
Objetos de servicio
EntityObject (ModeloConceptual, clase base de los objetos de datos, …)EntityObject (ModeloConceptual, clase base de los objetos de datos, …)
ObjectContext (Gestión de la conexión, almacén en memoria de objetos, …)
ObjectStateManager (Gestiona el estado, identidad, cambios en los objetos de datos, …)
Las consultas pueden realizarse
Entity SQL
Indep. del SGBD
Strings (Interpretados en tiempo de ejecución)
LINQ to Entities
Lenguaje común y semántico
Integración de Sistemas
Curso 2008 - 2009 21
ADO.NET Entity FrameworkEjecución de consultas
Contenido
Introducción
NET Framework.NET Framework
Acceso a datos con ADO .NET
Windows FormsAplicaciones Web: ASP.NET
Herramientas de desarrollo
Integración de Sistemas
Curso 2008 - 2009 22
Windows Forms
Una clase base común: ControlRepresenta un elemento de la interfaz gráfica
Resto de elementos derivan de ControlFormulario Windows (Form)Básicos (TextBox) y extendidos (DataGrid)
Funcionalidad encapsulada en propiedades y eventos
System Windows Forms
Windows Forms
System.Drawing
System.Windows.FormsDesign ComponentModel
System.DrawingDrawing2DImaging
PrintingText
Integración de Sistemas
Curso 2008 - 2009 23
Contenido
Introducción
NET Framework.NET Framework
Acceso a datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NETHerramientas de desarrollo
Aplicaciones Web: ASP.NET
Versión para la plataforma .NET de la tecnología ASP (Active Server Pages)( g )
Tres partes muy diferenciadas:
Web Forms
Server Controls
Web Services
Integración de Sistemas
Curso 2008 - 2009 24
System.Web
Aplicaciones Web: ASP.NET
System.WebServices UI
HtmlControls
WebControls
Description
Discovery
Protocols
CachingConfiguration SessionState
Security
Protocols
Arquitectura de aplicaciones Web con ASP.NET
VistaUI Pages
(.htm)Web Form
(.aspx)
Lógica Negocio
Graphic Files
( )
User Controls(.ascx)
Code-Behind File(.aspx.vb or .aspx.cs)
Proxy ADO.NET RCW
( p )
Datos
XML Web Services(.asmx)
.NET Objects
Data Source
COM+Services
COMObjects
Integración de Sistemas
Curso 2008 - 2009 25
Contenido
Introducción
NET Framework.NET Framework
Acceso a datos con ADO .NET
Windows Forms
Aplicaciones Web: ASP.NET
Herramientas de desarrollo
Testers
Herramientas de desarrollo: Visual Studio 2008
Microsoft ®
Visual Studio® 2008
Part Timers
Profesionales
Consultores
Desarrolladores
Arquitectos
VB6 Devs
Visual Studio® 2008Team System
Microsoft ®
Visual Studio® 2008Professional EditionMicrosoft ®
Visual Studio® 2008
Novatos
Entusiastas
Estudiantes
Hobbyists
Part-TimersStandard Edition
Integración de Sistemas
Curso 2008 - 2009 26
Herramientas de desarrollo gratuitas: : http://www.microsoft.com/express
Diseñadas para estudiantes y principiantes
Visual Studio 2008 Express Editions
Diseñadas para estudiantes y principiantesHay varias ediciones, según el tipo de aplicación y el lenguaje:
Visual Web Developer 2008 Express, Visual Basic 2008 Express, Visual C# 2008 Express y Visual C++ 2008 Express y SQL Server Express
Características avanzadas, por ejemplo:RefactoringgCode SnippetsDiseñadores WYSIWYG para Windows Presentation FoundationDepuradoresIntellisensePersistencia mediante “Entity Framework”
SQL Server 2005 Express
Es una edición gratuita
I l i f d d i i ió di d lIncluye una interfaz de administración y un editor de consultas: SQL Server Management Studio Express
Tamaño máximo de base: 4 Gb
No tiene un número máximo conexiones concurrentes
Integración con Visual Studio 2005/2008Integración con Visual Studio 2005/2008
Mecanismos de seguridad:Autenticación, Autorización y AuditoríaCifrado de datos
Integración de Sistemas
Curso 2008 - 2009 27
SQL Server 2008 Express
Nueva 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 FrameworkFuncionalidades para la gestión de datos complejos
Nuevos tipos de datos Date y Time mejoradosNuevos 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
Recursos libresOtras implementaciones del “framework .NET”:
Portable .NET
MONO ProjectMONO Project
Entornos de desarrollo
MonoDevelop
SharpDevelop
Repositorios:
Open Source Software in C#
http://csharp-source.net/p p
IDEs
Librerías, Fuentes, etc.
MSDN Code Gallery:http://code.msdn.microsoft.com/
Aplicaciones, snippets
Ejemplos, guías
Integración de Sistemas
Curso 2008 - 2009 28
Portable .NET
http://www.dotgnu.org
Implementación limitada de la plataforma NET bajo licencia GNUImplementación limitada de la plataforma .NET bajo licencia GNU GPL
Soporta las librerías:
Base Class
XML
Windows Forms
P i l f i i t d NET b l i ti dPersigue el funcionamiento de .NET sobre cualquier tipo de plataforma
De momento, tiene un alcance muy limitado
El proyecto tiene como objetivos principales de desarrollo de aplicaciones “stand-alone” y servicios Web en C#
Mono Projecthttp://www.mono-project.com
Incluye
CLI C L I f t tCLI: Common Language Infrastructure
Librería clases sobre CLR
Compilador C#
Entornos ejecución:
Linux, Unix, Solaris
MacOS X
WindowsWindows
Portabilidad .NET – MONO
MoMA
Patrocinado por Novell Corporation
Integración de Sistemas
Curso 2008 - 2009 29
Mono develop
http://www.monodevelop.org
Sharp Develop
SharpDevelop. The Open Source Development Environment for .NET: http://www.sharpdevelop.com
Soporta:C#
Visual Basic .NET
Integración de Sistemas
Curso 2008 - 2009 30
SharpDevelop
SharpDevelop:Requiere la instalación previa del framework .NET 3.5Sistemas operativos Windows XP SP2 y posteriores
CaracterísticasSoporte para compiladores MicrosoftIntegración con “NUnit” y “NAnt”Integración con la documentación de .NET 3.5
Funcionalidades:“IntelliSense”, soporte para “snippets”, código autocompletable, p p pp , g pDiseñador visual de “Windows Forms”Navegador de clases y utilidades de definición de códigoDiseñador de bases de datos visualConversión de código C# - VisualBasic
Recursos libresOpen Source Software in C#
http://csharp-source.net/
IDEs
Librerías, Fuentes, etc.
MSDN Code Gallery:
http://code.msdn.microsoft.com/
Aplicaciones, snippets
Ejemplos, guías