Introducción a la plataforma.NET Erich Bühler MVP.
-
Upload
francisco-jose-ponce-luna -
Category
Documents
-
view
221 -
download
0
Transcript of 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
¿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
Microsoft .NETMicrosoft .NET
Servicios WebServicios Web
ServidoresServidores
HerramientasHerramientasClientesClientes
So
lucio
ne
So
lucio
ne
ss
¿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
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
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");}}
}}
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");}}
}}}}
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
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.
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
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
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
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
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
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.
Lenguaje intermedio de Lenguaje intermedio de MicrosoftMicrosoft Existen varios .NET frameworkExisten varios .NET framework
.net compact .net compact frameworkframework
.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
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
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)
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
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)
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).
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)
Herramienta ILDASMHerramienta ILDASM
InterconexiónInterconexión
COM COM CallableCallableWrapperWrapper
Common Common Language RuntimeLanguage Runtime
ObjetoObjeto
Seguimientode ref.
Cuenta de
referencias
ComponenteComponente COM COM
IUnknownIUnknownIDispatchIDispatch
IOtraIOtra
IOtraIOtra
ClienteCliente
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
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
Caché de Caché de ensamblados global ensamblados global o GACo GAC
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
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
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
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
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
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+
Características de Características de GDI+GDI+
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’
Auto-instalaciónAuto-instalación
ClienteCliente Servidor WebServidor Web
Aplicación Aplicación de Windowsde Windows
InternetInternet
Form1Form1
Form2Form2Cachéde IE
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)
Características de la Características de la infraestructurainfraestructura Formularios WebFormularios Web ADO.NETADO.NET Dispositivos móvilesDispositivos móviles etc.etc.
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
Microsoft .NETMicrosoft .NET
Servicios WebServicios Web
ServidoresServidores
HerramientasHerramientasClientesClientes
So
lucio
ne
So
lucio
ne
ss
© 2004 Erich R. Bühler© 2004 Erich R. Bühler