Framework Net

download Framework Net

of 38

description

Temas a tratar Componentes fundamentales Arquitectura del .Net FrameworkCLR - Componentes internosCLR - Common Language RuntimeCLR - procesos de compilación CLR – Microsoft Intermediate Language (MISIL)Qué es un Assemblies?Assemblies – Aplicaciones .NET.NET Framework Class LibraryCommon Language Specification (CLS)CLS – Elección del Lenguaje

Transcript of Framework Net

  • Programacin e Ingeniera de Software IIIInformticaUNIVERSIDAD AUTNOMA DE SINALOAMaterial Proporcionado por: MC. Gerardo Glvez Gmez

  • Temas a TratarComponentes FundamentalesArquitectura del .NET FrameworkCLR Arquitectura de Ejecucin de AplicacionesCLR Common Language RuntimeCLR Componentes InternosCLR Procesos de CompilacinCLR Microsoft Intermediate Language (MISIL)Qu es un Assemblies?Assemblies Aplicaciones .NET.NET Framework Class LibraryCommon Language Specification (CLS)CLS Eleccin del Lenguaje

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

  • CLR - Arquitecturas de Ejecucin de Aplicaciones

  • 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 (multi-hilos)

  • CLR Componentes Internos

  • Cdigo FuenteCualquier lenguaje .NETCLR Proceso de Compilacin

  • 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 }

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

  • 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

  • .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

  • .NET Framework Class LibraryEl namespace raz es SYSTEMSystem System.DataSystem.XmlSystem.WebGlobalizationDiagnosticsConfigurationCollectionsResourcesReflectionNetIOThreadingTextServiceProcessSecurityCommonOleDbSqlClientOdbcXPathXSLTRuntimeInteropServicesRemotingSerializationSerializationConfigurationSessionStateCachingSecurityServicesDescriptionDiscoveryProtocolsUIHtmlControlsWebControlsSystem.DrawingImagingDrawing2DTextPrintingSystem.Windows.FormsDesignComponentModel

  • 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

  • Common Language Specification (CLS)El resto de la industria y el sector acadmico han desarrollado ms de 20 lenguajes compatibles con la especificacin CLSCobolEiffelFortranPascalPerlC++.NETC#HaskellJavaJavaScriptVisual Basic.NETMercuryMLPHPObjective CamlOberonSmalltalkSchemeJ#RPGMondrianAPLDelphiPythonLISPProlog

  • 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

  • Temas a Tratar Funcionamiento Interno del CLRModelo de ejecucin del CLRCommon Type System (CTS)La memoria y los tipos de datos

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

  • Esquema con el proceso de compilacin llevado a cabo por elcompilador Just-In-Time (JIT)

  • Modelo de Ejecucin del CLRInstalacinEjecucinPolicy

  • El CTS, Common Type SystemEl Sistema Comn de Tipos o CTS (Common Type System), es el mecanismo del CLR que permite definir el modo en que los tipos sern creados y manipulados por el entorno de ejecucin de .NET Framework.

    Entre las funcionalidades que comprende destacan:La integracin de cdigo escrito en diferentes lenguajes; Optimizacin del cdigo en ejecucin;Un modelo de tipos orientado a objeto, que soporta mltiples lenguajes; y Una serie de normas que aseguran la intercomunicacin entre objetos.

  • 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 CTSTodo tipo hereda directa o indirectamente del tipo System.ObjectDefine Tipos de VALOR y de REFERENCIA

  • Ventajas del CTSDesde un lenguaje como VB.NET, podemos instanciar un objeto de una clase escrita en otro lenguaje como C#; y al hacer una llamada a uno de los mtodos del objeto, no es necesario realizar conversiones de tipos en los parmetros del mtodo, funcionando todo de forma transparente.

  • 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

  • Temas a TratarBibliotecas PrincipalesBase Class Library (BCL)Acceso a Datos (ADO.NET)ADO.NET Proveedores de Acceso a DatosWindows FormsAplicaciones Web : ASP.NET

  • Base Class LibrarySystem GlobalizationDiagnosticsConfigurationCollectionsResourcesReflectionNetIOThreadingTextServiceProcessSecurityInteropServicesRemotingSerialization

  • Acceso a Datos: ADO.NETSystem.DataOleDbSqlClientOracleClientCommonOdbcSqlTypesSystem.XmlSerializationXPathXSLTSchema

  • 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..)

  • Windows FormsSystem.DrawingDrawing2DImagingPrintingTextSystem.WinFormsDesignComponentModel

  • Aplicaciones Web: ASP.NETSystem.WebCachingConfigurationServicesUISessionStateHtmlControlsWebControlsDescriptionDiscoverySecurityProtocols

  • Temas a TratarVentajas de .NETVentajas de .NETDesarrollo simplificadoEntorno de ejecucin robusto y seguroIndependencia del lenguajeExtensibilidadInteroperabilidad

  • 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

  • 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

  • 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

  • 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

  • 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

  • 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

  • Interoperabilidad con otras aplicacionesC#C++VBOtros...COMCOM INTEROPpor ejemplo Visual Basic 6

  • 2007. All rights reserved.FIN

    **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.*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. *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.*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.*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.

    *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

    *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.*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.*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.*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.*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++.NETEsto 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

    *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. *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.**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.*Aqui podemos ver el modelo de ejecucin del CLR en accin. Sus tres pasos principales son: Desarrollo, cuya salida es una aplicacin .NET compuesta de uno o ms assemblies Instalacin o Deployment: es el proceso de instalar y configurar la aplicacin .NET en el dispositivo fsico en el que debe ejecutarse Ejecucin: aqui es donde los componentes del CLR empiezan a actuar, cargando el assembly en memoria, revisando su metadata y poltica de seguridad para ver si puede ejecutarse o no, cargando las clases y compilndolas luego a cdigo nativo a medida que se las va utilizando.*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*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 variableEjemplos 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.**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

    *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.*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

    *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

    *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

    **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.

    *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).*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.*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.*.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.*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.*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.*