Introducción a la plataforma.NET Erich Bühler MVP.

42
Introducción a la Introducción a la plataforma .NET plataforma .NET Erich Bühler Erich Bühler MVP MVP

Transcript of Introducción a la plataforma.NET Erich Bühler MVP.

Page 1: Introducción a la plataforma.NET Erich Bühler MVP.

Introducción a la Introducción a la plataforma .NET plataforma .NET

Erich BühlerErich Bühler

MVPMVP

Page 2: Introducción a la plataforma.NET Erich Bühler MVP.

¿Qué es .NET?¿Qué es .NET?

.NET nueva infraestructura para .NET nueva infraestructura para desarrollar aplicaciones Windows y desarrollar aplicaciones Windows y WebWeb

Ofrece un nuevo conjunto de Ofrece un nuevo conjunto de herramientas, superiores a las ya herramientas, superiores a las ya conocidas.conocidas.

Centraliza tecnologíasCentraliza tecnologías

Page 3: Introducción a la plataforma.NET Erich Bühler MVP.

Microsoft .NETMicrosoft .NET

Servicios WebServicios Web

ServidoresServidores

HerramientasHerramientasClientesClientes

So

lucio

ne

So

lucio

ne

ss

Page 4: Introducción a la plataforma.NET Erich Bühler MVP.

¿Qué es .NET?¿Qué es .NET?

Cambios estructuralesCambios estructurales Aprendido sobre defectos de diseños e Aprendido sobre defectos de diseños e

incorporado nuevas tecnologíasincorporado nuevas tecnologías Avanzado sobre modelos conceptualesAvanzado sobre modelos conceptuales Nuevos lenguajes o con grandes cambiosNuevos lenguajes o con grandes cambios

Page 5: Introducción a la plataforma.NET Erich Bühler MVP.

0

2000000

4000000

6000000

8000000

10000000

COBOL C/C++ VB Java Other

Lenguajes

Población mundial de desarrolladores

Total de desarrolladores en el mundo: 23 millones

Page 6: Introducción a la plataforma.NET Erich Bühler MVP.

LenguajesLenguajespackage EjemploJSharp;package EjemploJSharp;

