89
Estrella 1 Estrella 1 Introducción a Introducción a Microsoft .NET Microsoft .NET Programa Microsoft Programa Microsoft Desarrollador Cinco Desarrollador Cinco Estrellas Estrellas

DCE1 IntroduccionMicrosoft.net

Embed Size (px)

DESCRIPTION

DCE1 IntroduccionMicrosoft.net

Citation preview

  • Estrella 1Introduccin a Microsoft .NET

    Programa Microsoft Desarrollador Cinco Estrellas

  • ObjetivoPresentar una introduccin a la plataforma de desarrollo Microsoft .NET, describiendo sus principios bsicos de funcionamiento, su arquitectura de componentes y sus principales bibliotecas reutilizables, mostrando adems las novedades introducidas en la ltima versin de la misma.

    Esta presentacin constituye el material terico, y est acompaada de una aplicacin de ejemplo descargable por separado y que ilustra de manera prctica los conceptos ms relevantes. Es altamente recomendable que descargue, instale, revise y ejecute la aplicacin de ejemplo para poder obtener un conocimiento ms completo de los temas que se explicarn a lo largo de este curso.

  • PrerrequisitosPoseer los conocimientos proporcionados por la Estrella 0 del programaHaber aprobado el examen correspondiente a la Estrella 0 del programaConocimientos fundamentales de bases de datos relacionales, incluyendoModelo RelacionalProtocolos de Acceso (ODBC/OLEDB)Lenguaje SQL

  • Temas a TratarIntroduccin a Microsoft .NET

    Componentes FundamentalesFuncionamiento Interno del CLRBibliotecas PrincipalesVentajas de .NETHerramientas de Desarrollo .NETNovedades en .NET 2.0

  • Temas a TratarIntroduccin a Microsoft .NETQu no es .NET?Qu es .NET?.NET Como evolucin de COM

  • Paradigmas de Programacin

    Si bien solemos tener la sensacin de que los paradigmas de programacin de tecnologas Microsoft se encuentran en constante cambio, la realidad nos muestra que los grandes cambios vienen ocurriendo aproximadamente cada 10 aos. Uno de ellos se dio a finales de la dcada de 1990 y principios de la dcada del 2000, con el desarrollo y la introduccin al mercado de la plataforma Microsoft .NET. Hubo varios factores que motivaron al desarrollo de esta plataforma, entre los cuales podemos mencionar:La amplia disponibilidad de conexiones a Internet de alta velocidad, e incluso inalmbricasLa proliferacin de nuevos tipos de dispositivos de hardware que son usados en la vida diaria (telfonos inteligentes, Pocket PCs, HandHelds, Media Centers, etc.)El creciente poder de cmputo de las computadoras personales y servidores basados en arquitecturas x86.El surgimiento de estndares de Internet para permitir la comunicacin e integracin entre diversas plataformas de software

  • Qu NO es .NET?.NET no es un Sistema Operativo.NET no es un Lenguaje de Programacin.NET no es un Entorno de Desarrollo.NET no es un Servidor de Aplicaciones.NET no es un producto empaquetado que se pueda comprar como tal

    Antes de decir qu es .NET, es conveniente aclarar qu NO es .NET:.NET no es un sistema operativo, como si lo es Microsoft Windows en sus distintas versiones..NET no es un Lenguaje de Programacin: si bien la plataforma Microsoft .NET incluye lenguajes de programacin de aplicaciones, su concepto es ms amplio y va ms all de stos..NET no es un Entorno de Desarrollo: si bien la plataforma Microsoft .NET incluye entornos de desarrollo integrados (IDEs), su concepto es ms amplio y va ms all de stos..NET no es un servidor de aplicaciones (Application Server).NET no es un producto empaquetado que se pueda comprar como tal, sino que es una plataforma que engloba distintas aplicaciones, servicios y conceptos y que en conjunto permiten el desarrollo y la ejecucin de aplicaciones.

  • Qu es .NET?Plataforma de Desarrollo compuesta deEntorno de Ejecucin (Runtime)Bibliotecas de Funcionalidad (Class Library)Lenguajes de ProgramacinCompiladoresHerramientas de Desarrollo (IDE & Tools)Guas de Arquitectura

    La evolucin de la plataforma COM

    Microsoft .NET es una plataforma de desarrollo y ejecucin de aplicaciones. Esto quiere decir que no slo nos brinda todas las herramientas y servicios que se necesitan para desarrollar modernas aplicaciones empresariales y de misin crtica, sino que tambin nos provee de mecanismos robustos, seguros y eficientes para asegurar que la ejecucin de las mismas sea ptima. Los componentes principales de la plataforma .NET son:Un entorno de ejecucin de aplicaciones, tambin llamado Runtime, que es un componente de software cuya funcin es la de ejecutar las aplicaciones .NET e interactuar con el sistema operativo ofreciendo sus servicios y recursos.Un conjunto de bibliotecas de funcionalidades y controles reutilizables, con una enorme cantidad de componentes ya programados listos para ser consumidos por otras aplicaciones.Un conjunto de lenguajes de programacin de alto nivel, junto con sus compiladores y linkers, que permitirn el desarrollo de aplicaciones sobre la plataforma .NET.Un conjunto de utilitarios y herramientas de desarrollo para simplificar las tareas ms comunes del proceso de desarrollo de aplicacionesDocumentacin y guas de arquitectura, que describen las mejores prcticas de diseo, organizacin, desarrollo, prueba e instalacin de aplicaciones .NET

    A lo largo de esta presentacin se analizar cada uno de estos puntos con mayor detalle.

    Por otra parte, .NET representa la evolucin COM (Component Object Model), la plataforma de desarrollo de Microsoft anterior a .NET y sobre la cual se basaba el desarrollo de aplicaciones Visual Basic 6 (entre otros tantos lenguajes y versiones).

  • Caractersticas de .NET (1/2)Plataforma de ejecucin intermedia100% Orientada a ObjetosMultilenguajePlataforma Empresarial de Misin Crtica

    Describiremos a continuacin algunas de las caractersticas principales de la plataforma Microsoft .NET:Se dice que es una plataforma de ejecucin intermedia, ya que las aplicaciones .NET no son ejecutadas directamente por el sistema operativo, como ocurre en el modelo tradicional de desarrollo. En su lugar, las aplicaciones .NET estn diseadas para ser ejecutadas contra un componente de software llamado Entorno de Ejecucin (muchas veces tambin conocido como Runtime, o , Mquina Virtual). Este componente es el encargado de manejar el ciclo de vida de cualquier aplicacin .NET, inicindola, detenindola, interactuando con el Sistema Operativo y proveyndole servicios y recursos en tiempo de ejecucin.La plataforma Microsoft .NET est completamente basada en el paradigma de Orientacin a Objetos (para ms informacin acerca de este tema puede consultar el material de estudio de la Estrella 0 del programa).NET es multi-lenguaje: esto quiere decir que para poder codificar aplicaciones sobre esta plataforma no necesitamos aprender un nico lenguaje especfico de programacin de alto nivel, sino que se puede elegir de una amplia lista de opciones. Veremos este tema con mayor detalle ms adelante en la presentacin..NET es una plataforma que permite el desarrollo de aplicaciones empresariales de misin crtica, entendindose por esto que permite la creacin y ejecucin de aplicaciones de porte corporativo que sean crticas para la operacin de tipos variados de organizaciones. Si bien tambin es muy atrayente para desarrolladores no profesionales, estudiantes y entusiastas, su verdadero poder radica en su capacidad para soportar las aplicaciones ms grandes y complejas.

  • Caractersticas de .NET (2/2)Modelo de Programacin nico para todo tipo de aplicaciones y dispositivos de hardwareSe integra fcilmente con aplicaciones existentes desarrolladas en plataformas MicrosoftSe integra fcilmente con aplicaciones desarrolladas en otras plataformas

    .Net fue diseado de manera tal de poder proveer un nico modelo de programacin, uniforme y consistente, para todo tipo de aplicaciones (ya sean de formularios Windows, de consola, aplicaciones Web, aplicaciones mviles, etc.) y para cualquier dispositivo de hardware (PCs, Pocket PCs, Telfonos Celulares Inteligentes, tambin llamados SmartPhones, Tablet PCs, etc.). Esto representa un gran cambio con respecto a las plataformas anteriores a .NET, las cuales tenan modelos de programacin, bibliotecas, lenguajes y herramientas distintas segn el tipo de aplicacin y el dispositivo de hardware.Uno de los objetivos de diseo de .NET fue que tenga la posibilidad de interactuar e integrarse fcilmente con aplicaciones desarrolladas en plataformas anteriores, particularmente en COM, ya que an hoy existen una gran cantidad de aplicaciones desarrolladas sobre esa base. .NET no slo se integra fcilmente con aplicaciones desarrolladas en otras plataformas Microsoft, sino tambin con aquellas desarrolladas en otras plataformas de software, sistemas operativos o lenguajes de programacin. Para esto hace un uso extensivo de numerosos estndares globales que son de uso extensivo en la industria, y acerca de los cuales iremos aprendiendo a lo largo del curso. Algunos ejemplos de estos estndares son XML, HTTP, SOAP, WSDL y UDDI.

  • Plataforma de Ejecucin Intermedia

    Microsoft .NET

    En el diagrama podemos ver que la plataforma Microsoft.NET es denominada de Ejecucin Intermedia justamente porque se ubica entre el Sistema Operativo y las aplicaciones finales con las que interactan los usuarios, actuando como intermediario entre ambos.

  • .NET como evolucin de COMEntorno de Ejecucin (Runtime)COM: Windows.NET: Common Language RuntimeLibreras de FuncionalidadCOM: Algunas (ADO, FSO, etc.).NET: Muy extensa (.NET Framework Class Library)Lenguajes de ProgramacinCOM: VB, C++, VFP, ASP, J++.NET: Common Language SpecificationEntorno de Desarrollo (IDE)COM: Uno para cada lenguaje.NET: Uno independiente del lenguaje (VS.NET)

  • Qu es el .NET Framework?Paquete de software fundamental de la plataforma .NET. Incluye:Entorno de Ejecucin (Runtime)Bibliotecas de Funcionalidad (Class Library)Se distribuye en forma libre y gratuitaExisten tres variantes principales:.NET Framework Redistributable Package.NET Framework SDK.NET Compact Framework Est instalado por defecto en Windows 2003 Server o superior

    El .NET Framework (traducido como Marco de Trabajo) es el componente fundamental de la plataforma Microsoft .NET, necesario tanto para poder desarrollar aplicaciones como para poder ejecutarlas luego en entornos de prueba o produccin.El .NET framework tiene tres variantes principales, todas descargables gratuitamente desde Internet.NET Framework Redistributable Package: este es el mnimo componente de la plataforma .NET que se necesita para poder ejecutar aplicaciones. Normalmente sta es la variante que se instala en los entornos productivos, una vez que el desarrollo y las pruebas de la aplicacin han finalizado.

    Est compuesto por:El entorno de ejecucin de la plataforma .NETLas bibliotecas de funcionalidad reutilizable.NET Framework SDK: esta versin contiene herramientas de desarrollo de lnea de comandos (compiladores, depuradores, etc.), documentacin de referencia, ejemplos y manuales para desarrolladores de aplicaciones. Normalmente sta variante se instala en los entornos de desarrollo de aplicaciones, y es ms til a los programadores que a los usuarios finales. Para poder instalar la versin SDK (Software Development Kit) es necesario instalar previamente el Redistributable Package..NET Compact Framework: esta es una versin reducida del .NET Framework Redistributable, especialmente pensada para ser instalada en dispositivos mviles como Pocket PCs y SmartPhones.

    El .NET Framework puede ser instalado en cualquier sistema operativo de la familia Windows superior a Windows 98. Para ms informacin acerca de los prerrequisitos se puede consultar: http://msdn.microsoft.com/netframework/technologyinfo/sysreqs/default.aspx

    Actualmente, Windows 2003 Server y Windows XP SP2 traen el .NET Framework preinstalado. Para ms informacin acerca de las descargas gratuitas, por favor consulte http://msdn.microsoft.com/netframework/downloads/updates/default.aspx

  • Dnde instalar el .NET Framework?

    .NET Compact Framework*

    *AplicacinMvilAplicacin de ConsolaAplicacin WebAplicacin de EscritorioServidorCliente

    * Slo si la aplicacin es distribuda

    El .NET Framework debe estar instalado en cualquier dispositivo de hardware para que la ejecucin de una aplicacin .NET sea posible. En el caso de las aplicaciones de escritorio (tambin llamadas De Formularios Windows) y las aplicaciones de consola (aplicaciones cuya interfaz de usuario es una consola de comandos), el Framework debe estar presente del lado del cliente (computadora donde se ejecuta la parte de la aplicacin que interacta con el usuario), y en el servidor slo en caso de que la aplicacin sea distribuda y tenga parte de su funcionalidad centralizada en una nica computadora.En el caso de las aplicaciones Web, el nico requisito del lado del cliente es tener un navegador y una conexin de red al servidor, el cual debe tener instalado el .NET Framework. Veremos ms sobre aplicaciones Web a lo largo del curso.Para las aplicaciones mviles, que se ejecutan sobre Windows Mobile en algn dispositivo tipo Pocket PC o SmartPhone, es necesario tener instalado el .NET Compact Framework en el dispositivo.

  • Lnea del tiempo de .NETVisual Studio 6.0Visual BasicVBAVisual FoxProVBScriptC++J++JScriptASPVisual Studio .NET 2003.NET Framework 1.1.NET Compact FrameworkJ#Visual Studio Orcas.NET Framework Orcas.NET Compact Framework Orcas2000 2001 2002 2003 2004 2005 2006 y msVisual Studio 2005 (Whidbey).NET Framework 2.0 (Whidbey).NET Compact Framework 2.0 (Whidbey)Visual Studio .NET 2002.NET Framework 1.0Visual Basic .NETC#

    Actualmente hay 3 versiones de la plataforma Microsoft .NET:

    La versin 1.0: fue liberada a principios del ao 2002, e inclua la versin 1.0 del .NET Framework, la versin 2002 de Visual Studio y varios lenguajes de programacin nuevos compatibles con la plataforma (como C#.NET y Visual Basic.NET)La versin 1.1: fue liberada en 2003, aproximadamente un ao despus que su predecesora. Esta versin introdujo el .NET Framework 1.1 junto con Visual Studio .NET 2003, la primer versin del .NET Compact Framework y un nuevo lenguaje de programacin llamado J#.NET.La versin 2.0: fue liberada a finales del ao 2005, y es la primer gran renovacin que sufri la plataforma en su tiempo de vida. Con la idea de ser una evolucin en lugar de una revolucin, esta versin trajo consigo las versiones 2.0 del .NET Framework y el .NET Compact Framework, asi como tambin una nueva versin de Visual Studio.

    Ya existen planes en desarrollo para la prxima generacin de la plataforma .NET, nombre cdigo Orcas, que ver la luz aproximadamente al mismo tiempo que el sistema operativo Windows Vista.

  • Temas a TratarIntroduccin a Microsoft .NETComponentes FundamentalesArquitecturaCommon Language Runtime (CLR)Microsoft Intermediate LanguageAssemblies.NET Class LibraryCommon Language Specification (CLS)

  • Arquitectura del .NET FrameworkWindowsCOM+ ServicesCommon Language RuntimeBase Class LibraryADO.NET y XMLASP.NETWindows FormsCommon Language SpecificationVBC++C#J#.NET Framework Redistributable.NET Framework SDK.NET Framework Class Library

    En la figura se pueden apreciar las distintas partes que componen al .NET Framework, includas el entorno de ejecucin de aplicaciones (CLR, en verde), el conjunto de bibliotecas de funcionalidad reutilizable (.NET Framework Class Library, en azul) y los compiladores y herramientas de desarrollo para los lenguajes .NET (en rojo). Todos estos componentes se motan por encima de la familia de sistemas operativos Windows.Dentro del conjunto de la .NET Framework Class Library se distinguen 4 sub-componentes principales:La Base Class Library (BCL - Biblioteca de Clases Base), que contiene la funcionalidad ms comunmente utilizada para el desarrollo de todo tipo de aplicaciones. Algunos ejemplos de la funcionalidad provista por la BCL son el manejo de colecciones, cadenas de texto, entrada/salida, threading, operaciones matemticas y dibujos 2D.ADO.NET, que contiene un conjunto de clases que permiten interactuar con bases de datos relacionales y documentos XML como repositorios de informacin persistente.ASP.NET, que constituye la tecnologa dentro del .NET Framework para construir aplicaciones con interfaz de usuario Web (es decir, aplicaciones cuya lgica se encuentra centralizada en uno o varios servidores y que los clientes pueden acceder usando un browser o navegador mediante una serie de protocolos y estndares como HTTP y HTML).Windows Forms (o simplemente WinForms), que constituye la tecnologa dentro del .NET Framewok que permite crear aplicaciones con interfaz de usuario basada en formularios y ventanas Windows de funcionalidad rica y que se ejecutan directamente en los clientes.

  • CLR - Arquitecturas de Ejecucin de Aplicaciones

    El modelo de ejecucin que propone la plataforma .NET se suele definir como virtual, o de mquina virtual, ya que las aplicaciones no son desarrolladas directamente contra las APIs de programacin expuestas por el sistema operativo, ni es ste el que se encarga de su ejecucin y ciclo de vida, sino que .NET provee un entorno de ejecucin (el CLR) que corre por sobre el sistema operativo y que es el encargado de ejecutar las aplicaciones y proveerles servicios en tiempo de ejecucin. A los componentes de software que se ejecutan de esta manera se los conoce comnmente como componentes manejados, ya que su ejecucin es controlada por un entorno intermedio. En la figura podemos ver las diferencias entre las arquitecturas de ejecucin de los componentes tradicionales (como los COM) y los componentes manejados.Una de las principales ventajas de contar con una plataforma virtual es que no estn atadas de ninguna forma con el sistema operativo y la plataforma de hardware subyacente. Es sabido que una aplicacin compilada para que utilice directamente las APIs y servicios expuestas por un sistema operativo x muy difcilmente pueda ser ejecutada en otro sistema operativo distinto sin ser recompilada. Las aplicaciones manejadas, en cambio, descansan la tarea de su compilacin a un cdigo de mquina especfico en el entorno de ejecucin. De esta manera, si existen distintos entornos de ejecucin intermedia para diferentes Sistemas Operativos, la misma aplicacin puede ejecutarse en todos ellos si necesidad de recompilarse.

  • CLR Common Language RuntimeEl CLR es el motor de ejecucin (runtime) de .NETCaractersticasCompilacin Just-In-Time (JIT)Gestin automtica de memoria (Garbage Collector)Gestin de errores consistente (Excepciones)Ejecucin basada en componentes (Assemblies)Gestin de SeguridadMultithreading

    Ya hemos visto como el CLR acta como un motor de ejecucin de aplicaciones y componentes manejados. Veamos ahora algunos de los principales servicios que les brinda a las aplicaciones que se ejecutan sobre l:Compilacin Just In Time (o Justo A Tiempo): el CLR se encarga de compilar las aplicaciones .NET a cdigo de mquina nativo para el sistema operativo y la plataforma de hardware en la que se est ejecutando. Esto lo hace sin intervencin alguna del desarrollador o el usuario, y solamente a medida que se necesita.Gestin Automtica de Memoria: el CLR abstrae a los desarrolladores de tener que pedir y liberar memoria explcitamente. Para esto, uno de sus componentes llamado Garbage Collector (Recolector de Basura) se encarga de liberar peridicamente la memoria que ya no est siendo usada por ninguna aplicacin. Por otra parte, el CLR tambin abstrae a los desarrolladores del uso de punteros y del acceso a memoria de bajo nivel. Si bien estas caractersticas pueden ser consideradas poderosas, suelen hacer el desarrollo y mantenimiento de aplicaciones ms propenso a errores y menos productivo.Gestin de Errores Consistente: como las aplicaciones .NET no se ejecutan directamente contra el Sistema Operativo, cualquier error no manejado que ocurra en tiempo de ejecucin ser atrapado por el CLR en ltima instancia, no afectando a ninguna otra aplicacin que se est ejecutando ni teniendo efecto alguno sobre su estabilidad.Ejecucin Basada en Componentes: todas las aplicaciones .NET son empaquetadas en componentes reutilizables denominados genricamente Assemblies, que el CLR se encarga de cargar en memoria y ejecutar. Profundizaremos sobre este tema ms adelante en el curso.Gestin de Seguridad: el CLR provee una barrera ms de contencin a la hora de ejecutar aplicaciones manejadas, ya que permite establecer polticas de seguridad muy detalladas que las aplicaciones .NET que se ejecuten en una determinada computadora debern cumplir. Multithreading: el CLR provee un entorno de ejecucin multi-hilos por sobre las capacidades del Sistema Operativo, asi como tambin mecanismos para asegurar su sincronizacin y acceso concurrente a recursos compartidos.

  • CLR Componentes Internos

    En la figura podemos apreciar los disintos componentes internos que constituyen el CLR, cada uno de los cuales tiene un propsito especfico. Iremos hablando de ellos a lo largo del curso, explicando sus funciones y detalles.

  • CLR Proceso de CompilacinCdigo FuenteCualquier lenguaje .NET

    El desarrollo de una aplicacin .NET comienza con la escritura de su cdigo fuente en alguno de los lenguajes de alto nivel soportados por la plataforma. El mismo luego es compilado obteniendose un ejecutable (que en Windows normalmente llevan la extensin .exe) o una biblioteca (que en Windows normalmente llevan la extensin .dll). A estos componentes .NET resultantes del proceso de compilacin se los denomina genricamente Assemblies, o Ensamblados.Ahora bien, en lugar de contener cdigo de mquina especfico para el sistema operativo y el hardware en el cual fueron compilados (nativo), los assemblies contienen un cdigo denominado MSIL (Microsoft Intermediate Language). EL MSIL es un set de instrucciones independientes de cualquier CPU existente y que puede ser convertido a cdigo nativo muy eficientemente. MSIL incluye instrucciones para cargar, almacenar, inicializar e interactuar con objetos y sus atributos y mtodos, asi como tambin instrucciones aritmticas y lgicas, control de flujo, acceso directo a memoria, manejor de errores y otras operaciones. Antes de que el cdigo MSIL pueda ser ejecutado debe convertirse a cdigo nativo especfico para un CPU y Sistema Operativo, tarea a cargo de los compiladores JIT incluidos en el CLR.

  • CLR - MSIL

    .method private hidebysig static void Main(string[] args) cil managed { .entrypoint maxstack 8 L_0000: ldstr "Hola Mundo" L_0005: call void [mscorlib]System.Console::WriteLine(string) L_000a: ret }

    Aqui podemos ver el tradicional mtodo que imprime Hola Mundo por consola escrito en MSIL. Como se puede apreciar, el MSIL tiene ciertas similitudes con el assembler de x86, y en cierta forma podemos decir que es anlogo a un assembler para la mquina virtual que constituye el CLR. Se puede apreciar tambin que el CLR se comporta como una mquina de stack, en la cual las instrucciones se van apilando y desapilando de a una para lograr la funcionalidad deseada.Todos los compiladores de todos los lenguajes .NET producen cdigo MSIL como salida, ya que es el nico lenguaje capaz de ser comprendido e interpretado por el CLR.El .NET Framework SDK incluye herramientas para obtener el cdigo MSIL a partir de un ejecutable o biblioteca (ildasm.exe) y para generar un ejecutable o biblioteca a partir de un archivo fuente MSIL (ilasm.exe). Para ms informacin sobre estas y otras herramientas se puede consultar la documentacin del SDK o el siguiente sitio web:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconNETFrameworkTools.asp

  • Qu es un Assembly?Un Assembly es la unidad mnima de ejecucin, distribucin, instalacin y versionado de aplicaciones .NET

    Un Assembly es la menor unidad de ejecucin y distribucin de una aplicacin .NET.Los assemblies son reutilizables, versionables y autodescriptivos, ya que no slo contienen el cdigo MSIL que representa la lgica de la aplicacin, sino que tambin incluyen informacin sobre si mismos y sobre todos los recursos externos de los que dependen para funcionar correctamente. A esta informacin se la denomina MetaData , y forma una parte integral de un assembly junto con el cdigo MSIL ya que ambos no pueden estar separados. La MetaData se ubica en una seccin especial del Assembly denominada Manifest, o Manifiesto, y es utilizada por el CLR a la hora de cargar y ejecutar el Assembly.La herramienta ildasm.exe (Intermediate Languaje Dissasembler, incluida en el .NET Framework SDK) puede utilizarse para inspeccionar la metadata de un assembly.

  • Assemblies - Aplicaciones .NETUno o ms AssembliesAl ejecutar una aplicacin, cmo ubico los assemblies necesarios?El Class Loader busca en el directorio local (preferido)Global Assembly Cache (GAC)Diferentes aplicaciones pueden usar diferentes versionesActualizaciones ms simplesDesinstalacin ms simple

    Una aplicacin .NET se compone, entonces, de uno o ms assemblies. Otra de las caractersticas de los Assemblies es que no necesitan estar registrados en la Registry de Windows, como sus predecesores COM. De esta forma, instalar una aplicacin .NET puede ser tan simple como copiar todos los assemblies necesarios a la computadora de destino, y basta con borrarlos a todos para tener una desinstalacin limpia y completa. Dado que .NET no depende de la Registry, y que cada assembly contiene informacin acerca de su versin y las versiones de los componentes de que depende, mltiples versiones de assemblies pueden coexistir sin ningn problema en la misma computadora.Existen dos formas de que una aplicacin pueda encontrar en tiempo de ejecucin los assemblies de los que depende: Ubicarlos en el mismo directorio. Esta es la opcin preferida si esos assemblies slo sern utilizados por esa nica aplicacin. Ubicarlos en un repositorio centralizado de assemblies denominado Global Assembly Cache, en el cual se instalan todos los assemblies que sern utilizados por mltiples aplicaciones en la misma computadora. Para registrar un assembly en el GAC es necesario utilizar otra herramienta incluida en el SDK llamada gacutil.exe.

  • .NET Framework Class LibraryConjunto de Tipos bsicos (clases, interfaces, etc.) que vienen includos en el .NET Framework Los tipos estn organizados en jerarquas lgicas de nombres, denominados NAMESPACESLos tipos son INDEPENDIENTES del lenguaje de desarrolloEs extensible y totalmente orientada a objetos

    De muy poco servira a los desarrolladores el contar con una plataforma de ejecucin de aplicaciones tan sofisticada y robusta como el CLR sin tener adems un conjunto de funcionalidades y componentes empaquetados listos para aprovechar y reutilizar en sus aplicaciones. Justamente ese es el propsito de la .NET Framework Class Library (Biblioteca de Clases del .NET Framework), que provee cientos de tipos bsicos (clases e interfaces principalmente) orientados a objetos, extensibles mediante herencia, independientes del lenguaje de programacin de alto nivel que se desee utilizar y organizados en namespaces jerrquicos.

  • .NET Framework Class Library

    El namespace raz es SYSTEM

    System System.DataSystem.XmlSystem.WebGlobalizationDiagnosticsConfigurationCollectionsResourcesReflectionNetIOThreadingTextServiceProcessSecurityCommonOleDbSqlClientOdbcXPathXSLTRuntimeInteropServicesRemotingSerializationSerializationConfigurationSessionStateCachingSecurityServicesDescriptionDiscoveryProtocolsUIHtmlControlsWebControlsSystem.DrawingImagingDrawing2DTextPrintingSystem.Windows.FormsDesignComponentModel

    En la figura se aprecian los principales namespaces de la biblioteca de clases .NET:System: raz de todos los otros namespaces, y dentro del cual podemos encontrar la mayoria de los namespaces correspondientes a la Base Class LibrarySystem.Data y System.Xml: en conjunto, estos dos namespaces constituyen la tecnologa conocida como ADO.NETSystem.Web: dentro de este namespace se encuentran todos los tipos necesarios para programar aplicaciones y servicios web ASP.NETSystem.Windows.Forms: dentro de este namespace se encuentran todos los tipos necesarios para programar aplicaciones de escritorio basadas en formularios y ventanas Windows.

  • Common Language Specification (CLS)Especificacin que estandariza una serie de caractersticas soportadas por el CLRContrato entre diseadores de lenguajes de programacin y autores de bibliotecasPermite la interoperabilidad entre lenguajesMicrosoft provee implementaciones de 4 lenguajes, todos compatibles con CLSMicrosoft Visual Basic .NETMicrosoft Visual C# .NETMicrosoft Visual J#.NETMicrosoft Visual C++.NET

    Uno de los objetivos de diseo de la plataforma .NET fue el ser independiente del lenguaje de programacin elegido para el desarrollo de aplicaciones. Para lograr esto es que se cre la Especificacin de Lenguaje Comn (o CLS, por sus siglas en ingls), que define y estandariza un subconjunto de todas las caractersticas soportadas por el CLR y que son necesarias en la mayora de las aplicaciones. Todos los componentes desarrollados y compilados de acuerdo con la especificacin CLS pueden interactuar entre si, independientemente del lenguaje de programacin de alto nivel en el que fueron escritos.Junto con el .NET Framework, Microsoft provee implementaciones de 4 lenguajes compatibles con CLS, junto con sus compiladores:Microsoft Visual Basic .NETMicrosoft Visual C# .NETMicrosoft Visual J#.NETMicrosoft Visual C++.NET

    Esto quiere decir que una aplicacin escrita, por ejemplo, en Visual Basic.NET, puede incorporar sin problemas nuevas partes escritas en C# o C++ .NET.

    Para obtener ms informacin acerca de la CLS puede consultar el siguiente sitio web:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconwhatiscommonlanguagespecification.asp

  • Common Language Specification (CLS)El resto de la industria y el sector acadmico han desarrollado ms de 20 lenguajes compatibles con la especificacin CLS

    CobolEiffelFortranPascalPerlC++.NETC#HaskellJavaJavaScriptVisual Basic.NETMercuryMLPHPObjective CamlOberonSmalltalkSchemeJ#RPGMondrianAPLDelphiPythonLISPProlog

    Dado que la especificacin CLS es un estndar disponible pblicamente, ha sido posible que otros diseadores de lenguajes y compiladores desarrollaran ms de una veintena de lenguajes compatibles con la especificacin, y por ende interoperables entre si y con los lenguajes desarrollados por Microsoft.

  • CLS - Eleccin del lenguaje.NET posee un nico runtime (el CLR) y un nico conjunto de bibliotecas para todos los lenguajesNo hay diferencias notorias de performance entre los lenguajes provistos por MicrosoftEl lenguaje a utilizar, en gral., depender de su experiencia previa con otros lenguajes o de gustos personalesSi conoce Java, Delphi, C++, etc. C#Si conoce Visual Basic o VBScript VB.NETLos tipos de aplicaciones .NET son INDEPENDIENTES del lenguaje que elija

    Un punto importante a destacar es que la eleccin del lenguaje de alto nivel en el que debe escribirse una aplicacin .NET prcticamente ha sido reducida a una cuestin de gustos personales y comodidad con la sintaxis. No hay prcticamente motivos tecnolgicos sobresalientes que inclinen la balanza hacia algn lenguaje en particular, al menos entre los ofrecidos por Microsoft. Todos utilizan el mismo runtime, todos utitlizan el mismo conjunto de bibliotecas de la misma forma, no existen diferencias notorias de performance entre ellos, todos tienen la misma potencia y todos tienen la misma capacidad de acceso a los recursos y servicios que expone el .NET Framework. De hecho, al cargar y ejecutar un assembly el CLR no sabe en qu lenguaje de programacin de alto nivel ste fue escrito, ya que lo que el recibe como entrada es cdigo MSIL.

  • Temas a TratarIntroduccin a Microsoft .NET

    Componentes FundamentalesFuncionamiento Interno del CLREspecificacin CLIModelo de EjecucinApplication DomainsCommon Type System

  • Infraestructura de Lenguaje Comn (CLI)Especificacin patrocinada por Microsoft, Intel, HP y estandarizada por ECMA (2001) e ISO (2003) que describe: Entorno de Ejecucin de AplicacionesConjunto de Libreras Bsicas (BCL)Tipos de Datos Comunes (CTS)El .NET Framework y el .NET Compact Framework son implementaciones de la especificacin CLI

    La infraestructura de lenguaje comn (Common Language Infrastructure, CLI) es una especificacin estandarizada que describe un entorno virtual para la ejecucin de aplicaciones, cuya principal caracterstica es la de permitir que aplicaciones escritas en distintos lenguajes de alto nivel puedan luego ejecutarse en mltiples plataformas tanto de hardware como de software sin necesidad de reescribir o recompilar su cdigo fuente.Si bien el CLI tuvo sus orgenes en Microsoft (en principio se pensaba desarrollar un entorno de ejecucin compartido para COM con el nombre de Common Object Runtime, que luego de extendi y generaliz para dar lugar a CLI), sus especificaciones fueron llevadas ante ECMA (European Computer Manufacturers Association), una importante organizacin europea de estndares, para su estandarizacin en el ao 2000. Luego de un ao de trabajo conjunto entre ECMA, Microsoft y otras empresas que co-sponsorearon el proceso (Intel, HP, IBM y Fujitsu entre otras), el estndar ECMA-335 que define el entorno CLI finalmente vio la luz en diciembre de 2001. En abril del ao 2003 ISO ratific este estndar con el denominacin ISO/IEC 23271:2003 .Para comprender mejor la inclusin de cada una de las partes principales de la arquitectura de CLI es interesante analizar los objetivos de diseo que se plantearon desde su concepcin. Segn su especificacin, la arquitectura de CLI debe:Permitir escribir componentes nter operables independientemente de la plataforma subyacente y del lenguaje de programacin utilizado.Exponer todas las entidades programticas a travs de un nico sistema unificado de tipos (en la especificacin, este sistema es conocido como CTS, o Common Type System).Empaquetar todos los tipos en unidades completamente auto descriptivas y portables.Cargar los tipos de forma tal que se encuentren aislados unos de otros en tiempo de ejecucin, pero que puedan a su vez compartir recursos.Resolver dependencias entre tipos en tiempo de ejecucin usando una poltica flexible que pueda tener en cuenta la versin, atributos de localizacin y polticas administrativas.Ejecutar aplicaciones bajo la supervisin de un entorno privilegiado que permita controlar y hacer cumplir polticas en tiempo de ejecucin.Disear toda la infraestructura y servicios basndose en metadatos extensibles, de manera tal que toda la arquitectura pueda acomodarse con poco impacto a nuevas incorporaciones y cambios.Poder realizar tareas de bajo nivel, como carga de tipos en memoria, linkeo con libreras y compilacin a cdigo nativo slo cuando sea necesario (este enfoque se conoce tpicamente como on demand, o just in time).Proveer una serie de funcionalidades comunes mediante un grupo de libreras de programacin que los desarrolladores puedan utilizar para construir sus aplicaciones.

    Microsoft .NET de hecho es un sper conjunto de esta especificacin, es decir, provee todo lo necesario para cumplir con la misma y adems agrega una serie de herramientas, libreras y funcionalidades no contempladas por ella originalmente y que proveen una enorme utilidad y flexibilidad a los desarrolladores (por ejemplo, libreras para la creacin de aplicaciones y servicios web, acceso a motores de bases de datos, controles grficos, herramientas para desensamblar assemblies, debuggers, etc.). Si bien es gratuito, su cdigo fuente no es abierto, y es distribuido por Microsoft en versiones para sistemas operativos Windows 98 y sus sucesores nicamente.

    Para conocer otra implementacin desarrollada por Microsoft de la especificacin CLI distinta a .NET puede consultar: msdn.microsoft.com/net/sscli/

    Para conocer ms detalles acerca de .NET y la especificacin CLI puede consultar http://msdn.microsoft.com/netframework/ecma

  • Sub-Especificaciones de CLI

  • Modelo de Ejecucin del CLRVB.NETCdigoFuenteCompilador VB.NETC++.NETC#AssemblyCdigo MSILSistema Operativo (Windows)Common Language RuntimeCompilador JITCdigo NativoCdigo ManejadoComponenteNo ManejadoCompiladorC#CompiladorC++ .NETAssemblyCdigo MSILAssemblyCdigo MSIL

    La figura representa el modelo de compilacin y ejecucin de aplicaciones .NET, al cual muchas veces se denomina de compilacin diferida, o de compilacin en dos etapas. Esto es asi ya que el primer paso para poder ejecutar una aplicacin dentro del CLR es compilar su cdigo fuente para obtener un assembly con cdigo MSIL. Este paso es realizado por cada uno de los compiladores de los distintos lenguajes de alto nivel soportados por .NET.Luego, el CLR se encarga de compilar el cdigo MSIL a cdigo nativo que hace uso especfico de los servicios del sistema operativo y la plataforma de hardware subyacente.Todos los compiladores de los nuevos lenguajes .NET de Microsoft siguen este modelo de ejecucin, con excepcin de C++ .NET, que es el nico lenguaje al que se le ha dejado la capacidad de emitir tambin cdigo no manejado. Esto se debe a que ciertas aplicaciones, como los drivers de dispositivos, necesitan tener acceso a los recursos del sistema operativo a muy bajo nivel para lograr un rendimiento ptimo y mayor performance.

  • Modelo de Ejecucin del CLR

    InstalacinEjecucinPolicy

  • Application DomainsProcesos virtuales dentro del CLRSe ejecutan dentro de un proceso del Sistema OperativoUn proceso del sistema operativo puede contener varios AppDomainsMs eficiente que mltiples procesos del sistema operativoMs eficiente en el intercambio de contexto de ejecucinUn Assembly y sus tipos son siempre cargados dentro de un AppDomainProvee una frontera para: Fallos, Tipos, Seguridad

    Los sistemas operativos y los entornos de ejecucin normalmente proveen alguna forma de aislamiento entre aplicaciones, lo cual es necesario para asegurar que una aplicacin no pueda afectar de manera negativa a otra que se est ejecutando simultneamente.Un Application Domain (o Frontera de Aplicacin) es la mnima unidad de aislamiento de aplicaciones dentro del CLR, y todos los assemblies que conforman una aplicacin siempre son cargados dentro de uno. El aislamiento entre aplicaciones garantiza que:

    Una aplicacin pueda ser detenida independientemente del restoUna aplicacin no pueda acceder diractamente a cdigo en ejecucin o recursos de otra aplicacin (el CLR prohibe invocaciones directas entre objetos cargados en distintos Application Domains)Una falla en una aplicacin no afecte al resto de las aplicaciones en ejecucin.

    Para ms informacin acerca de los Application Domains puede consultarse el siguiente sitio web: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconapplicationdomains.asp o consultar la seccin.NET Framework> Inside the .NET Framework > Application Domains del .NET Framework SDK.

  • Application Domains - CLR Host

    El sistema operativo Windows no provee soporte para ejecutar directamente una aplicacin .NET mediante el CLR, sino que este soporte es provisto por los llamados CLR Hosts.Un CLR Host en una aplicacin responsable por cargar el CLR en un proceso del sistema operativo, crear los application domains necesarios dentro de ese proceso y ejecutar la aplicacin dentro de los application domains.

    Para ms informacin acerca de los CLR Hosts puede consultarse el siguiente sitio web: http://msdn.microsoft.com/library/en-us/cpguide/html/cpconruntimehosts.asp

  • CTS (Common Type System)Define un conjunto comn de tipos de datos orientados a objetosTodo lenguaje de programacin .NET debe implementar los tipos definidos por el CTS

    Todo tipo hereda directa o indirectamente del tipo System.ObjectDefine Tipos de VALOR y de REFERENCIA

    El sistema comn de tipos, conocido como CTS, provee una definicin comn de los tipos de datos bsicos que utiliza el CLR. El CTS posibilita, entre otras cosas, que todos los lenguajes de alto nivel que compilan contra una plataforma CLI compartan el mismo sistema de tipos de datos, permitiendo lograr una mejor interoperabilidad.El CTS define como se declaran, usan y manejan en tiempos de ejecucin los tipos de datos orientados a objetos que formarn el ncleo de cualquier aplicacin manejada.

    Para ms informacin acerca de CTS puede consultarse el siguiente sitio web:http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcommontypesystemoverview.asp

  • La Memoria y los Tipos de DatosEl CLR administra dos segmentos de memoria: Stack (Pila) y Heap (Montn)El Stack es liberado automticamente y el Heap es administrado por el GC (Garbage Collector)

    Los tipos VALOR se almacenan en el StackLos tipos REFERENCIA se almacenan en el Heap

    El CLR administra dos segmentos de memoria, los cuales son utilizados de distinta forma a lo largo del ciclo de vida de una aplicacin:El Stack, o Pila: es una seccin de memoria que almacena los tipos de valor (Value Types), llamados asi porque tanto su referencia como su valor se encuentran en la misma posicin de memoria. Ejemplos de tipos por valor en el CLR son los caracteres, los nmeros enteros y los booleanos. A estos tipos de dato tambin se los conoce como tipos primitivos. El stack se comporta como una lista LIFO (Last In First Out), donde se van apilando valores uno encima de otro y slo se puede recuperar un valor desapilando los que tiene por encima. La memoria ocupada por los Value Types es liberada automticamente por el CLR una vez que se finaliza el procedimiento o el bloque de cdigo donde fueron declarados.El Heap, o Montn: es unas seccin de memoria que almacena los tipos de referencia (Reference Types), llamados asi porque su almacenamiento se encuentra divididoEn el stack se almacena una referencia al contenido de la variableEn el heap se guarda el valor propiamente dicho de la variable

    Ejemplos de tipos por referencia son los Strings (cadenas de caracteres) y cualquier tipo de dato definido por el usuario (por ejemplo clases e interfaces que se creen a lo largo del desarrollo de una aplicacin).La memoria ocupada por los Reference Types es liberada automticamente por el Garbage Collector del CLR, de manera no determinstica (esto quiere decir que no se puede tener conocimiento acerca de en qu momento se liberar la memoria). El CLR no puede ser invocado por los desarrolladores, y nuca debe hacerse ninguna presuposicin acerca de cundo y cmo se ejecutar.

  • Temas a TratarIntroduccin a Microsoft .NET

    Componentes FundamentalesFuncionamiento Interno del CLRBibliotecas PrincipalesBase Class Library (BCL)ADO.NETWindows FormsASP.NET

  • Base Class Library

    System GlobalizationDiagnosticsConfigurationCollectionsResourcesReflectionNetIOThreadingTextServiceProcessSecurityInteropServicesRemotingSerialization

    Como ya hemos mencionado, la Base Class Library constituye los fundamentos de la .NET Framework Class Library, ya que provee la mayor parte de las funcionalidades elementales que pueden necesitarse para construir una aplicacin o servicio. En la figura se pueden apreciar los namespaces ms importantes que componen la BCL.Para ms informacin acerca de estos namespaces y sus funcionalidades includas puede consultarse el siguiente sitio web:http://msdn.microsoft.com/netframework/programming/bcl/default.aspx

  • Acceso a Datos: ADO.NET

    System.DataOleDbSqlClientOracleClientCommonOdbcSqlTypesSystem.XmlSerializationXPathXSLTSchema

    ADO.NET es un subconjunto de la .NET Framework Class Library, que contiene todas las funcionalidades necesarias para conectarse e interactuar con dos tipos de repositorios permamentes de informacin: Bases de Datos, como Microsoft SQL Server (clases del namespace System.Data, que se encuentran compiladas en System.data.dll) Archivos XML (clases del namespace System.XML, que se encuentran compiladas en System.Xml.dll)

    Una descripcin detallada acerca del modelo relacional de bases de datos est fuera del alcance del presente curso. Para obtener ms informacin al respecto puede consultarse el siguiente sitio web:http://msdn.microsoft.com/data/DataFundamentals/databasefundamentals/default.aspx

    Una descripcin detallada acerca del formato XML est fuera del alcance del presente curso. Para obtener ms informacin al respecto puede consultarse el siguiente sitio web:http://msdn.microsoft.com/XML/Understanding/default.aspx

    Para ms informacin acerca de ADO.NET puede consultarse el siguiente sitio web: http://msdn.microsoft.com/library/en-us/cpguide/html/cpconoverviewofadonet.aspEncontrar esta misma informacin en la siguiente seccin de la documentacin del .NET Framework SDK: .NET Framework> Programming with the .NET Framework> Accessing Data with ADO.NET

    Comenzaremos a hablar del acceso a bases de datos relacionales en primera instancia.

  • Acceso a Bases de Datos Relacionales Escenario Conectado Un entorno conectado es uno en el cual los usuarios estn constantemente conectados a la fuente de datos Ventajas:Mayor seguridadMejor control de concurrenciaLos datos se mantienen actualizados Desventajas:Se requiere una conexin constante (consume recursos del servidor)Escalabilidad

    En la actualidad se plantean dos tipos de escenarios de acceso a bases de datos relacionales. El primero de ellos es el que se conoce como Escenario Conectado, ya que en l se requiere una conexin fsica establecida con el servidor de datos durante todo momento para poder efectuar cualquier consulta o actualizacin sobre los datos.Esto tiene algunas ventajas y tambin sus desventajas. Algunas Ventajas:Al haber una nica conexin a la base de datos por usuario, o incluso a veces por aplicacin, establecida permanentemente, puede llegar a resultar ms sencillo administrar la seguridad y el acceso al servidor de datos. Lo mismo ocurre con el control de concurrencia: en un escenario donde mltiples usuarios se estuvieran conectando y desconectando permanentemente para realizar distintas acciones, este control sera ms difcil de llevar.Siempre la aplicacin tiene acceso a los datos actualizados

    Algunas Desventajas:Se requiere una conexin abierta todo el tiempo con el servidor de base de datos, lo cual consume recursos innecesariamente si no se la est utilizando.La escalabilidad del acceso a los datos se ve limitada por la cantidad de conexiones establecidas simultneamente contra el servidor de base de datos.

  • Acceso a Bases de Datos Relacionales Escenario Desconectado En un entorno desconectado, una parte de los datos del repositorio central se copia y modifica en forma local, para luego sincronizarse con ste. VentajasSe puede trabajar en forma independienteMayor escalabilidad y performance DesventajasLos datos no estn sinconizadosResolucin manual de conflictos

    El segundo escenario de acceso a bases de datos relacionales se conoce como Escenario Desconectado, ya que en l una parte de los datos del servidor central se copia localmente y puede luego ser consultada y actualizada sin contar con una conexin abierta. Luego si se desea puede establecerse una conexin con el servidor de base de datos para sincronizar los cambios efectuados sobre la copia local y actualizar los datos. Este tipo de funcionalidad es particularmente til para escenarios de usuarios mviles, que salen de su oficina con una laptop, un SmartPhone o una PocketPC y desean poder continuar trabajando por ms que no tengan conectividad fsica con el servidor de base de datos ubicado en la red interna de la empresa.Algunas ventajas que provee un escenario de acceso a datos desconectado son:La posibilidad de trabajar sobre los datos independientemente del resto de los usuarios de la aplicacinMayor escalabilidad en el acceso a datos y utlizacin ms ptima de recursos del servidor, ya que se mantiene en un mnimo indispensable la cantidad y duracin de conexiones abiertas.Mayor performance, al trabajar con una copia local de los datos.

    Algunas Desventajas:Puede ocurrir que en un momento dado un usuario no est accediendo a los datos ms actualizados del repositorio centralAl momento de sincronizar los cambios efectuados localmente contra el repositorio central pueden surgir conflictos, los cuales deben ser resueltos manualmente.

    ADO.NET soporta el acceso a datos tanto en escenarios conectados como desconectados.

  • ADO.NET - Arquitectura

    La arquitectura de ADO.NET est basada en el concepto de proveedores de acceso a datos, siendo un proveedor un conjunto de clases que permiten conectarse a una base de datos, ejecutar un comando sobre ella y tener acceso a los resultados de su ejecucin, tanto de forma conectada como desconectada. En las proximas diapositivas hablaremos con ms detalle de estos proveedores y las clases que los componen.Para ms informacin acerca de la arquitectura de ADO.NET puede consultarse el siguiente sitio web:http://msdn.microsoft.com/library/en-us/cpguide/html/cpconadonetarchitecture.aspEncontrar esta misma informacin en la siguiente seccin de la documentacin del .NET Framework SDK:Programming with the .NET Framework> Accessing Data with ADO.NET> Overview of ADO.NET

  • ADO.NET- Proveedores de Acceso a DatosSQL Server/Access (System.Data.SqlClient)OLE DB (System.Data.OleDb)ODBC (System.Data.Odbc)Oracle (System.Data.OracleClient)Otros provistos por terceros (MySQL, PostgreSQL, DB2, etc..)

    Los proveedores de acceso a datos ADO.NET (conocidos como Managed Data Providers) representan conjuntos especficos de clases que permiten conectarse e interactuar con una base de datos, cada uno utilizando un protocolo particular. El .NET Framework incluye cuatro proveedores de acceso a datos, que en conjunto le permiten conectarse e interactuar virtualmente con cualquier base de datos existente en la actualidad:Data Provider For SQL Server: es el proveedor de acceso nativo a servidores de bases de datos Microsoft SQL Server 7.0 o superior, y Microsoft Access. Al conectarse via protocolos nativos de bajo nivel, povee la alternativa ms performante para conexiones contra estos motores de bases de datos. Sus clases se encuentran en el namespace System.Data.SqlClient.Data Provider For OLE DB: es el proveedor de acceso a datos que permite interactuar via el protocolo estndar OLE DB con cualquier repositorio de datos que lo soporte. Sus clases se encuentran en el namespace System.Data.OleDb.Data Provider For ODBC: es el proveedor de acceso a datos que permite interactuar via el protocolo estndar ODBC con cualquier repositorio de datos que lo soporte. Sus clases se encuentran en el namespace System.Data.Odbc.Data Porvider For Oracle: es el proveedor de acceso nativo a bases de datos Oracle, desarrollado por Microsoft utilizando las herramientas de conectividad de Oracle. De esta forma puede lograrse un acceso ms performante a bases de datos Oracle desde aplicaciones .NET que utilizando ODBC u OLE DB. Sus clases se encuentran en el namespace System.Data.OracleClient, y estn compiladas en un assembly diferente al resto: System.Data.OracleClient.dll.

    ADO.NET provee una arquitectura extensible, posibilitando que terceras partes creen sus propios proveedores de acceso nativo para aplicaciones .NET. Algunos ejemplos de esto son:Data Provider For DB2, desarrollado por IBMOracle Data Provider For .NET, desarrollado por OracleProviders de acceso nativo a bases de datos OpenSource, como MySQL y PostgreSQL

    Es importante volver a destacar que utilizando estos proveedores de acceso a datos cualquier aplicacin .NET puede utilizar casi cualquier base de datos relacional existente en la actualidad como respositorio de informacin persistente (esto incluye, adems de MS SQL Server, a IBM DB2, Oracle, Sybase, Informix, TeraData, MySQL y PostgreSQL, entre otras).

    Para ms informacin acerca de los proveedores puede consultarse el siguiente sitio web:http://msdn.microsoft.com/library/en-us/cpguide/html/cpconadonetproviders.aspEncontrar esta misma informacin en la siguiente seccin de la documentacin del .NET Framework SDK:.NET Framework> Programming with the .NET Framework> Accessing Data with ADO.NET> Overview of ADO.NET

  • ADO.NET- Clases ms comunes

    Base de DatosXxxConnectionXxxCommandDataSetXxxDataReaderXxxDataAdapterManeja la coneccin a una base de datosEjecuta comandos contra una basede datosCopia local de datos relacionalesProvee acceso a datos read-only, Forward-onlyIntercambia datos entre un dataset y una base de datos

    En la figura se pueden apreciar las clases ms comunes que componen a todos los proveedores de acceso a datos de ADO.NET. Ntese que algunos nombres empiezan con las letras Xxx: esto se debe a que los nombres de esas clases varan segn el proveedor especfico que se est utilizando. Por ejemplo, la clase que representa una conexin con la base de datos usando el Data Provider For Sql Server es SqlConnection, mientras que si usamos el Data Provider For Oracle podemos obtener la misma funcionalidad de la clase OracleConnection. Mas all del ejemplo, pasemos a describir cada una de estas clases y su funcionalidad:

    XxxConnection: representa una conexin. Almacena, entre otras cosas, el string de conexin (connection string), y permite conectarse y desconectarse con una base de datos.XxxCommand: permite almacenar y ejecutar una instruccin SQL contra una base de datos, enviando parmetros de entrada y recibiendo parmetros de salida.

    Estas dos clases se utilizan tanto en escenarios conectados como desconectados.

    XxxDataReader: permite acceder a los resultados de la ejecucin de un comando contra la base de datos de manera read-only (slo lectura), forward-only (slo hacia adelante). Esta clase se utiliza en escenarios conectados, ya que no es posible operar sobre los registros de un DataReader estando desconectado de la fuente de datos.

    XxxDataAdapter y DataSet: en conjunto, estas clases constituyen el corazn del soporte a escenarios desconectados de ADO.NET. El DataSet es una representacin en memoria de una base de datos relacional, que permite almacenar un conjunto de datos obtenidos mediante un DataAdapter. El DataAdapter acta como intermediario entre la base de datos y el DataSet local desconectado. Una vez que el DataSet se encuentra lleno con los datos que se necesitan para trabajar, la conexin con la base de datos puede cerrarse sin problemas y los datos pueden ser modificados localmente. Por ltimo, el DataAdapter provee un mecanismo para sincronizar los cambios locales contra el servidor de base de datos. Ntese que la clase System.Data.DataSet no tiene el prefijo Xxx, ya que es independiente del proveedor de acceso a datos utilizado.

  • ADO.NET- DataSet

    DataSetDataTableRelacionesRestriccionesEsquema XML

    Como ya se ha mencionado, el DataSet es una representacin residente en memoria de datos relacionales, independiente de la base de datos y del protocolo utilizado para interactuar con la misma. Un DataSet, al igual que una base de datos, est compuesto por un conjunto de tablas (coleccin de clases DataTable), cada una de las cuales est compuesta a su vez por un conjunto de filas (coleccin de clases DataRow) y columnas (coleccin de clases DataColumn). Dentro de un DataSet pueden establecerse relaciones entre DataTables, y hasta restricciones de integridad referencial (Claves Primarias y Forneas). Internamente, los DataSets representan toda su estructura y datos contenidos en formato XML.

    Para ms informacin acerca de los proveedores puede consultarse el siguiente sitio web:http://msdn.microsoft.com/library/en-us/cpguide/html/cpcontheadonetdataset.aspEncontrar esta misma informacin en la siguiente seccin de la documentacin del .NET Framework SDK:.NET Framework> Programming with the .NET Framework> Accessing Data with ADO.NET> Overview of ADO.NET

  • ADO.NET vs. ADO

    ADO.NET es el sucesor de ADO (ActiveX Data Objects), la biblioteca de acceso a datos de la plataforma COM. Si bien ADO soporta slo escenarios conectados, puede resultar til hacer una analoga de las clases ms comunes utilizadas en ADO con respecto a sus nuevas versiones en ADO.NET:La clase Connection de ADO tiene su paralelo en las clases XxxConnection de los distintos proveedores de ADO.NETLa clase Command de ADO tiene su paralelo en las clases XxxCommand de los distintos proveedores de ADO.NETLa clase Recordset de ADO dej de existir como tal en ADO.NET. En su lugar existen en ADO.NET las clases XxxDataReader (es lo ms parecido a un Recordset read-only forward-only de ADO), y las nuevas clases DataSet y XxxDataAdapter para escenarios desconectados.

  • ADO.NET Accediendo a datos ConectadoEn un escenario conectado, los recursos se mantienen en el servidor hasta que la conexin se cierra1) Abrir Conexin2) Ejecutar Comando3) Procesar Filas en DataReader4) Cerrar Reader5) Cerrar Conexin

    En la diapositiva se listan los pasos genricos que habra que seguir para conectarse con una base de datos utilizando el modelo conectado. Para ver un ejemplo prctico de uso le recomendamos descargar la aplicacin de ejemplo que acompaa el material terico del presente curso.

  • ADO.NET Accediendo a datos DesconectadoEn un escenario desconectado, los recursos no se mantienen en el servidor mientras los datos se procesan1) Abrir Conexin2) Llenar DataSet mediante DataAdapter3) Cerrar Conexin4) Procesar DataSet5) Abrir Conexin6) Actualizar fuente de datos mediante DataAdapter7) Cerrar Conexin

    En la diapositiva se listan los pasos genricos que habra que seguir para conectarse con una base de datos utilizando el modelo desconectado. Se vern ejemplos prcticos de uso ms adelante a lo largo del curso.

  • ADO.NET - Soporte a XMLXmlTextWriterXmlTextReader

    XmlDocumentDocumentNavigatorXmlReaderXmlValidatingReaderXmlNodeReader

    Las clases que se muestran en la diapositiva ilustran una parte del extenso soporte a XML provisto por el .NET Framework, que va desde la simple lectura de un documento XML a su navegacin, bsqueda y transformaciones complejas.

    XmlReader clase abstracta cuyo propsito es proveer un mecanismo de lectura forward-only de un documento XML. Tiene tres clases derivadas:XmlTextReader utilizada para leer datos de un documento XML o un stream. Se utiliza normalmente cuando la performance de lectura es un factor clave y todo el sobreprocesamiento de DOM debe evitarse. XmlValidatingReader similar a XmlTextReader, pero pensada para validaciones DOM.XmlNodeReader permite leer datos de un nodo XML.

    XmlTextWriter permite que datos XML puedan ser escritos a un archivo XML o a un stream, y puede adems proveer mecanismos de validacin para asegurar que slo datos XML vlidos y bien formados sean escritos.

    XmlDocument esta es una clase compleja que acta como un contenedor de datos XML, representando en un modelo de objetos en memoria toda la esctructura de un documento XML. Esto permite tener facilidades de navegacin y edicin, pero a un cierto costo de performance y consumo de recursos.

    DocumentNavigator permite navegar libremente la estructura de un documento XML una vez que ha sido cargado dentro de una instancia de la clase XmlDocument.

  • Windows FormsSystem.DrawingDrawing2DImagingPrintingTextSystem.WinFormsDesignComponentModel

    El namespace System.Windows.Forms contiene las clases necesarias para crear aplicaciones basadas en formularios y ventanas de Windows, que aprovechan al mximo todas las posibilidades que el sistema operativo Windows tiene para ofrecer en trminos de interfaz de usuario. Entre estas clases podemos encontrar adems formularios, cuadros de dilogo y controls grficos necesarios para construir una interfaz de usuario rica.Windows Forms ser visto con mayor detalle en el mdulo correspondiente a la Estrella 2 del presente curso.

    Para ms informacin y recursos acerca de Windows Forms pueden consultarse los siguientes sitios web:http://www.windowsforms.net/http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsforms.asp

    Encontrar esta misma informacin en la siguiente seccin de la documentacin del .NET Framework SDK:.NET Framework> Reference> Class Library

  • Aplicaciones Web: ASP.NETSystem.WebCachingConfigurationServicesUISessionStateHtmlControlsWebControlsDescriptionDiscoverySecurityProtocols

    ASP.NET es un subconjunto de la .NET Framework Class Library que contiene las funcionalidades necesarias para desarrollar aplicaciones y servicios Web, y sus clases se encuentran dentro del namespace System.Web. ASP.NET no es slo la nueva versin de su predecesor, ASP, sino que provee un nuevo modelo unificado de programacin orientada a objetos que permite hacer uso de todos los servicios y facilidades del .NET Framework programando en cualquier lenguaje compatible con la plataforma. Por otra parte, nuevos servicios a nivel de infraestructura (seguridad, performance, estabilidad, configuracin, instalacin, mantenimiento) hacen que ASP.NET sea ideal para construir aplicaciones web de porte empresarial y misin crtica.ASP.NET ser vista con mayor detalle en el mdulo correspondiente a la Estrella 2 del presente curso.

    Para ms informacin y recursos acerca de ASP.NET pueden consultarse los siguientes sitios web:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconintroductiontoasp.asphttp://www.asp.net

    Encontrar esta misma informacin en la siguiente seccin de la documentacin del .NET Framework SDK:.NET Framework> Building Applications> Creating ASP.NET Web Applications

  • Temas a TratarIntroduccin a Microsoft .NET

    Componentes FundamentalesFuncionamiento Interno del CLRBibliotecas PrincipalesVentajas de .NET

  • Ventajas de .NETUnifica los modelos de programacinSimplifica an ms el desarrolloProvee un Entorno de Ejecucin robusto y seguroEs independiente del lenguaje de programacinInteroperabilidad con cdigo existenteSimplifica la instalacin y administracin de las aplicacionesEs Extensible

    Resumiremos a continuacin algunas de las principales ventajas que ofrece la plataforma Microsoft .NET segn los temas que se han ido tocando a lo largo del curso.

  • Unificando los Modelos

    Una de las principales ventajas de .NET es que unifica los modelos de programacin, bibliotecas de funcionalidad y entornos de ejecucin que existan anteriormente para distintos tipos de aplicaciones y distintos dispositivos.Anteriormente a .NET existan lenguajes, bibliotecas, entornos de ejecucin y herramientas de desarrollo distintas y especficas para cada tipo de aplicacin y dispositivo (Visual Basic, Visual C++, ASP/VBScript, Embedded Visual C++, etc.)..NET unifica todos esos modelos de programacin ofreciendo una nica API, un nico entorno de ejecucin, un nico conjunto de bibliotecas y una nica herramienta de desarrollo para cualquier tipo de aplicacin.

  • Desarrollo SimplificadoAlto nivel de abstraccinNo mas accesos COM a bajo nivelOrientado a Objetos desde el NcleoSistema de tipos unificado (CTS)Todo es un objeto, no mas variantsComponentes de SoftwarePropiedades, mtodos, eventos, y atributos incluidos en la construccin de clasesAPI organizada en forma Jerrquica

    Una de las principales ventajas de la plataforma .NET es que ofrece un modelo de desarrollo simplificado, basado en objetos que utilizan un sistema unificado de tipos de datos y se empaquetan en componentes reutilizables y auto descriptivos (los assemblies).

  • Entorno de Ejecucin Robusto y SeguroGestin automtica de la memoriaTodos los objetos son administrados por el Garbage CollectorManejo de ExcepcionesFuertemente tipadoSolo casteos segurosInicializacin de variables obligatoriaInstalacin con Cero ImpactoNo requiere registracin en la Registry

    Otra de las principales ventajas con las que cuenta la plataforma .NET es su robusto entorno de ejecucin (el CLR), que provee servicios a las aplicaciones en ejecucin y maneja su ciclo de vida reforzando la seguridad y abstrayendo a los programadores de optimizaciones y manejos de memoria de bajo nivel.

  • Independencia del lenguajeLibertad en la eleccin del lenguajeTodas las facilidades de la plataforma .NET estn disponibles a todos los lenguajes de programacin .NETLos componentes de una aplicacin .NET pueden ser escritos en distintos lenguajes de alto nivel compatibles con la plataformaHerramientas compartidasDebuggers, profilers, analizadores de cdigo, y otras trabajan para todos los lenguajes

    Otra de los grandes beneficios de .NET es su soporte a mltiples lenguajes de programacin, lo cual acelera la curva de aprendizaje de los desarrolladores permitiendo que cada uno elija en base a sus gustos personales. Adems, la posibilidad de utilizar las mismas herramientas de programacin y tener las mismas capacidades de acceso a la plataforma independientemente del lenguaje le proporcionan una flexibilidad sin precedentes.

  • Instalacin y Administracin ms simplesUnidades de Ensamblado (Assemblies)Mnima unidad de distribucin, versionado y administracin de seguridad de aplicaciones .NETAuto-descriptas a travs de unmanifiesto (manifest)Instalaciones Cero-impactoAplicaciones y componentes pueden ser compartidas o privadasVersioningMltiples versiones del mismo componente pueden co-existir, an en el mismo proceso

    .NET tambin simplifica, gracias al uso de assemblies auto-descriptivos, la instalacin y administracin de aplicaciones resolviendo gran parte de los problemas existentes en COM en lo que respecta la registracin de componentes, manejo de mltiples versiones en paralelo y compatibilidad de aplicaciones.

  • ExtensibilidadEl Framework no es una caja negraSus clases pueden ser extendidas a travs del mecanismo de herenciaA diferencia de COM, usamos y extendemos las clases en si mismas, no un wrapperHerencia entre distintos lenguajes

    Todas las clases incluidas en el .NET Framework son extensibles mediante los mecanismos de herencia propios de la orientacin a objetos. Esto posibilita que funcionalidades o controles grficos que no cumplan exactamente con una determinada necesidad pueden ser extendidos para agregarle o modificarle comportamiento sin tener que escribir todo el cdigo nuevamente.

  • Interoperabilidad

    C#C++VBOtros...COMCOM INTEROP

    La plataforma .NET provee un altsimo grado de interoperabilidad con otras aplicaciones:Interoperabilidad entre aplicaciones .NET escritas en distintos lenguajesInteroperabilidad entre aplicaciones .NET y aplicaciones COM, mediante un mdulo del CLR llamado COM-Interop. Esto permite reutilizar y aprovechar aplicaciones o componentes existentes desarrollados sobre la plataforma COM (por ejemplo Visual Basic 6).Interoperabilidad entre aplicaciones .NET y mltiples tipos de aplicaciones desarrolladas sobre otras plataformas de software o hardware, incluso plataformas no Microsoft, mediante la tecnologa de Servicios Web XML. Se tratar el tema de Servicios Web XML con mayor detalle en los mdulos correspondientes a las prximas estrellas del presente curso.

  • Temas a TratarIntroduccin a Microsoft .NET

    Componentes fundamentalesFuncionamiento internoBibliotecas PrincipalesVentajas de .NETHerramientas de Desarrollo .NETVisual Studio 2005SQL Server 2005 Express

  • Visual Studio 2005

    NovatosEntusiastasEstudiantesHobbyistsPart-TimersProfesionalesConsultoresDesarrolladoresArquitectosTestersVB6 Devs

    Visual Studio es la herramienta de desarrollo por excelencia de la plataforma .NET, siendo una herramienta nica que permite desarrollar cualquier tipo de aplicacin (Web, Windows, de Consola, para dispositivos Mviles, para Microsoft Office, de Bases de Datos y ms) en cualquiera de los lenguajes .NET provistos por Microsoft (C#, VB.NET, C++.NET y J#).La familia de Visual Studio 2005 tiene un producto a la medida de las necesidades y posibilidades de cada tipo de desarrollador, partiendo de la lnea gratuita de versiones Express a una suite completa de productos destinada a grandes equipos de desarrollo denominada Visual Studio Team System.

  • Visual Studio 2005 Express EditionsHerramientas de desarrollo gratuitasMuy livianas, fciles de usar y de aprenderDiseadas para entusiastas, estudiantes y desarrolladores principiantesHay varias ediciones, segn el tipo de aplicacin y el lenguajeTiene caractersticas avanzadas, por ejemplo:RefactoringCode SnippetsDiseadores WYSIWYGDepuradoresIntellisense

    Para descargar y aprender ms acerca de Visual Web Developer 2005 Express Edition, Visual Basic 2005 Express Edition, Visual C# 2005 Express Edition, Visual C++ 2005 Express Edition, y Visual J# 2005 Express Edition puede consultar el siguiente sitio web:http://msdn.microsoft.com/vstudio/express/default.aspx

    A lo largo del curso utilizaremos las versiones Express, por ser de acceso libre y gratuito, aunque normalmente se podrn realizar los ejericios y ver las aplicaciones de ejemplo en cualquier producto de la familia de Visual Studio 2005 (en caso contrario se indicar apropiadamente).

  • SQL Server 2005 ExpressLa nueva versin de MSDEEs gratuitoPreparado para trabajar integrado con .NET 2.0Tamao mximo de base: 4 GbMax. Conexiones Concurrentes: no tieneIncluye una interfaz de administracion y un editor de consultasMayor integracin con Visual Studio 2005

    SQL Server 2005 Express Edition es parte de la familia de productos del ms nuevo y sofisticado motor de bases de datos relacional de Microsoft: SQL Server 2005.Al igual que su predecesor, el MSDE, esta herramienta es gratuita y royalty free (se puede embeber en aplicaciones comerciales sin pagar regalas a Microsoft). Esta edicin express tiene ciertas limitaciones que la hacen inapropiada para soportar la operatoria de una organizacin, pero puede ser utilizada perfectamente como base de datos de escritorio, prueba o desarrollo. A lo largo del curso utilizaremos esta versin de SQL Server, por se de acceso libre y gratuito, aunque normalmente se podrn realizar los ejericios y ver las aplicaciones de ejemplo en cualquier producto de la familia de SQL Server 2005 (en caso contrario se indicar apropiadamente). Para descargar y aprender ms acerca de SQL Server 2005 Express Edition puede consultar el siguiente sitio web:http://msdn.microsoft.com/vstudio/express/sql/

  • Temas a TratarIntroduccin a Microsoft .NET

    Componentes fundamentalesFuncionamiento internoBibliotecas PrincipalesVentajas de .NETHerramientas de Desarrollo .NETNovedades en .NET 2.0

  • Temas a TratarNovedades en .NET 2.0GenericsSoporte para 64 bitsTipos ParcialesNivel de Accesibilidad de PropertiesNovedades en ADO.NET 2.0

    Veremos a continuacin algunas de las ms importantes novedades introducidas en la versin 2.0 del NET Framework, disponible a partir de Noviembre de 2005. Nos concentraremos en las novedades a nivel CLR y ADO.NET 2.0, ya que en los mdulos correspondientes a las prximas estrellas se tratarn las novedades de, entre otras cosas, WindowsForms 2.0 y ASP.NET 2.0.Para una lista completa de novedades y mejoras en el .NET Framework 2.0 puede consultarse el siguiente sitio web:http://msdn2.microsoft.com/en-us/library/t357fb32(en-US,VS.80).aspxLa misma informacin puede consultarse en el SDK del .NET Framework 2.0, en la seccin:.NET Framework > What's New in the .NET Framework > What's New in the .NET Framework Version 2.0

  • GenericsSon tipos parametrizados soportados por el CLRUn tipo parametrizado es aquel que puede definirse sin especificar los tipos de datos de sus parmetros en tiempo de compilacin.Nos dan la posibilidad de declarar clases, estructuras, mtodos e interfaces que actuarn uniformemente sobre valores cuyos tipos se desconocen a priori y son recin especificados al momento de su utilizacin

    El .NET Framework 2.0 introduce el concepto de generics, permitiendo la creacin de cdigo ms flexible y reutilizable. Por generics en realidad se entiende a una caracterstica del CLR que permite declarar clases, estructuras, interfaces y mtodos sin especificar en tiempo de compilacin los tipos de datos que almacenan o utilizan, y especificando en su lugar parmetros genricos. Los tipos reales de los datos se especifican cuando el tipo genrico es utilizado y no cuando es declarado, permitiendo definirlo una nica vez y utilizarlo muchas veces con parmetros de distinto tipo.Generics est soportado directamente por el CLR, aunque slo se puede hacer uso de esta caracterstica desde Visual Basic.NET, C# y C++ .NET.

    Para obtener ms informacin acerca de generics puede consultarse el siguiente sitio web:http://msdn2.microsoft.com/en-us/library/ms172193.aspx

    La misma informacin se encuentra disponible en la siguiente seccin del .NET Framework 2.0 SDK:.NET Framework > Core Development Technologies > Development Fundamentals > Generics

  • Generics - EjemploDefiniendo una clase genrica en C#

    Utilizando una clase genrica en C#

    public class ClaseGenerica { public T atributo;}ClaseGenerica g = new ClaseGenerica();g.atributo = Un string";g.atributo = 2; //Genera Error de CompilacinClaseGenerica g2 = new ClaseGenerica();g2.atributo = 2; //NO genera error de compilacin

    Al definir una clase genrica especificamos un contenedor, o parmetro de tipo genrico, para los tipos de dato que sta almacenar y utilizar. Este parmetro de tipo genrico se identifica con la letra T.Al crear una instancia de una clase genrica se debe especificar el tipo de dato real que ser utilizado en lugar del parmetro de tipo genrico. De esta forma, el tipo de dato que definamos al instanciar la clase genrica reemplazar al tipo genrico en todos los lugares donde ste aparezca.

    Para ver ms ejemplos sobre el uso prctico de generics es recomendable revisar el cdigo fuente de la aplicacin de referencia que acompaa el presente mdulo del curso.

  • Generics - EjemploDefiniendo una clase genrica en VB.NET

    Utilizando una clase genrica en VB.NET

    Public Class ClaseGenerica(Of T) Public atributo As TEnd ClassDim g As New ClaseGenerica(Of String) g.atributo = Un string"g.atributo = 2 Genera error de compilacinDim g2 As New ClaseGenerica(Of Integer) g2.atributo = 2 NO genera error de compilacin

    Al definir una clase genrica especificamos un contenedor, o parmetro de tipo genrico, para los tipos de dato que sta almacenar y utilizar. Este parmetro de tipo genrico se identifica con la letra T.Al crear una instancia de una clase genrica se debe especificar el tipo de dato real que ser utilizado en lugar del parmetro de tipo genrico. De esta forma, el tipo de dato que definamos al instanciar la clase genrica reemplazar al tipo genrico en todos los lugares donde ste aparezca.

    Para ver ms ejemplos sobre el uso prctico de generics es recomendable revisar el cdigo fuente de la aplicacin de referencia que acompaa el presente mdulo del curso.

  • Generics - ColeccionesColecciones Genricas Vs. Colecciones Tradicionales

    System.Collections.GenericSystem.CollectionsComparerComparerDictionary HashTableList ArrayListQueue QueueSortedDictionary SortedListStack StackICollection ICollectionIComparable System.IComparableIComparer IComparerIDictionary IDictionary IEnumerable IEnumerableIEnumerator IEnumeratorIKeyComparer IKeyComparerIList IList

    El .NET Framework 2.0 incluye en el namespace System.Collections.Generic una serie de colecciones genricas que, siempre que sea posible, deberan ser utilizadas en lugar de sus equivalentes de System.Collections. En la tabla se pueden ver las nuevas colecciones e interfaces genricas, junto con sus equivalentes no genricas del namespace System.Collections.Las colecciones de System.Collections estn preparadas para recibir y devolver un System.Object (clase base de todas las clases .NET), y dejan a responsabilidad de los desarrolladores el casteo al tipo de dato correspondiente al obtener un elemento determinado. Las colecciones genricas, en cambio, son fuertemente tipadas, ya que al momento de instanciarse se define el tipo de dato de los objetos que almacenar, y el compilador hace uso de esa definicin para permitir insertar y obtener solamente elementos de ese tipo sin tener que realizar ninguna conversin.

  • Generics - ColeccionesSin generics

    Con generics

    Las dos desventajas principales de la utilizacin de de colecciones no genricas son:Performance: como almacenan System.Object, cualquier tipo por referencia que agregue a la coleccin ser casteado automticamente a un Object, y cualquier tipo por valor deber ser convertido su correspondiente tipo por referencia para ser casteado luego a Object (a esta operacin se la conoce como Boxing). Los casteos y operaciones de boxing/unboxing necesarias para insertar y obtener elementos de las colecciones no genricas tienen un impacto negativo en la performance de las mismas.Falta de validacin en tiempo de compilacin: al almacenar objetos de tipo System.Object, no hay forma de que el compilador valide que los datos que se estn insertando en una coleccin sean vlidos para la aplicacin.

    Estos dos problemas se solucionan, como se puede apreciar en el ejemplo de cdigo fuente, con el uso de las colecciones genricas.

  • Generics - ColeccionesSin generics

    Con generics

    Las dos desventajas principales de la utilizacin de de colecciones no genricas son:Performance: como almacenan System.Object, cualquier tipo por referencia que agregue a la coleccin ser casteado automticamente a un Object, y cualquier tipo por valor deber ser convertido su correspondiente tipo por referencia para ser casteado luego a Object (a esta operacin se la conoce como Boxing). Los casteos y operaciones de boxing/unboxing necesarias para insertar y obtener elementos de las colecciones no genricas tienen un impacto negativo en la performance de las mismas.Falta de validacin en tiempo de compilacin: al almacenar objetos de tipo System.Object, no hay forma de que el compilador valide que los datos que se estn insertando en una coleccin sean vlidos para la aplicacin.

    Estos dos problemas se solucionan, como se puede apreciar en el ejemplo de cdigo fuente, con el uso de las colecciones genricas.

  • Soporte para 64 bitsEl CLR 1.x slo tiene soporte para aplicaciones de 32 bitsNo aprovechan las caractersticas de los sistemas operativos de 64 bits, ya que se ejecutan emuladasEl CLR 2.0 tiene una versin de 64 bitsPermite compilar aplicaciones para que hagan uso nativamente de las nuevas caractersticas de los sistemas operativos y procesadores de 64 bits

    .NET 2.0 proporciona soporte nativo a las nuevas plataformas de procesadores y sistemas operativos de 64 bits, mejorando la performance, estabilidad y rendimiento de aplicaciones de procesamiento intensivo y alto uso de memoria.

    Para obtener ms informacin acerca del soporte para plataformas de 64 bits puede consultarse el siguiente sitio web:http://msdn.microsoft.com/netframework/programming/64bit/default.aspx

    La misma informacin se encuentra disponible en la siguiente seccin del .NET Framework 2.0 SDK:.NET Framework > Core Development Technologies > 64-bit Applications

  • Tipos ParcialesPermiten la declaracin de un tipo en varios archivos fsicosVlido para clases y estructuras Vlido para interfaces slo en C#Utilizan la palabra clave partial en la declaracinSu uso puede tener varias ventajasDividir implementaciones complejas en partes pequeasSeparacin de cdigo auto-generadoMtiples desarrolladores pueden trabajar sobre distintas secciones del mismo tipo simultneamentePuede facilitar el mantenimiento y el control de versiones de cdigo

    En las versiones 1.x del CLR las clases deben definirse en su totalidad dentro de un nico archivo fuente que se compila como una unidad. Existen casos donde se necesita o se quiere definir una clase en ms de un archivo, como por ejemplo en escenarios donde interviene un generador automtico de cdigo. Para posibilitar esto la versin 2.0 del CLR incorpora el concepto de Tipos Parciales: con slo agregar la palabra partial a la definicin de la clase se est indicando que hay partes de la definicin de la misma en otros archivos. Esta caracterstica tambin puede resultar til a la hora de querer que mltiples desarrolladores trabajen en partes distintas de la misma clase utilizando mecanismos de control de versiones.

    Para obtener ms informacin acerca de los tipos parciales pueden consultarse los siguientes sitios web:http://msdn2.microsoft.com/en-us/library/wa80x488.aspxhttp://msdn2.microsoft.com/en-us/library/yfzd5350.aspx

  • Tipos Parciales - Ejemplo

    // Demo.Part1.csusing System;public partial class Demo{ public Demo() { Console.Write( "P1" ); }}// Demo.Part2.cspublic partial class Demo{ private int i;}

    // Demo.Part3.cs// Error 1!public class Demo{ // Error 2! private int i; // OK private int j;

    public void Test() { // Error 3! Console.Write( "P3" ); }}

    Este ejemplo de cdigo ejemplifica el uso de los tipos parciales, y muestra algunos de los errores ms comunes:

    Error 1: causado por la falta de la palabra partial en la definicin de la claseError 2: causado por la re-declaracin de la variable i, declarada previamente en Demo.Part2.csError 3: causado por la falta del using System en Demo.Part3.cs. Por ms que se est haciendo un using del namespace System en Demo.Part1.cs, cada parte debe escribir los nombres completos de cada clase o declarar sus propios using.

  • Tipos Parciales - Ejemplo

    ' Demo.Part1.vbImports System

    Partial Public Class Demo Public Sub New() Console.Write("P1") End SubEnd Class

    ' Demo.Part2.vbPartial Public Class Demo Private i As IntegerEnd Class

    ' Demo.Part3.vb' OK en VB.NETPublic Class Demo ' Error 2! Private i As Integer ' OK Private j As Integer

    Public Sub Test() ' OK en VB.NET Console.Write("P3") End Sub

    End Class

    Aqui vemos la versin VB.NET del ejemplo de la diapositiva anterior. Los errores 1 y 3, que se producan en C#, no se producen en Visual Basic.NET ya que el lenguaje permite ese tipo de comportamientos.

  • Modificadores de acceso El CLR 2.0 permite especificar diferentes modificadores de acceso para el get y el set de las propiedades e ndicesPermite solamente modificar uno de los dos elementos de acceso, mientras que el otro toma el nivel de acceso de la propertyPuede especificar ms restriccionesMejora el encapsulamiento de atributos

    Hasta ahora una property poda ser pblica o privada en su totalidad, tanto para el get como para el set. Esto cambi en .NET 2.0, que permite definir un nivel de acceso diferente para cada operacin dentro de la property (tpicamente se quiere tener el get como pblico y el set como privado, o protegido).

  • Modificadores de acceso - Ejemplos

    public class Customer{ private string id; public string CustomerId { public get { return id; } private set { id = value; } }}Public Class Customer Private id As String Public Property CustomerId() As String Get Return Me.id End Get Private Set(ByVal value As String) Me.id = value End Set End PropertyEnd Class

  • Novedades en ADO.NET 2.0API independiente del proveedor ADO.NETModelada bajo el patrn Abstract FactoryOperaciones AsincrnicasPermite ejecutar comandos contra la base de datos de manera asincrnica no bloqueanteMultiple Active Result Sets (MARS)Permite tener mltiples DataReaders abiertos sobre la misma conexin

    ADO.NET 2.0 incluye una serie de mejoras y optimizaciones muy interesantes, que mejorarn la experiencia de desarrollo y ejecucin de aplicaciones que interactan con bases de datos.Mencionaremos a continuacin algunas de las ms importantes.Junto con .NET 2.0 fue liberada al mercado la versin 2005 de MS SQL Server, el motor de base de datos relacional de Microsoft. Estas dos plataformas han sido diseadas para integrarse y trabajar en conjunto, al punto tal que SQL Server 2005 tiene embebido un entorno de ejecucin CLR. Esto le permite ejecutar cdigo .NET nativamente dentro del ambiente del servidor de base de datos, abriendo un nuevo abanico de posibilidades a la hora de desarrollar aplicaciones de datos. ADO.NET 2.0 permite aprovechar al mximo todas las nuevas caractersticas includas en SQL Server 2005.Para obtener una lista completa de las nuevas caractersticas de ADO.NET 2.0 puede consultarse el siguiente sitio web:http://msdn2.microsoft.com/en-us/library/ex6y04yf.aspxLa misma informacin puede encontrarse en la siguiente seccin de la documentacin del .NET Framework 2.0 SDK:Development Tools and Languages>Visual Studio>.NET Framework Programming in Visual Studio>Accessing Data>ADO.NET>What's New in ADO.NET

  • Novedades en ADO.NET 2.0Integracin y aprovechamiento de caractersticas de SQL Server 2005Notification ServicesService BrokerTipo de dato XMLSoporte a Servicios WebMejoras en el DataSet y DataTablePerformanceSerializacinSoporte a XML

    Para obtener una lista completa de las nuevas caractersticas de ADO.NET 2.0 puede consultarse el siguiente sitio web:http://msdn2.microsoft.com/en-us/library/ex6y04yf.aspxLa misma informacin puede encontrarse en la siguiente seccin de la documentacin del .NET Framework 2.0 SDK:Development Tools and Languages>Visual Studio>.NET Framework Programming in Visual Studio>Accessing Data>ADO.NET>What's New in ADO.NET

  • ADO.NET 2.0 API IndependienteNamespace System.Data.Common

    DbCommandDbCommandBuilderDbConnectionDataAdapterDbDataAdapterDbDataReaderDbParameterDbParameterCollectionDbTransactionDbProviderFactoryDbProviderFactoriesDbException

    En ADO.NET 1.x, los proveedores manejados de acceso a datos trabajan cada uno con su conjunto de clases independientes, por ejemplo:4 clases para representar una conexin, todas implementando una misma interfaz:SqlConnectionOracleConnectionOdbcConnectionOleDbConnection

    De esta forma, tenemos tantas clases XxxCommand, XxxDataAdapter, XxxConnection y XxxDataReader como proveedores de acceso haya en ADO.NET. Esto lleva a la escritura de cdigo que utiliza clases especficas de un proveedor, el cual deber ser moficiado ante un cambio en la infraestructura de base de datos sobre la que opera la aplicacin. Obviamente no resulta beneficioso ni recomendable tener que modificar extensivamente el cdigo fuente de una aplicacin por el hecho de cambiar de proveedor de bases de datos.Por este motivo, las clases de ADO.NET 2.0 han sido modificadas y reorganizadas para proveer ahora una API (Interfaz de Programacin de Aplicaciones) limpia, consistente y genrica para todos los tipos de proveedores. El coran de esta API lo constituyen una serie de nuevas clases base abstractas, que podemos ver en la figura, ubicadas en el namespace System.Data.Common.Por ms que la aplicacin utilice MS SQL Server como base de datos, ya no es necesario utilizar las clases Sql* del proveedor manejado de ADO.NET, sino que en su lugar se recomienda la utilizacin de las nuevas clases genricas Db*. El uso de estas clases es independiente de la base de datos seleccionada, lo cual permite escribir el cdigo de acceso a datos una nica vez.

    Para obtener un ejemplo de utilizacin prctica de esta API independiented del proveedor de acceso a datos se recomienda analizar el cdigo fuente de la aplicacin de ejemplo que acompaa el presente curso.

  • ADO.NET 2.0 API Independiente

    Para ms detalles acerca del nuevo modelo de clases genricas de ADO.NET 2.0 puede consultarse el siguiente sitio web:http://msdn2.microsoft.com/en-us/library/t9f29wbk.aspx

    Para obtener un ejemplo de utilizacin prctica de esta API independiented del proveedor de acceso a datos se recomienda analizar el cdigo fuente de la aplicacin de ejemplo que acompaa el presente curso.

  • ADO.NET 2.0 - DataSetMejoras de performanceMantienen indices internos de los registros de sus DataTablesSerializacin binaria del contenidoEl DataSet 1.x es siempre serializado a XMLBueno para integrar datos, malo en performanceEl DataSet 2.0 soporta serializacin binaria Rpido y compactoDataSet.RemotingFormat = SerializationFormat.Binary

  • ADO.NET 2.0 - DataTableOperaciones comunes del DataSet tambin disponibles en el DataTable:ReadXml, ReadXmlSchema, WriteXml, WriteXmlSchema, Clear, Clone, Copy, Merge, GetChanges DataTable es auto-serializable:Buen mecanismo para transmitir datos en una aplicacin distribuda

  • ADO.NET 2.0 - Tipo de dato XML en el DataSetDataTable acepta columnas de tipo XMLSystem.Data.SqlTypes.SqlXml Expuestas como una instancia de XPathDocumentPueden accederse va XmlReaderFacilidades para trabajar con documentos XML como un conjunto de valores

  • ADO.NET 2.0 - Actualizaciones BatchADO.NET 2.0 permite ejecutar mltiples instrucciones SQL sobre una base de datos de forma batch, usando el sp_executesqlReduce trfico de redDataAdapter.UpdateBatchSize = batch_sizeTrabaja con transaccionesTrabaja con los proveedores para SQL Server y Oracle

  • 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

    Esta presentacin constituye el material terico, y est acompaada de una aplicacin de ejemplo descargable por separado y que ilustra de manera prctica los conceptos ms relevantes. Es altamente recomendable q