Post on 22-Dec-2015
description
2
ObjetivoObjetivo
Presentar una introducción a la plataforma de Presentar una introducción a la plataforma de desarrollo Microsoft .NET, describiendo sus desarrollo Microsoft .NET, describiendo sus principios básicos de funcionamiento, su principios básicos de funcionamiento, su arquitectura de componentes y sus principales arquitectura de componentes y sus principales bibliotecas reutilizables, mostrando además las bibliotecas reutilizables, mostrando además las novedades introducidas en la última versión de novedades introducidas en la última versión de la misma.la misma.
3
Temas a TratarTemas a Tratar
La tecnología y .NETLa tecnología y .NET
Introducción a Microsoft .NETIntroducción a Microsoft .NET
Componentes FundamentalesComponentes Fundamentales
Funcionamiento Interno del CLRFuncionamiento Interno del CLR
Bibliotecas PrincipalesBibliotecas Principales
9
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NET ¿Qué no es .NET?¿Qué no es .NET? ¿Qué es .NET?¿Qué es .NET? .NET Como evolución de COM.NET Como evolución de COM
10
Paradigmas de ProgramaciónParadigmas de Programación
19801980 19901990 20002000
Fun
cion
alid
ad
Fun
cion
alid
ad
Win16Win16 Win32Win32COMCOM
MFCMFCComponentes
ComponentesServiciosServicios
APIsAPIs
Windows3.0
11
¿Qué NO es .NET?¿Qué NO es .NET?
.NET no es un Sistema Operativo.NET no es un Sistema Operativo
.NET no es un Lenguaje de Programación.NET no es un Lenguaje de Programación
.NET no es un Entorno de Desarrollo.NET no es un Entorno de Desarrollo
.NET no es un Servidor de Aplicaciones.NET no es un Servidor de Aplicaciones
.NET no es un producto empaquetado que se .NET no es un producto empaquetado que se pueda comprar como talpueda comprar como tal
12
¿Qué es .NET?¿Qué es .NET?Plataforma de Desarrollo compuesta dePlataforma de Desarrollo compuesta de Entorno de Ejecución (Runtime)Entorno de Ejecución (Runtime) Bibliotecas de Funcionalidad (Class Library)Bibliotecas de Funcionalidad (Class Library) Lenguajes de ProgramaciónLenguajes de Programación CompiladoresCompiladores Herramientas de Desarrollo (IDE & Tools)Herramientas de Desarrollo (IDE & Tools) Guías de ArquitecturaGuías de Arquitectura
La evolución de la plataforma COMLa evolución de la plataforma COM
13
Características de .NET (1/2)Características de .NET (1/2)
Plataforma de ejecución intermediaPlataforma de ejecución intermedia
100% Orientada a Objetos100% Orientada a Objetos
MultilenguajeMultilenguaje
Plataforma Empresarial de Misión CríticaPlataforma Empresarial de Misión Crítica
14
Características de .NET (2/2)Características de .NET (2/2)
Modelo de Programación único para todo tipo de Modelo de Programación único para todo tipo de aplicaciones y dispositivos de hardwareaplicaciones y dispositivos de hardware
Se integra fácilmente con aplicaciones existentes Se integra fácilmente con aplicaciones existentes desarrolladas en plataformas Microsoftdesarrolladas en plataformas Microsoft
Se integra fácilmente con aplicaciones Se integra fácilmente con aplicaciones desarrolladas en otras plataformasdesarrolladas en otras plataformas
15
Plataforma de Ejecución IntermediaPlataforma de Ejecución Intermedia
Entorno de Desarrollo
Mic
roso
ft .
NET
Librerías de Funcionalidad
Lenguajes de Programación
Entorno de Ejecución
Sistema Operativo (Familia Windows)
Aplicación .NET
16
¿Qué es el .NET Framework?¿Qué es el .NET Framework?
Paquete de software fundamental de la Paquete de software fundamental de la plataforma .NET. Incluye:plataforma .NET. Incluye: Entorno de Ejecución (Runtime)Entorno de Ejecución (Runtime) Bibliotecas de Funcionalidad (Class Library)Bibliotecas de Funcionalidad (Class Library)
Se distribuye en forma libre y gratuitaSe distribuye en forma libre y gratuitaExisten tres variantes principales:Existen tres variantes principales: .NET Framework Redistributable Package.NET Framework Redistributable Package .NET Framework SDK.NET Framework SDK .NET Compact Framework .NET Compact Framework
Está instalado por defecto en Windows 2003 Está instalado por defecto en Windows 2003 Server o superiorServer o superior
17
Línea del tiempo de .NETLínea del tiempo de .NET
Visual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASP
Visual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#
.NET Framework 4.0Visual Studio 2010F#
2000 2001 2002 2003 2004 2005 2008 2010
Visual Studio 2005.NET Framework 2.0 .NET Compact Framework 2.0
Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#
Visual Studio 2008.NET Framework 3.5.NET Compact Framework 3.5
.NET Framework 3.0.NET Compact Framework 3.0WCF-WPF-WF
18
Temas a TratarTemas a Tratar
Introducción a Microsoft .NETIntroducción a Microsoft .NET
Componentes FundamentalesComponentes Fundamentales ArquitecturaArquitectura Common Language Runtime (CLR)Common Language Runtime (CLR) Microsoft Intermediate LanguageMicrosoft Intermediate Language AssembliesAssemblies .NET Class Library.NET Class Library Common Language Specification (CLS)Common Language Specification (CLS)
19
Windows COM+ Services
Common Language Runtime
Base Class Library
ADO.NET y XML
ASP.NET Windows Forms
Common Language Specification
VB C++ C# J# …
Arquitectura del .NET FrameworkArquitectura del .NET Framework.N
ET
Fra
mew
ork
Red
istr
ibut
able
.NE
T F
ram
ew
ork
SD
K.N
ET
Fram
ework
Class Library
21
CLR – Common Language RuntimeCLR – Common Language Runtime
El CLR es el motor de ejecución (runtime) El CLR es el motor de ejecución (runtime) de .NETde .NET
CaracterísticasCaracterísticas Compilación Just-In-Time (JIT)Compilación Just-In-Time (JIT) Gestión automática de memoria (Garbage Gestión automática de memoria (Garbage
Collector)Collector) Gestión de errores consistente (Excepciones)Gestión de errores consistente (Excepciones) Ejecución basada en componentes (Assemblies)Ejecución basada en componentes (Assemblies) Gestión de SeguridadGestión de Seguridad MultithreadingMultithreading
24
VB.NETVB.NETCódigoCódigoFuenteFuente
Compilador Compilador VB.NETVB.NET
C++.NETC++.NETC#C#
AssemblyAssemblyCódigo MSILCódigo MSIL
Sistema Operativo (Windows)Sistema Operativo (Windows)
Common Language RuntimeCommon Language Runtime
Compilador JITCompilador JIT
Código NativoCódigo Nativo
Código Código ManejadoManejado
ComponenteComponenteNo ManejadoNo Manejado
Modelo de Ejecución del CLRModelo de Ejecución del CLR
CompiladorCompiladorC#C#
CompiladorCompiladorC++ .NETC++ .NET
AssemblyAssemblyCódigo MSILCódigo MSIL
AssemblyAssemblyCódigo MSILCódigo MSIL
25
Debug EngineDebug Engine
CompiladorCompiladorJITJIT
Assembly en Assembly en la máquinala máquina
destinodestino
Modelo de Ejecución del CLRModelo de Ejecución del CLR
AssemblyAssembly
DesarrolloDesarrollo InstalaciónInstalación
InstalaciónInstalación
EjecuciónEjecución
AssemblyAssemblyLoaderLoaderSeguridadSeguridadClass Class
LoaderLoader
.exe Nativo.exe Nativo++
Tabla GC Tabla GC
Code Code ManagerManager
Garbage CollectorGarbage Collector
Manejador ExcepcionesManejador Excepciones
Soporte MultiThreadSoporte MultiThread
COM InteropCOM Interop
Policy<?xml version="1.0" encoding="utf-8" ?><configuration> <mscorlib> <security> <policy> <PolicyLevel version="1"> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="Nothing" Name="All_Code" Description="Code group grants no permissions and forms the root of the code group tree."> <IMembershipCondition class="AllMembershipCondition" version="1"/> <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"
26
Application DomainsApplication DomainsProcesos virtuales dentro del CLRProcesos virtuales dentro del CLR Se ejecutan dentro de un proceso del Sistema Se ejecutan dentro de un proceso del Sistema
OperativoOperativo Un proceso del sistema operativo puede contener Un proceso del sistema operativo puede contener
varios AppDomainsvarios AppDomains Más eficiente que múltiples procesos del sistema Más eficiente que múltiples procesos del sistema
operativooperativo Más eficiente en el intercambio de contexto de Más eficiente en el intercambio de contexto de
ejecuciónejecución
Un Assembly y sus tipos son siempre cargados Un Assembly y sus tipos son siempre cargados dentro de un AppDomaindentro de un AppDomainProvee una frontera para: Fallos, Tipos, Provee una frontera para: Fallos, Tipos, SeguridadSeguridad
27
Application Domains - CLR HostApplication Domains - CLR Host
Código Manejado
CLRCLR Host
AppDomain 1
Código Manejado
AppDomain N
29
¿Qué es un “Assembly”?¿Qué es un “Assembly”?
Un Assembly es la unidad mínima de ejecución, Un Assembly es la unidad mínima de ejecución, distribución, instalación y versionado de distribución, instalación y versionado de aplicaciones .NETaplicaciones .NET
MetadataMetadata
Código CompiladoCódigo CompiladoMSILMSIL
RecursosRecursos
MiBiblioteca.DLLMiBiblioteca.DLL
Descripción de TiposDescripción de Tipos
ClasesClasesClases BaseClases BaseInterfaces ImplementadasInterfaces ImplementadasAtributos de las ClasesAtributos de las ClasesMétodos de las ClasesMétodos de las Clases
NombreNombreVersiónVersiónCulturaCultura
Manifiesto del AssemblyManifiesto del Assembly
Otros AssembliesOtros AssembliesPermisos de SeguridadPermisos de SeguridadTipos ExternosTipos Externos
30
Assemblies - Aplicaciones .NETAssemblies - Aplicaciones .NET
Uno o más AssembliesUno o más Assemblies
Al ejecutar una aplicación, ¿cómo ubico los Al ejecutar una aplicación, ¿cómo ubico los assemblies necesarios?assemblies necesarios?
Global Assembly Cache (GAC) Global Assembly Cache (GAC) El Class Loader busca en el directorio local El Class Loader busca en el directorio local
(preferido)(preferido)
Diferentes aplicaciones pueden usar diferentes Diferentes aplicaciones pueden usar diferentes versionesversiones Actualizaciones más simplesActualizaciones más simples Desinstalación más simpleDesinstalación más simple
31
.NET Framework Class Library.NET Framework Class Library
Conjunto de Tipos básicos (clases, interfaces, etc.) que vienen incluídos 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 desarrollo
Es extensible y totalmente orientada a objetos
33
Common Language Specification (CLS)Common Language Specification (CLS)
Especificación que estandariza una serie de características soportadas por el CLR
Contrato entre diseñadores de lenguajes de programación y autores de bibliotecas
Permite la interoperabilidad entre lenguajes
Microsoft provee implementaciones de 4 lenguajes, todos compatibles con CLS Microsoft Visual Basic .NETMicrosoft Visual Basic .NET Microsoft Visual C# .NETMicrosoft Visual C# .NET Microsoft Visual J#.NETMicrosoft Visual J#.NET Microsoft Visual C++.NETMicrosoft Visual C++.NET
34
Common Language Specification (CLS)Common Language Specification (CLS)
El resto de la industria y el sector académico han desarrollado más de 20 lenguajes compatibles con la especificación CLS
CobolCobol
EiffelEiffel
FortranFortran
PascalPascal
PerlPerl
C++.NETC++.NET C#C#
HaskellHaskell
JavaJava JavaScriptJavaScript
Visual Basic.NETVisual Basic.NET
MercuryMercury
MLML
PHPPHP
Objective CamlObjective Caml
OberonOberon SmalltalkSmalltalk SchemeScheme
J#J#
RPGRPG
MondrianMondrian
APLAPL
DelphiDelphi PythonPython
LISPLISP PrologProlog
35
CLS - Elección del lenguajeCLS - Elección del lenguaje
.NET posee un único runtime (el CLR) y un .NET posee un único runtime (el CLR) y un único conjunto de bibliotecas para todos los único conjunto de bibliotecas para todos los lenguajeslenguajesNo hay diferencias notorias de performance No hay diferencias notorias de performance entre los lenguajes provistos por Microsoftentre los lenguajes provistos por MicrosoftEl lenguaje a utilizar, en gral., dependerá de su El lenguaje a utilizar, en gral., dependerá de su experiencia previa con otros lenguajes o de experiencia previa con otros lenguajes o de gustos personalesgustos personales Si conoce Java, Delphi, C++, etc. Si conoce Java, Delphi, C++, etc. C# C# Si conoce Visual Basic o VBScript Si conoce Visual Basic o VBScript VB.NET VB.NET
Los tipos de aplicaciones .NET son Los tipos de aplicaciones .NET son INDEPENDIENTES del lenguaje que elijaINDEPENDIENTES del lenguaje que elija
36
Infraestructura de Lenguaje Común (CLI)Infraestructura de Lenguaje Común (CLI)
Entorno de Ejecución de AplicacionesEntorno de Ejecución de Aplicaciones
Conjunto de Librerías Básicas (BCL)Conjunto de Librerías Básicas (BCL)
Tipos de Datos Comunes (CTS)Tipos de Datos Comunes (CTS)
El .NET Framework y el .NET Compact El .NET Framework y el .NET Compact Framework son implementaciones de la Framework son implementaciones de la especificación CLIespecificación CLI
37
Sub-Especificaciones de CLISub-Especificaciones de CLI(Common Language Infrastructure)(Common Language Infrastructure)
38
CTS (Common Type System)CTS (Common Type System)Define un conjunto común de “tipos” de datos Define un conjunto común de “tipos” de datos orientados a objetosorientados a objetos
Todo lenguaje de programación .NET debe implementar Todo lenguaje de programación .NET debe implementar los tipos definidos por el CTSlos tipos definidos por el CTS
Todo tipo hereda Todo tipo hereda directa o directa o indirectamente del tipo indirectamente del tipo System.ObjectSystem.Object
Define Tipos de Define Tipos de VALOR y de VALOR y de REFERENCIAREFERENCIA
Todo tipo hereda Todo tipo hereda directa o directa o indirectamente del tipo indirectamente del tipo System.ObjectSystem.Object
Define Tipos de Define Tipos de VALOR y de VALOR y de REFERENCIAREFERENCIA