/**/** * Una linda clase denominada Caja.* Una linda clase denominada Caja. */*/public class Cajapublic class Caja{{

public Caja()public Caja(){{

//TODO: La lógica del constructor aquí//TODO: La lógica del constructor aquí}}public static String Peso()public static String Peso(){{

return("Se invocó al método Peso");return("Se invocó al método Peso");}}public static String Volumen()public static String Volumen(){{

return("Se invocó al método Volumen");return("Se invocó al método Volumen");}}

}}

Page 7: Introducción a la plataforma.NET Erich Bühler MVP.

LenguajesLenguajesusing System;using System;

namespace EjemploCSharpnamespace EjemploCSharp{{

public class Cajapublic class Caja{{

public Caja()public Caja(){{

// TODO: Lógica del constructor aquí// TODO: Lógica del constructor aquí}}public static string Peso() public static string Peso() {{

return("Se invocó al método Peso");return("Se invocó al método Peso");}}public static string Volumen() public static string Volumen() {{

return("Se invocó al método Volumen");return("Se invocó al método Volumen");}}

}}}}

Page 8: Introducción a la plataforma.NET Erich Bühler MVP.

LenguajesLenguajesNamespace EjemploVisualBasicNamespace EjemploVisualBasic

Public Class CajaPublic Class Caja

Public Sub New()Public Sub New()

MsgBox("Se ejecutó Constructor" & _MsgBox("Se ejecutó Constructor" & _ " de clase Caja") " de clase Caja")

End SubEnd Sub

Public Shared Function Peso() As StringPublic Shared Function Peso() As String

Return ("Se invocó al método Peso")Return ("Se invocó al método Peso")

End FunctionEnd Function

Public Shared Function Volumen() As StringPublic Shared Function Volumen() As String

Return ("Se invocó al método Volumen")Return ("Se invocó al método Volumen")

End FunctionEnd Function

End ClassEnd Class

End NamespaceEnd Namespace

Page 9: Introducción a la plataforma.NET Erich Bühler MVP.

Aplicación estándar vs .NETAplicación estándar vs .NET

AplicaciónAplicación

Sistema operativo Sistema operativo WindowsWindows

(Funciones, gestión(Funciones, gestiónde memoria, etc.)de memoria, etc.)

Sistema operativoSistema operativo

AplicaciónAplicación

Funciones, gestión Funciones, gestión de memoria, etc.de memoria, etc.

Page 10: Introducción a la plataforma.NET Erich Bühler MVP.

Common Language Runtime Common Language Runtime (CLR)(CLR)Primer cambio en la arquitecturaPrimer cambio en la arquitectura CLR incluye un compilador bajo demanda que CLR incluye un compilador bajo demanda que

ejecuta código de múltiples lenguajes, entre ellos:ejecuta código de múltiples lenguajes, entre ellos: C# que es una versión de C++ conteniendo las C# que es una versión de C++ conteniendo las

características de Java; J# para desarrolladores Javacaracterísticas de Java; J# para desarrolladores Java Visual Basic .NET nueva versión de VB conteniendo nueva Visual Basic .NET nueva versión de VB conteniendo nueva

sintaxis, orientación a objetos, y poder similar a C#sintaxis, orientación a objetos, y poder similar a C#

Todos los lenguajes en .NET deben obedecer reglas Todos los lenguajes en .NET deben obedecer reglas y estándares impuestos por CLS. Entre ellos:y estándares impuestos por CLS. Entre ellos: Declaración de objetos, creación y utilizaciónDeclaración de objetos, creación y utilización Tipos de datosTipos de datos Errores y administraciones de excepcionesErrores y administraciones de excepciones Verificación de tiposVerificación de tipos

Page 11: Introducción a la plataforma.NET Erich Bühler MVP.

Lenguajes .NETLenguajes .NETCLS (Common Language Specification)CLS (Common Language Specification)

Requisitos mínimos para compiladores de Requisitos mínimos para compiladores de lenguajes .NETlenguajes .NET Conjunto mínimo de funcionalidad que deben Conjunto mínimo de funcionalidad que deben

implementarimplementar

Su objetivo es facilitar la interoperabilidad Su objetivo es facilitar la interoperabilidad entre lenguajesentre lenguajes

Page 12: Introducción a la plataforma.NET Erich Bühler MVP.

Lenguajes .NETLenguajes .NETCLS (II)CLS (II)

COBOLCOBOL C++C++

CLRCLR

Extensiones Extensiones administradas administradas para C++para C++

Extenciones deExtenciones deFujitsu COBOLFujitsu COBOL

CLS

VBVB

Los lenguajes no tienen que exponer toda la Los lenguajes no tienen que exponer toda la funcionalidad definida por CLRfuncionalidad definida por CLR

Page 13: Introducción a la plataforma.NET Erich Bühler MVP.

Tipos de datos comúnTipos de datos común

CLS provee un conjunto de tipos de CLS provee un conjunto de tipos de datos nativos que todos los lenguajes datos nativos que todos los lenguajes deben soportar. Los tipos incluyendeben soportar. Los tipos incluyen EnterosEnteros (tres tipos de 16/32/64 bit)(tres tipos de 16/32/64 bit) Punto flotante (dos tipos de 32/64 bit)Punto flotante (dos tipos de 32/64 bit) Boolean y CharBoolean y Char Date/TimeDate/Time

Cruzamiento entre lenguajes es fácilCruzamiento entre lenguajes es fácil Impacto sobre tipos de datos de Impacto sobre tipos de datos de

algunos lenguajes, por ejemplo VBalgunos lenguajes, por ejemplo VB

Page 14: Introducción a la plataforma.NET Erich Bühler MVP.

Lenguaje intermedio de Lenguaje intermedio de MicrosoftMicrosoft Lenguajes .NET no compilan a código Lenguajes .NET no compilan a código

máquina en un comienzo. Ellos son máquina en un comienzo. Ellos son compilados a compilados a ILIL..

Compilador bajo demanda de CLR Compilador bajo demanda de CLR acepta IL y lo recompila a código acepta IL y lo recompila a código máquina. máquina. Compilación ‘Just in time’ (bajo demanda)Compilación ‘Just in time’ (bajo demanda) Verificación de tipos (validación) Verificación de tipos (validación) El código es seguroEl código es seguro

Page 15: Introducción a la plataforma.NET Erich Bühler MVP.

Lenguaje intermedio de Lenguaje intermedio de MicrosoftMicrosoft

Código Código fuentefuente

CompilaciónCompilación

Cuando el método Cuando el método es invocadoes invocado

CompiladorCompiladorEnsambladoEnsamblado

EjecuciónEjecución

CompiladorCompilador

JITJITCódigoCódigo

máquinamáquina

Codigo (IL)Codigo (IL)

MetadatosMetadatos

Código Adm.Código Adm.

Page 16: Introducción a la plataforma.NET Erich Bühler MVP.

Lenguaje intermedio de Lenguaje intermedio de MicrosoftMicrosoft Existen varios .NET frameworkExisten varios .NET framework

.net compact .net compact frameworkframework

Page 17: Introducción a la plataforma.NET Erich Bühler MVP.

.NET Compact Framework.NET Compact FrameworkDesarrollo sobre dispositivosDesarrollo sobre dispositivos

Versión reducida de Framework .NETVersión reducida de Framework .NET Diseñado para dispositivos inteligentesDiseñado para dispositivos inteligentes

PocketPC y PocketPC Phone EditionPocketPC y PocketPC Phone Edition SmartPhoneSmartPhone Windows CEWindows CE

Mismo modelo de desarrollo que .NET Mismo modelo de desarrollo que .NET FrameworkFramework

Misma herramienta de desarrollo Visual Misma herramienta de desarrollo Visual Studio .NETStudio .NET

Page 18: Introducción a la plataforma.NET Erich Bühler MVP.

Role de Visual StudioRole de Visual Studio

Sistema operativoSistema operativo

Common Language RuntimeCommon Language Runtime

Common Language SpecificationCommon Language Specification

VBVB C++C++ C#C# J#J# ……V

isua

l Stu

dio

.V

isua

l Stu

dio

. NE

TN

ET

Page 19: Introducción a la plataforma.NET Erich Bühler MVP.

Common type systemCommon type system

IL apoya la orientación a objetos. Por lo IL apoya la orientación a objetos. Por lo tanto se necesita que todo tipo sea de tanto se necesita que todo tipo sea de una clase del framework (clase, una clase del framework (clase, estructura, o interfaz)estructura, o interfaz)

Tipos del framework (resumen)Tipos del framework (resumen) IntegerInteger StringString RectangleRectangle LongLong Tipos personalizados (Cliente, factura, etc)Tipos personalizados (Cliente, factura, etc)

Page 20: Introducción a la plataforma.NET Erich Bühler MVP.

Common type systemCommon type system

Declaración Utilización(prop.)

Utilización (métodos)

Dim i As Integer i=100 i.ToString

Dim r As Rectangle

r.Width*r.Height r.Area

Dim c As cliente c.nombre=‘Bob’ c.Quejarse (nivel)

Dim f As factura f.Número = 10 f.procesar

Page 21: Introducción a la plataforma.NET Erich Bühler MVP.

Metadatos de tiposMetadatos de tipos

Un tipo debe ser auto-descriptivo. Debe Un tipo debe ser auto-descriptivo. Debe exponer sus propiedades, métodos, exponer sus propiedades, métodos, valores aceptados, etc.valores aceptados, etc. Esta información es siempre escrita en el Esta información es siempre escrita en el

EXE o DLL como encabezado EXE o DLL como encabezado (MANIFIESTO y METADATOS)(MANIFIESTO y METADATOS)

Page 22: Introducción a la plataforma.NET Erich Bühler MVP.

EnsambladosEnsamblados

Estructura de un ensamblado = manifiesto y Estructura de un ensamblado = manifiesto y uno o más módulos ejecutables (MSIL).uno o más módulos ejecutables (MSIL).

Page 23: Introducción a la plataforma.NET Erich Bühler MVP.

ManifiestoManifiesto

Describe un ensamblado y describe su Describe un ensamblado y describe su contenidocontenido

Incluye:Incluye: Identidad del ensambladoIdentidad del ensamblado Requerimientos de seguridadRequerimientos de seguridad Identidad de ensamblados de dependientesIdentidad de ensamblados de dependientes Tipos expuestos por el ensambladoTipos expuestos por el ensamblado Información personalizada (para reflexión)Información personalizada (para reflexión)

Page 24: Introducción a la plataforma.NET Erich Bühler MVP.

Herramienta ILDASMHerramienta ILDASM

Page 25: Introducción a la plataforma.NET Erich Bühler MVP.

InterconexiónInterconexión

COM COM CallableCallableWrapperWrapper

Common Common Language RuntimeLanguage Runtime

ObjetoObjeto

Seguimientode ref.

Cuenta de

referencias

ComponenteComponente COM COM

IUnknownIUnknownIDispatchIDispatch

IOtraIOtra

IOtraIOtra

ClienteCliente

Page 26: Introducción a la plataforma.NET Erich Bühler MVP.

EnsambladosEnsamblados

CaracterísticasCaracterísticas Son auto-descriptivosSon auto-descriptivos No se requiere del archivo de registro No se requiere del archivo de registro Ejecución lado a ladoEjecución lado a lado Solamente con XCOPY la aplicación queda Solamente con XCOPY la aplicación queda

funcionalfuncional

No son componentes COMNo son componentes COM Son compatibles con COM mediante Son compatibles con COM mediante

wrappingwrapping

Page 27: Introducción a la plataforma.NET Erich Bühler MVP.

EnsambladosEnsamblados

Herramientas para registro en COM en Herramientas para registro en COM en la consola de .NETla consola de .NET

FuncionamientoFuncionamiento Versiones privadas vs. compartidasVersiones privadas vs. compartidas

Versiones compartidasVersiones compartidas Gestionadas por GAC (Caché de Gestionadas por GAC (Caché de

ensamblados global o Global Assembly ensamblados global o Global Assembly cache)cache)

Políticas de versiónPolíticas de versión Manejo de autores mediante claves doblesManejo de autores mediante claves dobles

Page 28: Introducción a la plataforma.NET Erich Bühler MVP.

Caché de Caché de ensamblados global ensamblados global o GACo GAC

Page 29: Introducción a la plataforma.NET Erich Bühler MVP.

Administración de memoriaAdministración de memoria

Recolección de basura automática de Recolección de basura automática de objetosobjetos Se eliminan problemas comunes de Se eliminan problemas comunes de

memoriamemoria El rendimiento puede no ser el mejor en El rendimiento puede no ser el mejor en

aplicaciones críticasaplicaciones críticas Puede forzarse la recolecciónPuede forzarse la recolección

Afecta a muchas de las aplicaciones Afecta a muchas de las aplicaciones actualesactuales

Page 30: Introducción a la plataforma.NET Erich Bühler MVP.

Biblioteca de clases baseBiblioteca de clases base

Funcionalidades en sistemas Funcionalidades en sistemas tradicionalestradicionales Diferentes bibliotecas de servicios son Diferentes bibliotecas de servicios son

provistas al desarrollador mediante provistas al desarrollador mediante bibliotecas de runtime (C++), API de win32, bibliotecas de runtime (C++), API de win32, API de bases de datos, bibliotecas API de bases de datos, bibliotecas estáticas/dinámicas, etc.estáticas/dinámicas, etc.

Dependen del lenguaje y sistema operativoDependen del lenguaje y sistema operativo Se invocan dependiendo del lenguajeSe invocan dependiendo del lenguaje

Page 31: Introducción a la plataforma.NET Erich Bühler MVP.

Biblioteca de clases baseBiblioteca de clases base

En .NETEn .NET Bibliotecas de clasesBibliotecas de clases Organizadas jerárquicamenteOrganizadas jerárquicamente Independientes del lenguajeIndependientes del lenguaje Siguen los lineamientos de CLRSiguen los lineamientos de CLR

Page 32: Introducción a la plataforma.NET Erich Bühler MVP.

Biblioteca de clases baseBiblioteca de clases base A las jerarquías se les llama A las jerarquías se les llama Espacio de Espacio de

nombrenombre Todo es un objeto, hasta los controles.Todo es un objeto, hasta los controles.

System System

System.DataSystem.Data System.XmlSystem.Xml

System.WebSystem.Web

GlobalizationGlobalizationDiagnosticsDiagnosticsConfigurationConfigurationCollectionsCollections

ResourcesResourcesReflectionReflectionNetNetIOIO

ThreadingThreadingTextTextServiceProcessServiceProcessSecuritySecurity

CommonCommonOleDbOleDb

SQLTypesSQLTypesSqlClientSqlClient

XPathXPathXSLTXSLT

RuntimeRuntimeInteropServicesInteropServicesRemotingRemotingSerializationSerialization

SerializationSerialization

ConfigurationConfiguration SessionStateSessionStateCachingCaching SecuritySecurity

ServicesServicesDescriptionDescriptionDiscoveryDiscoveryProtocolsProtocols

UIUIHtmlControlsHtmlControlsWebControlsWebControls

System.DrawingSystem.Drawing

ImagingImagingDrawing2DDrawing2D

TextTextPrintingPrinting

System.Windows.FormsSystem.Windows.FormsDesignDesign ComponentModelComponentModel

Page 33: Introducción a la plataforma.NET Erich Bühler MVP.

EnsambladosEnsamblados

La organización de las bibliotecas de La organización de las bibliotecas de clase es similar al sistema de archivos:clase es similar al sistema de archivos: Cada ‘carpeta’ es un espacio de nombresCada ‘carpeta’ es un espacio de nombres Cada ‘archivo’ es un ensamblado Cada ‘archivo’ es un ensamblado

exponiendo uno o más tipos (y su lógica)exponiendo uno o más tipos (y su lógica) El nodo o carpeta raíz se llama ‘System’El nodo o carpeta raíz se llama ‘System’

Muchas eran antes API del sistema Muchas eran antes API del sistema operativooperativo

Page 34: Introducción a la plataforma.NET Erich Bühler MVP.

Windows FormsWindows Forms

Aplicaciones de escritorio basadas en Aplicaciones de escritorio basadas en clases y herencia, nuevos controlesclases y herencia, nuevos controles

Ajuste de controles de acuerdo a la Ajuste de controles de acuerdo a la definicióndefinición

Instalación mediante COPYInstalación mediante COPY GDI+GDI+

Page 35: Introducción a la plataforma.NET Erich Bühler MVP.

Características de Características de GDI+GDI+

Page 36: Introducción a la plataforma.NET Erich Bühler MVP.

Auto-instalaciónAuto-instalación

Formulario puede residir en un Formulario puede residir en un ensamblado (auto-instalación)ensamblado (auto-instalación)

Técnicas de reflexión sobre el disco local o Técnicas de reflexión sobre el disco local o InternetInternet

Facilidad de distribución de la aplicación Facilidad de distribución de la aplicación ‘en partes’‘en partes’

Page 37: Introducción a la plataforma.NET Erich Bühler MVP.

Auto-instalaciónAuto-instalación

ClienteCliente Servidor WebServidor Web

Aplicación Aplicación de Windowsde Windows

InternetInternet

Form1Form1

Form2Form2Cachéde IE

Page 38: Introducción a la plataforma.NET Erich Bühler MVP.

Características de la Características de la infraestructurainfraestructura Ofrece características de POO para Ofrece características de POO para

todos los lenguajestodos los lenguajes

Soporte para múltiples hilos de Soporte para múltiples hilos de ejecuciónejecución

Objetos para conexión e invocación Objetos para conexión e invocación remota (por ejemplo Web Services)remota (por ejemplo Web Services)

Page 39: Introducción a la plataforma.NET Erich Bühler MVP.

Características de la Características de la infraestructurainfraestructura Formularios WebFormularios Web ADO.NETADO.NET Dispositivos móvilesDispositivos móviles etc.etc.

Page 40: Introducción a la plataforma.NET Erich Bühler MVP.

Visual Studio .NETVisual Studio .NET UnaUna herramienta para herramienta para todotodo Plataforma RAD de alta Plataforma RAD de alta productividadproductividad

Diseñadores visuales win, web, mobileDiseñadores visuales win, web, mobile Editores de entidades, XSD, XMLEditores de entidades, XSD, XML Desarrollo bases de datosDesarrollo bases de datos Depuración extremo a extremoDepuración extremo a extremo Tecnología Tecnología IntelliSense IntelliSense y Ayuda Dinámicay Ayuda Dinámica

Extensible y abiertoExtensible y abierto Existencia de otros editores gratuitos (no Existencia de otros editores gratuitos (no

MS) con menos característicasMS) con menos características

Page 41: Introducción a la plataforma.NET Erich Bühler MVP.

Microsoft .NETMicrosoft .NET

Servicios WebServicios Web

ServidoresServidores

HerramientasHerramientasClientesClientes

So

lucio

ne

So

lucio

ne

ss

Page 42: Introducción a la plataforma.NET Erich Bühler MVP.

© 2004 Erich R. Bühler© 2004 Erich R. Bühler