introduccion a .net

38
1 Introducción Introducción .NET Framework .NET Framework

Upload: nayer-hermosilla-zavala

Post on 22-Dec-2015

251 views

Category:

Documents


4 download

DESCRIPTION

Clase introductoria a .Net

TRANSCRIPT

1

Introducción Introducción .NET Framework .NET Framework

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

4

La tecnología y .NETLa tecnología y .NET

5

La tecnología y .NETLa tecnología y .NET

6

La tecnología y .NETLa tecnología y .NET

7

La tecnología y .NETLa tecnología y .NET

8

La tecnología y .NETLa tecnología y .NET

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

20

Arquitectura del .NET FrameworkArquitectura del .NET Framework

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

22

CLR – Componentes InternosCLR – Componentes Internos

23

CLR – Proceso de CompilaciónCLR – Proceso de Compilación

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

28

CLR - MSILCLR - MSIL

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

32

.NET Framework Class Library.NET Framework Class LibraryEl namespace raíz es SYSTEM

Texto

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