visual basic brain upgrade.pdf

Upload: smith-jose-solis-bermudez

Post on 13-Apr-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    1/48

    Visual Basic .Net Brain Upgrade

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    2/48

    Visual Basic .Net Brain Upgrade

    Visual Basic.NET

    Brain Upgrade

    Erich Bhler

    Esta es una versin DEMO, mas detalles en:

    www.vblibros.com

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    3/48

    Visual Basic .Net Brain Upgrade

    Nota de Copyright

    Todos los derechos reservados. Ninguna parte de este libro puede ser reproducida,almacenada, o transmitida bajo ninguna tecnologa, sin el consentimiento por escrito

    del autor. En el caso de que se use el contenido de este libro para cualquierartculo o documento se deber citar la fuente.

    La informacin ofrecida en este libro no tiene garanta implcita o explicita, y elautor no se hace responsable por los daos causados directa o indirectamente por elmaterial contenido.

    La versin de demostracin del l ibro es de l ibr e distri bucinEste versin est sujeta a cambios.

    Primera edicin: Marzo-2001Edicin actual: Marzo-2001

    2001 Erich Bhler

    In fo rm ac in so bre Marcas reg is t radas y /o Empresas

    El autor ha se ha esforzado por proveer toda la informacin de compaas y productosmencionados en este libro utilizando las formas apropiadas de nomenclatura. Noobstante, no se puede asegurar la exactitud de la misma.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    4/48

    Visual Basic .Net Brain Upgrade

    Crditos

    Autor Revisiones Tcnicas

    Erich Bhler Ing. Eduardo CarreiraRicardo Coulthurst

    Diseo de Tapa Agradecimientos

    Santiago Carreira Ing. Eduardo CarreiraErich Bhler Santiago Carreira

    Wilson PaisAndy Gonzalez

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    5/48

    Visual Basic .Net Brain Upgrade

    Recom endac iones p ara u t i l i zar es te l ib ro

    Para ejecutar los ejemplos de este libro, necesitar un mnimo de:

    q Pentium II de 300 MHz con 128 MB de RAM, y al menos 10 MB de espacioen disco rgido.

    q Microsoft Windows 2000

    q Microsoft Internet Explorer 5.5 o superior

    q IIS

    q Motor de base de datos compatible con OLEDB

    q Visual Basic.NET

    Convenc iones u t i l i zadas

    En este libro se utilizan diferentes estilos de letras y composiciones, a los efectos deayudarlo a diferenciar entre los diferentes tipos de informacin. Los estilos de notasimportantes se presentan de la siguiente manera:

    q Las palabras importantes aparecen en negrita

    q Siglas o palabras en ingles aparecen eneste formato

    q Los hipervnculos aparecen en este formatohttp://www.vblibros.com

    q Objetos, funciones o cdigo aparecen eneste formato

    q Las anotaciones aparecen en este formato

    q Si el ejemplo es importante aparece de la siguiente forma:

    No debe olvidarse de liberar la memoria, de lo contrario puede producirse un

    error de proteccin general al salir de la aplicacin.

    Protected Sub RadioButton1_CheckedChanged(ByVal sender As _

    Object, ByVal e As System.EventArgs)

    End Sub

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    6/48

    Tabla de Contenidos

    Nota del Autor

    El objetivo de este libro es minimizar la curva de aprendizaje hacia la nueva versinMicrosoft Visual Basic .NET.

    Los cambios a nivel de lenguaje y arquitectura son enormes, y de hecho he tratadoque el material aqu contenido pueda ser til tanto para una persona que desee migrara esta nueva versin, como para quien desee aprender algo mas del lenguaje.

    Al final del libro encontrar un glosario tecnolgico, donde se explayan nombres,siglas, y su significado.

    El libro est lleno de ejemplos y prcticas que hacen del aprendizaje o migracin masameno, no obstante, sus recomendaciones son bienvenidas y tomadas para futurasrevisiones. Adicionalmente, al inicio de cada captulo podr encontrar el objetivo delmismo, el nivel de dificultad, y vnculos puede consultar.

    He tratado de cubrir los aspectos mas importantes de esta nueva versin, pero siconsidera que algn punto puede ser importante de incluir, pnganse en contactoconmigo.

    Atentamente,Erich [email protected]

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    7/48

    Tabla de Contenidos

    Tabla de contenidos

    Captulo 1

    Un poco de historia... .....................................................................................................1

    Qu hay de nuevo en VB.NET ? ..................................................................................2Nueva Interfase ..........................................................................................................2Windows Forms ......................................................................................................4Formularios Web (Web Forms) .................................................................................7Servicios Web (Web Services) ..................................................................................8ADO.NET................................................................................................................11

    La realidad Distribuida es Internet...............................................................................14Visual Basic como lenguaje alternativo................................................................14La divisin en servicios............................................................................................14Aplicaciones en 1 capa: 3 servicios en 1..................................................................15Aplicaciones en 2 capas ...........................................................................................16

    Aplicaciones en 3 capas ...........................................................................................17Hablemos de COM y Visual Basic...........................................................................18

    En el infierno DLL...................................................................................................22Distribucin de una aplicacin.................................................................................23Recurso de versin...................................................................................................24

    Dime en que programas y te dir quien eres................................................................26Qu es Common Languaje Runtime? ....................................................................27Cdigo Manipulado .................................................................................................29Interaccin entre lenguajes.......................................................................................30Los Dominios...........................................................................................................31El colector de Basura ...............................................................................................33La solucin al infierno DLL: Ensamblados (Assembly) .........................................36

    Qu ver en los prximos captulos?..........................................................................40Captulo 2Conociendo la nueva IDE ...........................................................................................Captulo 3Una nueva modalidad de crear formularios: Windows Forms ...................................Captulo 4Orientacin a objetos ...................................................................................................Captulo 5

    Internet al mximo con Web Forms y Web Services .................................................Captulo 6Potenciando la interfase grfica con GDI+ .................................................................Captulo 7Acceso a datos mediante ADO.NET ..........................................................................Captulo 8.Programacin avanzada ..............................................................................................

    20 pasos a seguir para migrar de VB6 a VB7 .........................................................

    Glosario tecnolgico ..................................................................................................

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    8/48

    Captulo 1

    Introduccin a la plataforma .NET

    Descripcin: Este captulo es una introduccin a la plataforma .NET, ascomo las nuevas caractersticas de VB.NET

    Vnculos adicionales: http://www.Microsoft.com/net http://www.Microsoft.com/vbasic

    Accesible Medio Complejo

    Nivel de Dificultad

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    9/48

    Introduccin a la Plataforma .NET

    1

    Este primer captulo presenta la evolucin del Microsoft Visual Basic, as comoun resumen de cada una de las nuevas tecnologas incluidas en VB.NET .

    Puede omitirlo si lo que desea es conocer las caractersticas propias de esta nuevaversin de Microsoft Visual Basic, pero debido al gran nmero de cambios a nivel

    programtico y tecnolgico, es recomendable que comience por entender el nuevoparadigma, que responde a un avance o solucin a problemas planteados portecnologas utilizadas actualmente.

    Un poco de historia...Generalmente, una nueva versin de Microsoft Visual Basic implica la insercinde alguna tecnologa y/o extensin del lenguaje. En muchos casos los cambiostecnolgicos en Microsoft Visual Basic no implicaban grandes modificacionesdesde el punto de vista del lenguaje (programticos), aunque s generalmenteagregaban nuevas palabras, procesos, y/o formas a la hora de implantar la solucin.

    De esta forma, muchos desarrolladores pudieron mantener el mismo nivel deconocimientos trabajando simultneamente en diferentes versiones, sin que esto

    produjese la necesidad imperiosa de aprender las caractersticas de la nueva versin.En muchos casos el desarrollador continuaba utilizando tecnologas de versionesanteriores en las mas recientes, ya sea por comodidad, estabilidad, o porque la nuevatecnologa no le ofrece grandes beneficios.

    Excepto en la migracin de Microsoft Visual Basic 3.0 a Microsoft VisualBasic 4.0 en la cual el desarrollador tuvo que actualizar sus controles visuales (VBX)a los nuevos controles OLE o ActiveX Controls (OCX), prcticamente no existieron

    nuevos problemas de impacto en la programacin al realizar las migraciones.La versin 5.0 de Microsoft Visual Basic incluy la posibilidad de crear controlesvisuales Activex, con el fin de distribuir reutilizar funcionalidad, cosa que hastaahora estaba reservada solamente a los lenguajes de mas bajo nivel.La versin 6.0 Microsoft Visual Basic agreg algunas nuevas palabras en ellenguaje, as como soporte nativo para MicrosoftActivex Data Object (ADO), ungenerador de informes, y un diseador visual de objetosADO.Con MicrosoftActivex Data Object (ADO) se estableciuna forma fcil de accedera un origen de datos, con bajo impacto programtico en caso de cambiar el motor dedatos.

    La tendencia de agregar funcionalidad al lenguaje manteniendo la compatibilidad conversiones anteriores -y sobre todo manteniendo compatibilidad con susconocimientos- se mantuvo hasta la versin 6.0. Pero Microsoft a dado un paso muygrande esta vez, y ha decidido re-disear el lenguaje .Con el paso de las diferentes versiones, muchas caractersticas y funciones

    permanecieron por compatibilidad, generando de esta forma inconsistencias en ellenguaje. El advenimiento de las tecnologas Web implic cambios estructurales

    profundos y notorios sobre la arquitectura de los lenguajes y sistemas operativos. Estollev a que Microsoft considerara ste un buen momento para rehacer el lenguaje

    Basic en la versin 7.0 (o .NET), y de esta forma solucionar aquellas inconsistencias ocaractersticas que por mantener compatibilidad con versiones anteriores- limitaban

    el lenguaje.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    10/48

    Introduccin a la Plataforma .NET

    2

    Otra de las cosas exigidas por los desarrolladores Visual Basic desde hace yaalgunos aos, es el soporte de orientacin a objetos, el cual es uno de los cambios mstrascendentes en esta versin.

    Qu hay de nuevo en VB.NET ?Microsoft Visual Basic 7.0 (denominada .NET), incluye caractersticas que hastaahora estaban solamente disponibles en lenguajes de bajo nivel, tales como lareutilizacin total de cdigo, herencia, polimorfismo, sobrecarga, constructores

    parametrizados, etc.Por otra parte, la idea de utilizar un entorno de desarrollo nico para todos loslenguajes, hacen que el cruzamiento Inter-lenguaje de cdigo sea extremadamentesencillo. La inclusin de varias tecnologas Web, como los llamados Web Services

    una suerte de componente de fcil utilizacin a travs de Internet- hacen que las

    posibilidades se amplen.Si bien el enfoque publicitario de VB.NET se ha dado principalmente haciatecnologasInternet, veremos que los cambios radicales van mucho mas all.

    Nueva InterfaseOriginalmente la interfase utilizada en las aplicaciones Windows, estaban orientadashacia botones estndares, y se consideraba necesaria en cualquier aplicacin quequisiera contar con cierto reconocimiento. Con el advenimiento de Internet, lasaplicaciones comenzaron a parecerse a pginas Web e hipervnculos, avanzando hacia

    esta direccin. Microsoft no se ha quedado atrs, y ha rediseado el entorno deMicrosoft Visual Basic para incluir muchas de estas cualidades. Una de lascaractersticas principales de Visual Basic, es la contar con un entorno que hace

    posible la creacin de la interfase grfica, dibujando en forma fcil y rpida controlesy ventanas. Para la mayora de empresas y desarrolladores, sta es una caractersticacrucial a la hora de elegir el lenguaje a utilizar. De hecho, muchas personas que hoyestn trabajando con Microsoft Visual Basic, ingresaron en algn momentoatrados por la simplicidad y velocidad con la que se construan las interfases grficas.Las versiones anteriores tenan solamente la caracterstica de crear formularios y -

    posteriormente- controles ActiveX. Esta nueva versin tiene la posibilidad de dibujarpantallas y trabajar con cdigo Web. De esta forma se incluye soporte para manejar enforma integrada el cdigo asociado a cada uno de los eventos de los objetos Web,

    VB 3VB 4

    VB 5

    VB 6.NET

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    11/48

    Introduccin a la Plataforma .NET

    3

    relegndonos por momentos que estamos desarrollando en una arquitectura Internet(3capas).

    El ser una de las pocas herramienta de trazado (Debug) Visual que funciona a laperfeccin, y contar con la posibilidad de establecer conexiones a motores de base dedatos e informes en forma grfica, hacen que el entorno de desarrollo sea deseable

    para cualquier lenguaje. Es as que muchos desarrolladores que trabajaban en otrosentornos cambiaron a Visual Basic con el nico fin de obtener algunascaractersticas del entorno de desarrollo. Visto que en esta nueva versin .NETtodoslos lenguajes comparten el mismo entorno de desarrollo, existen varias empresas queestn trabajando en la construccin de lenguajes compatibles con el entorno y con lascaractersticas .NET.

    El reemplazo del explorador de Proyectos -ahora llamado Explorador de Soluciones-hace posible trabajar simultneamente con varios proyectos de diferentes lenguajes almismo tiempo. Esto no slo ofrece la comodidad de utilizar una nica interfase, sinoque viene como respuesta a varios de los cambios de unificacin de los lenguajes.Como ejemplo, ver que ahora es posible heredar programticamente o binariamentecomponentes realizados en lenguajes diferentes, e incluso hasta heredar visualmente

    formularios.Debido al aumento de cdigo generado por algunos asistentes, el editor admite definirsecciones jerrquicas de cdigo, que pueden ser comprimidas o expandidasdinmicamente.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    12/48

    Introduccin a la Plataforma .NET

    4

    Gracias a esta funcionalidad, se mejora la visibilidad y claridad de la implementacinde un proyecto.

    En la nueva interfase, la creacin de macros le permite controlar el entorno dedesarrollo de VB.NET , permitiendo grabar y reproducir mas tarde aquellas accionesque utiliza frecuentemente. Veremos mas pormenorizado las nuevas caractersticasdel entorno de desarrollo en el prximo captulo.

    WindowsFo rmsSi bien esta tecnologa ser vista en detalle en el captulo 3, haremos una breveintroduccin a los efectos que comience a analizar el alcance e impacto de loscambios en esta nueva versin.Como vimos anteriormente, el entorno de programacin le permite generar controlesy formularios en forma fcil y rpida, pero a costo de perder flexibilidad en algunosaspectos. Cuando usted dibuja un formulario, toda la informacin referente a losatributos del objeto (posicin, cantidad de controles, colores, etc) es guardada

    internamente en los archivos del formulario. Esta informacin no puede ser accedidaprogramticamente, siendo gestionados automticamente por Visual Basic cada vezque se carga el proyecto. De esta forma, el motor de formularios interpreta estos datosy recrea la interfase grfica al ltimo estado almacenado.

    En muchos lenguajes, el diseo de la interfase grfica es an mas complejo, ya quedebe realizarse manualmente, programando cada lnea de cdigo, que posteriormentegenerar en tiempo de ejecucin uno a uno los controles y sus caractersticas. Estatarea es tediosa y lenta, y requiere que el programador tenga conocimientosespecficos del lenguaje. En otros lenguajes se cuenta con asistentes que permitencrear la pantalla, escribiendo por usted las lneas de cdigo. Si comparamos la opcin

    utilizada por Visual Basic con la empleada por otros lenguajes, podremos observaralgunas ventajas y desventajas:

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    13/48

    Introduccin a la Plataforma .NET

    5

    Visual Basic Otros lenguajesLa interfase se construye en forma rpida La interfase se construye en forma lenta

    No es necesario conocer el lenguaje paraconstruir la interfase

    Generalmente, es necesario conocer ellenguaje para construir la interfase

    Se pierden caractersticas avanzadas dedominio sobre la interfase grfica.

    Se tiene dominio total sobre la interfasegrfica.

    De esta forma, cada modalidad cuenta con sus respectivos beneficios. Unacaracterstica importante a tener en cuenta, es la de obtener el mayor control sobre lainterfase grfica, cosa con la que Visual Basic no cuenta. Una opcin media, es lade generar un asistente visual para dibujar las pantallas, que sea capaz de escribircdigo por usted. De esta forma, se tendra lo mejor de cada mundo, sin perderninguna de las ventajas arriba citadas.Como Visual Basic no cuenta con funcionalidad para soportar esto, fue necesarioextender la capacidad del lenguaje, a los efectos de poder definir nuevas

    caractersticas que hagan posible el acceder a los recursos grficos.

    El manejo de esta nueva modalidad, trae como beneficio el control total de la interfasegrfica. La nueva versin de Visual Basic escribe cdigo cuando usted agrega,quita, o modifica las propiedades de un control.Para ello, se ha implementado un conjunto de objetos capaz de manipular la creaciny caractersticas de los controles visuales de la interfase grfica. De hecho, todos loscontroles visuales se heredan de una jerarqua de clases comunes. Adicionalmente lasnuevas caractersticas del lenguaje permiten capacidades tales como herencia,sobrecarga, etc, sobre los controles, as como la de heredar un formulario en otro, y laesperada caracterstica de auto-ajuste de los objetos al tamao de la ventana.

    Control

    RichControl

    ScrollableControl

    ContainerControl

    Form

    Usercontrol

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    14/48

    Introduccin a la Plataforma .NET

    6

    Si bien caractersticas similares ya existan en lenguajes tales como Borland Delphi,Java, o en Visual C++con las llamadas Windows Foundation Classes(un conjuntode clases para construir la interfase Visual), ahora es posible obtener las mismascaractersticas funcionales desde todos los lenguajes de Visual Studio.NET, con unacurva de aprendizaje menor.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    15/48

    Introduccin a la Plataforma .NET

    7

    Form u la r ios Web (Web Forms )No es novedad que el advenimiento de Internet ha cambiado y est cambiando laforma en la que las personas y las aplicaciones hacen las cosas. Lo que si es nuevo,

    son las nuevas tecnologas aplicables de Visual Basic.NET para Internet,denominadas ASP.NET.

    En versiones anteriores de Visual Basic, contbamos con caractersticas comoActivex Documents, Web Classes, y el diseador de DHTML. Ninguna de estas esfcil a la hora de desarrollar una aplicacin, y en muchas ocasiones tampoco esefectiva, ya que muchas veces se termina realizando programticamente y con ungran esfuerzo- aquello que es muy fcil de hacer en otros productos.Hoy en da el desarrollador tiene claro que para trabajar en aplicaciones para Internetcon productos Microsoft, debe utilizar Visual Interdev. La versin de VisualBasic.NET se fusiona con Visual Interdev -por lo que este ltimo deja de existircomo tal- a los efectos de obtener caractersticas comunes.Ahora se incluyen los llamados Formularios Web o Web Forms. stos constan de dos

    partes: el cdigo HTML que contiene la representacin visual de la pantalla, y elcdigo asociado a cada uno de los eventos de la pgina.La ventaja de los Web Forms, es que usted utiliza un diseador para dibujar losformulario Web, similar al que emplea para crear formularios estndares Windows.Es luego el entorno de desarrollo quien se encarga de separar el cdigo que ustedescribe en los eventos de los objetos, de la interfase visual.A diferencia de la tecnologa que se utilizada en las pginas ASP (Active Server

    Pages) en la cual se incluye el cdigo Visual Basic Script (un sub conjunto del

    lenguaje Visual Basic) dentro de la pgina, en los formularios Web larepresentacin visual es almacenada como una pgina HTML, y el cdigo escompilado en una biblioteca, con el fin de lograr un mejor desempeo.

    El cdigo que se asocia a los eventos es mayoritariamente ejecutado del lado delservidor, esto quiere decir que cada vez que el usuario realiza una accin sobre la

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    16/48

    Introduccin a la Plataforma .NET

    8

    interfase Web, esta ser transmitida a travs de HTTP hacia el servidor, se ejecutar,y la pantalla resultante ser enviada al cliente. Todo esto se hace en formatransparente para usted, y en muchas ocasiones se optimiza la ida y vuelta al servidor,enviando varios eventos al mismo tiempo. Como ventaja obtenemos un mximorendimiento, con una interfase conocida, logrando un resultado multi-navegador y

    multi-plataforma. Crame que la tarea de programar un Formulario Web es muysimilar a la de trabajar con formularios estndares, he incluso puede utilizar lasmismas caractersticas de trazado (Debug). Similar a los controles Activexque puededibujar en un formulario, los formularios Web cuentan con controles Web (WebControls), que puede arrastrar desde la barra de herramienta hacia el formulario Web,y posteriormente configurar sus propiedades mediante la ventana de propiedades ocdigo.Con Visual Basic.Net puede crear verdaderas aplicaciones para Internet, obteniendoel 100% de la funcionalidad del lenguaje, y reutilizando aquellas bibliotecas que yatiene desarrolladas en versiones anteriores.

    Serv ic io s Web (Web Serv ices)A mi criterio, esta es la caracterstica ms importante de VB.NET , en la cual se

    basaran las aplicaciones de la nueva generacin.Cuando usted tiene que integrar servicios de Internet y aplicaciones de escritorio, lodebe hacer mediante soluciones que en muchos casos resultan ser demasiadocomplejas, debido a que no existe o mejor dicho no exista una tecnologa que

    permitiera una mezcla sencilla.Generalmente, la arquitectura seleccionada consta de las llamadas aplicacioneshbridas (parte aplicaciones de escritorio Win32 y parte pginas ASP), difciles de

    mantener o actualizar.Cuando usted trabaja con una biblioteca estndar, la idea principal es la de exponerlgica (procedimientos, funciones, y eventos) a travs de los protocolos estndares deWindows. Conceptualmente, un servicio Web o Web Service es similar a una

    biblioteca estndar (COM compatible). Cuando usted trabaja con bibliotecasestndares, debe cerciorarse de agregar la referencia a antes de comenzar a utilizarlaen el proyecto. Una vez hecho esto, Visual Basic la examina, y entre otras- obtienela interfase (procedimientos, funciones, y eventos) de la biblioteca, a los efectos dehacerlo visibles mediante la tecnologa intelisense utilizada en el editor de cdigo,y visible desde la aplicacin. Si bien los componentes estndares son muy efectivos

    y de hecho lo seguirn siendo-, existen algunos casos en los cuales no ofrecen unmarco de trabajo sencillo. Los componentes estndares no fueron pensados para seraccedidos o utilizados a travs de Internet, debido a que utilizan la tecnologa basadaen estndares de Microsoft (y por ende de Windows) denominada COM oComponent Object Model. sta hace posible la interconexin en forma eficiente entrecomponentes. Por otra parte, el formato en el cual se gestiona la comunicacin entreellos es binario, lo que lo hace muy ptimo en la familia de entornos Windows.Lamentablemente si la biblioteca necesita ser accedida travs de Internet, este formatosufre de graves inconvenientes. Uno de ellos es el de no ser de fcil interpretacin omanipulacin por aplicaciones o sistemas operativos no-Windows.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    17/48

    Introduccin a la Plataforma .NET

    9

    A diferencia de una biblioteca estndar, un servicio Web esta concebido para exponerla interfase a travs de Internet, utilizando protocolos estndares, y que han sidosuficientemente probados en estos ltimos aos.

    Esto significa un cambio radical, ya que ofrece acceso a cualquier aplicacin que seacapaz de utilizar el protocolo HTTP. Adicionalmente, la informacin es transferida enformato texto, y ms especficamente enXML.

    XML es un formato de texto que cumple con ciertas reglas estndares, adems de serabierto, y de fcil interpretacin por cualquier lenguaje o sistema operativo. Tienecaractersticas similares a HTML, pero a diferencia, XML describe solamenteinformacin, mientras queHTMLdescribe presentacin.

    Otra ventaja, es que los servicios Webpueden ser ejecutados desde un navegador, unaaplicacin no-Windows que tenga acceso Internet, o cualquiera que sea capaz deentenderXML.Veamos algunas caractersticas de ambos:

    Bibliotecas COMestndares Servicios WebEstn centradas en el paradigma Windows Estn centradas en el paradigma

    Internet

    Utiliza formato binario de interconexin Utiliza XML como meta-lenguaje decomunicacin.Son principalmente utilizadas en entornosWindows

    Pueden ser interpretados por cualquiersistema operativo o lenguaje

    Es muy ptimo en desempeo decomunicacin

    Es medianamente ptimo

    Si lo vemos desde el punto de vista de VB.NET, la utilizacin de un servicio Webnodifiere programticamente de la utilizacin de una biblioteca estndar, aunque la

    biblioteca Web exhiba su interfase a travs de Internet. Internamente, VB.NET se

    encarga de la comunicacin, transformando el llamado a la biblioteca en XML, serial

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    18/48

    Introduccin a la Plataforma .NET

    10

    izando y envindola posteriormente, y por ltimo ejecutando en forma remota, yenviando la respuesta de retorno.

    Es luego ASP.NET quien se encarga de traducir la resultante a un formato entendiblepor VB.NET . Todo esto se realiza en forma transparente para usted, internamenteutilizando un protocolo llamado SOAP, una pgina activa ASP, y la implementacinde su biblioteca.Por otra parte, la gestin de seguridad es mucho ms fcil de manejar, ya que bastacon restringir el acceso a la carpeta que contiene el servicio Web para controlar suaccesibilidad.La integracin de servicios y aplicaciones mediante los servicios Web, constituyeun gran paso en el desarrollo de aplicaciones distribuidas. Usted debe visualizar laimplantacin mediante este paradigma como un gran puzzle: usted incorpora lafuncionalidad que requiera y descarta aquella que no necesita.De esta forma, su aplicacin consume servicios que estn a travs de Internet, sinimportar dnde se encuentre, ni quien es el proveedor.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    19/48

    Introduccin a la Plataforma .NET

    11

    ADO.NETInicialmente el acceso a datos desde Visual Basic se realizaba llamando a funciones

    propias del manejador de cada base de datos. Esto haca que el desarrollador tuvieseque aprender el conjunto de funciones que ofreca cada proveedor.

    Con el paso de las versiones de Visual Basic, se instauraron diferentes tecnologasque hicieron mas fcil el acceso a datos.La primer versin de estos objetos se denomin DAO (Data Access Object), y estuvooriginalmente ideado para interactuar con bases de datos de Microsoft Access.Desde Visual Basic son exhibidas como un conjunto de clases que encapsulan lascaractersticas necesarias para acceder a la estructura y al contenido de la base dedatos, realizando as una abstraccin de las funciones originales del manejador.La necesidad de integracin de Visual Basic con motores de datos relacionales,gener que Microsoft desarrollara un segundo conjunto de objetos denominado

    RDO (Remote Data Access), ideado para acceder principalmente a motoresrelacionales de datos. De esta forma el desarrollador acceda en forma optima amotores de datos, pero careca de eficiencia a la hora de utilizar archivos deMicrosoft Access. Adicionalmente, RDO tena ciertas caractersticas que variabande motor a motor, y que hacan difcil construir una aplicacin motor-independiente.Fue as que hace algn tiempo atrs, se comenz el desarrollo de un conjunto detecnologas entre las cuales se encuentra OLE-DB, el reemplazo de ODBC- y objetosmas avanzados, que tuviesen las mismas caractersticas de programacin sin importarel motor de datos con el cual se deseara trabajar. Para ello se tom lo mejor de lastecnologas DAOy RDO, y se produjo un conjunto de objetos ms fcil de utilizar yms eficiente que RDO- denominado ADO (ActiveX Data Object). La primerherramienta que lo incluy fue Visual Interdev, y mas tarde se agreg a todos los

    lenguajes de Visual Studio. Hoy en da, ADO es usado tambin por otros lenguajes noMicrosoft.Alguna de las caractersticas de ADO ofrecen facilidades a la hora de utilizarlas endesarrollos distribuidos. Una de ellas, es la denominada Cursores Desconectados(Desconected Recordset), la cual permite a una aplicacin conectarse a un origen dedatos, obtener informacin de una tabla, y luego gestionarlos en forma desconectada.Al reanudar la conexin, es posible hacer efectivo los cambios realizados.

    La gestin del cursor puede ser implementada por una aplicacin Win32 o HTML(mediante Internet Explorer), ya que ambas cuentan con bibliotecas de conectividad

    ADO incluidas. Por otra parte, la transferencia de informacin a travs de una red serealiza en formato binario oXML, lo que lo hace sumamente eficiente.

    Internet

    Recordset

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    20/48

    Introduccin a la Plataforma .NET

    12

    Otra caracterstica de ADO, es la de conectarse a cualquier sistema no relacional dedatos, compatible con OLE-DB (Ej. archivos, correo electrnico, etc) mediante unesfuerzo mnimo.Con el advenimiento de Internet, los sistemas requirieron ser cada vez mas

    distribuidos, interconectados a travs de redes, las cuales en muchas ocasionesdeterminaban una velocidad de transferencia demasiado lenta, o con conexionesintermitentes. Debido a esto, se gest la necesidad de mantener estructuras cada vezmas complejas en forma desconectada, siendo poco til el manejo de tablas sueltascomo lo haca hasta el momento ADO -sin la posibilidad de mantener relacin deintegridad entre ellas- aunque esta ltima poda ser realizada programticamente.

    La nueva versin de ADO denominada ADO.NET (antes ADO+), permite lamanipulacin de verdaderas estructuras relacionales complejas en formadesconectada.

    Por otra parte, la transferencia de informacin de los cursores no se realiza medianteun formato binario. Si bien sta puede ser mas eficiente, cuenta con la desventaja de

    no poder ser interpretado en forma fcil por sistemas operativos no Windows Para

    Clientes

    Zonas

    Pases

    Clientes

    Zonas

    Pases

    Autores

    Libros

    Recordset 1

    Recordset 2

    Recordset 3

    Objeto Data Set

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    21/48

    Introduccin a la Plataforma .NET

    13

    ello, ADO.NET utiliza como formato de transferencia el meta-lenguaje de marcasextendidas denominadoXMLo eXtended Meta Language.

    XML es texto que cumple con ciertas reglas estndares de notacin, y que permite ladescripcin de cualquier cosa.Veamos un ejemplo deXML:

    Como vimos anteriormente, XML es fcil de leer y de procesar por cualquier sistemaque capaz de leer ASCII, por lo que significa que cualquier sistema operativo puedeinterpretar la informacin. De esta forma, un conjunto de registros obtenidos mediante

    ADO.NET en la plataforma Windows, pueden ser recepcionados por otrasplataformas (Linux, Unix, etc.) leyendo simplemente el documentoXML.

    Evidentemente las nuevas caractersticas de ADO.NET van a brindarle varias ventajasen sus aplicaciones distribuidas. Veremos mas en el captulo 7.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    22/48

    Introduccin a la Plataforma .NET

    14

    La realidad Distribuida es InternetPara completar nuestro entendimiento de la arquitectura .NET, debemos dar un brevevistazo a las posibilidades existentes, as como sus problemas y soluciones que estas

    plantean. Muchas de los paradigmas actuales, ofrecen soluciones a problemascomunes, pero traen como consecuencia un conjunto de restricciones. Hagamos un

    poco de historia...

    Visua l Bas iccom o lengua je al te rna tivoEn los comienzos, Microsoft Visual Basic surgi como un lenguaje alternativo

    para palear las dificultades que otros lenguajes de bajo nivel como el caso deMicrosoft Visual C++, etc- tenan a la hora de crear aplicaciones con entorno visual

    para Windows.

    As fue que surgi Microsoft Visual Basic, un lenguaje elegido por Microsoftdebido a que no era necesario el pago de derechos de autor (royalties) para suutilizacin y/o distribucin. Las primeras versiones fueron concebidas como unaherramienta de diseo de interfases, programacin, y acceso a datos. En algunos casosse ofreca reutilizacin, pero solamente mediante bibliotecas implementadas en otroslenguajes, y compatible binariamente con Microsoft Visual Basic.

    Alrededor del 95 % de las aplicaciones existentes acceden de alguna forma a datos,por lo que Microsoft apost y apuesta constantemente a mejorar y simplificar laconectividad a datos. Las aplicaciones distribuidas han cambiado la forma en la que sedesarrollan e instalan los programas. La idea principal, es la de separar una aplicacin

    en partes, a los efectos de hacer ms fcil su reutilizacin y actualizacin.

    D ivide y reina

    Un concepto importante a tener en cuenta, es que el mundo de los negocios y elmundo de la informtica trabajan en conjunto, y en muchas ocasiones es difcilacompasar los cambios que el mercado fuerza sobre las aplicaciones informticas, conla velocidad exigida. Generalmente, un cambio se traduce en un requerimiento sobreuna aplicacin, y el lenguaje elegido y la modalidad de trabajo, deben cumplir con un

    buen tiempo de respuesta.

    La d iv i s in en s e rv i c iosComo vimos anteriormente, las tecnologas .NET ayudan a que una aplicacin puedaser particionada. La divisin conceptual de una aplicacin, ha hecho ms fcil lacomprensin y el desarrollo, as como la organizacin de los recursos en una empresainformtica.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    23/48

    Introduccin a la Plataforma .NET

    15

    Generalmente esta divisin se realiza en 3 partes:Presentacin

    LgicaDatos

    Cualquier aplicacin es factible de separarse en estas tres partes o capas. Llamamos aesto conceptual, ya que en muchas ocasiones estas capas pueden no estarrelacionadas con la estructura fsica.

    Capa de Presentacin

    La primer capa es la denominada capa de Presentacin, y es aquella parte de laaplicacin (servicios y/o funciones) que se encarga de dibujar la interfase grfica otexto de la aplicacin

    Capa de NegociosLa segunda capa denominada capa de Negocios o lgica, es aquella parte de laaplicacin (servicios y/o funciones) que realizan la parte lgica. La lgica de negocioses el conjunto de rutinas que realiza y representa los procesos lgico-funcionales deuna empresa.

    Capa de Datos

    La tercera capa es la de datos, y es la encargada de proveer el acceso y manejo deinformacin (en algunos casos persistente, Ej. Bases de datos, archivos, etc.).

    As es que una misma aplicacin puede ser dividida en 3 partes. Es importante comodesarrollador, que cuente con un conjunto de tecnologas especficas que den soportea cada una de las partes (capas), y permitan tratar a cada una en forma concreta. EnVisual Basic .NET se incluye el soporte de tecnologas necesario para cubrir cadauna de las capas, logrando as que puedan interactuar cooperativamente aunque estndistribuidas en diferentes espacios fsicos (servidores).

    En algunas, ocasiones no es necesario partir la aplicacin en 3 partes (capas) fsicas,pudindose tener en la misma aplicacin en una capa fsica.

    Ap l ic ac iones en 1 capa: 3 serv ic ios en 1La aplicacin en una capa es la forma ms antigua de representar una aplicacin, y esla ms monoltica. La aplicacin en 1 capa contiene las 3 partes lgicas en el mismoaplicativo. Las aplicaciones de escritorio, son generalmente un buen ejemplo deaplicaciones en 1 capa. Habitualmente en el mismo aplicativo (ejecutable) seconcentran los servicios encargados de generar la interfase grfica (pantallas), realizarla lgica, y acceder a datos. Una plantilla de Microsoft Excel puede ser utilizada enuno o ms equipos, pero incluye en s misma toda la funcionalidad, sin la posibilidad

    particionar los servicios en presentacin, lgica, o datos.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    24/48

    Introduccin a la Plataforma .NET

    16

    Ap l ic ac iones en 2 capasLas aplicaciones en 2 capas (tambin llamadas cliente/servidor), agrupan los serviciosde presentacin y lgica en la mquina cliente, y acceden a una fuente de datoscompartida. En algunos casos, parte de la lgica puede ser puesta en la capa de datos,a los efectos de poder compartir lgica desde varias aplicaciones.Un buen ejemplo de una aplicacin en 2 capas es una aplicacin bancaria. En estemodelo, los servicios de presentacin y lgica estn locales, pero al realizar unatransaccin de dinero, el resultado ser almacenado en una base de datos compartida

    por todas las sucursales, atendido por un servidor exclusivo de datos.Este tipo de arquitectura tiene como ventaja la centralizacin de informacin y

    funciones, facilitando la actualizacin, mejorando la consistencia, y eliminando laduplicacin de informacin.

    Las aplicaciones en 2 capas estn aptas para empresas que no tengan una altsimademanda de informacin, ya que esto podra derivar en una saturacin del servidor dedatos, haciendo de este paradigma inservible.

    Presentacin

    Lgica

    Datos

    Presentacin

    Lgica

    Datos

    Cliente

    Cliente

    Base de datos

    Red

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    25/48

    Introduccin a la Plataforma .NET

    17

    A menudo, parte de la lgica de la aplicacin se introduce en la base de datos enprocedimientos almacenados, como forma de compartir cdigo entre aplicaciones.Pero ello obliga a las empresas a contar con personal capacitado para escribir lasrutinas compartidas en el lenguaje especfico del motor de base de datos.

    Ap l ic ac iones en 3 capasLas aplicaciones en 3 capas (tambin llamadas distribuidas) ofrecen actualmente losmejores beneficios para desarrollos de gran porte. Como lo dice su nombre, estosseparan su funcionalidad en 3 partes. Los servicios que generan la interfase grfica sesitan en la capa presentacin, mientras que los servicios que realizan la lgica seconcentran dentro de la capa de negocios, y por ltimo, los servicios de informacinen la capa de datos.

    Las ventajas de las aplicaciones en 3 capas, son la de poder ser distribuidas a travs desistemas heterogneos. A su vez, las aplicaciones distribuidas funcionan como piezasde encastrar, en donde solamente se agregan aquellos servicios que se van a utilizar.Un ejemplo de aplicaciones distribuidas son las aplicaciones de Internet, donde lacapa de presentacin pertenece a una pgina HTML corriendo dentro de unnavegador, mientras que la capa del medio (Negocios) contiene a la lgica especficadel aplicativo, y por ltimo la capa de datos realiza la persistencia de informacin. Lasaplicaciones distribuidas tienen la ventaja de ser fciles de instalar y actualizar, ya queel componente existe en un solo lugar, sin necesidad de tenerlo en varias partes. Porotro lado, es el paradigma que ofrece mayores facilidades para compartirfuncionalidad entre aplicaciones.

    Si se va a trabajar en entornos Microsoft, cuenta con un marco de trabajodenominado Microsoft Distributed Internet Applications o DNA. DNA constituye

    para Microsoft un conjunto de tecnologas desarrolladas por l, para realizaraplicaciones distribuida. Actualmente DNA, es el paradigma que mas se ve afectado

    por la nueva versin de Visual Basic.

    Presentacin

    Lgica

    Datos Base de datos

    Red

    Cliente

    Red

    Red

    Capa del medio de negocios

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    26/48

    Introduccin a la Plataforma .NET

    18

    Hablemos de COM y Visual BasicHace varios aos, Microsoft implement un estndar de comunicacin entre objetosdenominado Component Object Model (vulgarmente conocido como COM). COMhace posible que una aplicacin o biblioteca pueda llamar a otra sin preocuparse poraspectos fsicos (ruta, protocolo de red, etc), o incluso del lenguaje en que sta hayasido construida. Para ello, requiere que la interfase de un componente (definicin defunciones, procedimientos, y eventos) sea almacenada en el archivo de registro,mientras que se mantiene la implementacin de la biblioteca en un archivo fsico.

    COM puede ser visto como un contrato entre una aplicacin cliente y una aplicacinservidora de intercomunicacin. De esta forma, la mayora de aplicaciones comparten

    bibliotecas de otros aplicativos o del sistema operativo en forma natural. Por otraparte, el sistema operativo utiliza internamente y mayoritariamente esta tecnologa.Si bien cuenta con muchas ventajas, en algunas ocasiones COM ofrece un marco detrabajo frgil, que obliga al desarrollador por ejemplo- a preocuparse de la gestin delas referencias de los objetos.

    Generalmente y dependiendo del lenguaje- podemos encontrar los siguientes pasos:

    1. Se solicita una referencia a un objeto2. Se asigna memoria para el objeto3. Se carga el objeto en memoria y se inicializa4. Se utiliza

    5. Se destruye la referencia6. Se libera la memoria

    Es comn que un mismo objeto sea utilizado al mismo tiempo por varias aplicaciones,esto quiere decir que varias referencias pueden apuntar a la misma biblioteca desde lamisma o diferentes aplicaciones. Debido a ello, es importante que el sistema operativo

    pueda determinar si debe o no liberar la memoria ocupada por el componente.Para resolver esto, COM utiliza una operativa sencilla, manteniendo un contador dereferencias a un objeto. Cada vez que se solicita una referencia a un objeto, seincrementa el contador asociado a esa biblioteca, y cuando la referencia es liberada(asigna Nothing a la variable) se decrementa la cuenta. Si el contador llega a cero se

    libera la memoria, puesto que esto significa que nadie est utilizando el componente.

    Archivode

    registro Math.dll

    Financial.dll

    Aplicacin

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    27/48

    Introduccin a la Plataforma .NET

    19

    Lamentablemente este esquema no es muy claro en muchos casos, generando que eldesarrollador tome decisiones errneas de cuando liberar o no una referencia.Veamos el siguiente ejemplo en una versin 6.0 de Microsoft Visual Basic.

    En la primer lnea se define un objeto de la clase especificada, mientras que en lasegunda lnea se solicita una referencia al objeto y se inicializa. A continuacin seaccede a sus mtodos y propiedades. Cuando este no est siendo utilizado, esresponsabilidad del programador la liberacin de la referencia.Si bien es un mtodo sencillo, puede olvidar la ltima lnea que libera la referencia.Qu pasa si olvida la lnea de liberacin de referencia?

    La utilizacin de la palabra Nothing no es necesaria en este caso, ya que al finalizarun procedimiento las variables cesan su alcance, destruyndose as las referencias, y

    por ende liberando la memoria.

    Sub Test()

    Declara una variable de la clase especificada.Dim MiVariable as Objeto.Clase

    Instancia la clase, e incrementa el contador de referencias a 1Set MiVariable = newObjeto.Clase

    Se libera la referencia, y se decrementa el contador. Si elcontador es igual a 0 se libera la memoriaSet MiVariable = Nothing

    End Sub

    Sub Test()

    Declara una variable de la clase especificada.

    Dim MiVariable as Objeto.Clase

    Instancia la clase, e incrementa el contador de referencias a 1Set MiVariable = newObjeto.Clase

    End Sub

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    28/48

    Introduccin a la Plataforma .NET

    20

    Si bien veremos mas adelante las referencias circulares, veamos un ejemplo deimpacto con referencias circulares:

    En este ejemplo, -y pese a la correcta utilizacin de la palabra Nothing- los elcontador de referencias de X e Y no son nunca liberadas, ya que constituyenreferencias circulares (X aunta a Y e Y a X).

    Veamos otro ejemplo:

    En este caso si es til la utilizacin de la palabra Nothing, ya que de lo contrario, lareferencia a la variable global ser destruida al finalizar la aplicacin, pero no seliberar la memoria ya que el contador no es decrementado.

    Si bien el manejo de la palabra Nothing en Visual Basic puede ser sencillo, en

    muchos casos el umbral de utilizacin no esta demasiado claro, y uno puede omitirseeesta lnea en un caso indispensable, llevando as a que no se libere la memoria

    Sub Test()

    Declara una variable de la clase especificada.

    Dim X as Objeto.ClaseDim Y as Objeto.Clase

    Instancia la clase, e incrementa el contador de referencias a 1Set X = newObjeto.ClaseSet Y = newObjeto.Clase

    Set X.MiRef = YSet Y.MiRef = X

    Set X = Nothing

    Set Y = NothingEnd Sub

    Declara una variable de la clase especificada.Public A as Objeto.Clase

    Sub Test()Dim Z as Objeto.Clase

    Instancia la clase, e incrementa el contador de referencias a 1Set Z = newObjeto.Clase

    Incrementa contador de referencias a 2Set A = Z

    Decrementa contador de referencias a 1

    Set Z = NothingEnd Sub

    .

    .Referencia = 1

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    29/48

    Introduccin a la Plataforma .NET

    21

    solicitada para un objeto. Si a esto le sumamos que existen cientos de aplicaciones ybibliotecas en su sistema operativo utilizando COM para comunicarse, podemos tenerun panorama que puede llegar a ser problemtico. Veremos mas adelante, como lanueva tecnologa de Colector de Basuraresuelve este problema.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    30/48

    Introduccin a la Plataforma .NET

    22

    En e l in f ierno DL LEl infierno DLL refiere a un conjunto de problemas causados por la utilizacin de

    bibliotecas compartidas. En general, la instalacin de una aplicacin consta de varios

    pasos, y tpicamente envuelve copiar un nmero de componentes al disco, y crear unconjunto de informacin en el archivo de registro que describe los componentesinstalados. De esta forma, existe una separacin entre las entradas en el archivo deregistro describiendo el componente, y los archivos fsicos (que son los que contienenla implementacin). Esto hace difcil de actualizar y desinstalar la aplicacin, ya quese debe tener coordinado el archivo de registro con los archivos fsicos.La tecnologa utilizada por Microsoft en sus sistemas operativos tiene comocaracterstica la de centralizar en una base de datos la informacin de todas aquellosobjetos, bibliotecas (Software), o configuraciones de Hardware, que el sistemaoperativo puede utilizar. Esta centralizacin tiene como objetivo la existencia de unrepositorio nico de informacin. Adicionalmente, cada aplicacin o biblioteca esvista por el sistema operativo como un objeto, factible de registrar en la base de datosdel sistema (tambin denominado archivo de registro o registry).Cada aplicacin puede constar de un solo ejecutable, as como tambin de un conjuntode ejecutables y bibliotecas relacionadas entre s.

    Cuando la aplicacin comienza su ejecucin, el sistema operativo debe localizar loscomponentes necesarios para su funcionamiento, y es all donde interviene lainformacin del archivo de registro.La capacidad de compartir las llamadas bibliotecas de enlace dinmicoo Dynamic

    Link Libraries, es la principal forma que tienen los lenguajes Microsoft de re-utilizar un conjunto de funciones. Una biblioteca de enlace dinmico es un archivo

    binario factible de re-utilizar, pero sin necesidad de ser incluido dentro del mismoejecutable.Inicialmente, Windows comenz creando bibliotecas de enlace dinmico con el fin

    de ser compartidas solamente entre sus aplicaciones, posteriormente se agregaronalgunas para ser utilizadas por desarrolladores.

    Aplicacin 1

    Aplicacin 2Aplicacin 3

    Aplicacin 4

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    31/48

    Introduccin a la Plataforma .NET

    23

    Estas bibliotecas contienen grupos de funciones y procedimientos, eliminando as lanecesidad de implementar la misma funcionalidad en forma independiente. Utilizaruna biblioteca con funciones reutilizables en un entorno Microsoft es tan fcil comoincluir las rutinas dentro de la misma aplicacin.

    Dis t r ibuc in de un a ap l icac inAl distribuir una aplicacin se debe tener en cuenta incluir todas aquellas bibliotecasque su programa utilice, aunque en algunos casos sean compartidas o de propiedad deotras aplicaciones.Un ejemplo de esto es la biblioteca commdlg.dll. Esta biblioteca define un grupo decajas de dilogos comunes que pueden ser utilizadas por cualquier aplicacinWindows. Generalmente, est incluida en el sistema operativo por lo que no esnecesario agregarla dentro del paquete de distribucin.Microsoft ha ido actualizando esta biblioteca, generando en muchas ocasiones quela versin de biblioteca que se encuentra en el sistema operativo sea diferente a la quesu programa espera.

    Si bien esta tecnologa trae aparejado que la actualizacin de bibliotecas sea sencilla,y muchas veces el ahorro de espacio en disco y memoria sea considerable (uncomponente es cargado una sola vez en memoria), tiene como desventaja que lasversiones de bibliotecas de su mquina de desarrollo pueden a veces es diferente alas instaladas en los equipos de sus clientes. Para ello COM cuenta con la posibilidadde manejo de versiones de componentes, mediante el Recurso de Versin.

    La forma mediante la cual COM resuelve esto, es mediante el recurso de versin.

    Commdlg.dllVersin 1.0

    Financial.dll

    Versin 1.0

    Commdlg.dllVersin 2.1

    Financial.dllVersin 1.5 ?

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    32/48

    Introduccin a la Plataforma .NET

    24

    Recur so d e vers inCada biblioteca incluye informacin denominada recurso de versin. Estainformacin de versin es utilizada por el sistema operativo para conocer las

    caractersticas de la misma.Aunque no entraremos en detalle en esta utilidad, es bueno que conozca que la primerversin de una biblioteca es generalmente 1.0, y se ve incrementado en cadacompilacin que pueda afectar su interfase.

    El archivo de recurso es consultado automticamente para saber si la versin debiblioteca a utilizar es compatible con la esperada, o si la versin de biblioteca queexiste en el paquete a instalar es mas nueva que la ya existente en el sistemaoperativo, y por ende se debe sobre-escribir.Si bien se puede asegurar que una versin ms actual de biblioteca contenga un

    conjunto de interfases que coincidan con la anterior, no puede aseverarse que la nuevaimplementacin sea totalmente compatible, por lo que la actualizacin de unaaplicacin que utiliza bibliotecas compartidas puede ocasionar la modificacin ocolapso de caractersticas de otra aplicacin.Si bien en mucho casos las aplicaciones son probadas con diferentes versiones de

    bibliotecas comunes, no siempre se puede asegurar que el comportamiento sertotalmente compatible.

    La solucin basada en componentes reutilizables tiene un efecto sobre la distribucinde aplicaciones (en nuestro caso Visual Basic). Si bien la generacin de paquetes deinstalacin se hace en forma automatizada mediante asistentes, en muchos casos

    puede resultar catica. En el mundo real contamos con miles de archivos compartidosOCX, VBX, DLL, que pueden ser utilizados por cientos de aplicaciones. En caso quetan solo una biblioteca faltara o se presente en una versin incompatible a la esperada,hara que una o varias aplicaciones fallaran o se comportaran en forma errtica.Generalmente la falla es difcil de identificar, y en muchos casos los sntomas suelenser un error de proteccin general o una excepcin de memoria.

    Con el advenimiento de los sistemas operativos Windows 2000, se implement laposibilidad de poder copiar una determinada biblioteca en un directorio especfico, alos efectos de ser utilizada por una nica aplicacin (veremos mas de esto en la

    seccin de Ensamblados) Si bien esta funcionalidad mejora el marco de trabajomediante la utilizacin de bibliotecas privadas, en muchos casos ocasiona que si la

    Financial.dll

    Versin 1.0 Sub Calcular(i as Long)

    Financial.dll

    Versin 2.0 Sub Calcular(i as Long)Sub Guardar(s as Long)

    Financial.dll

    Versin 2.5 Sub Calcular(i as Long, _X as String)Sub Guardar(s as Long)

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    33/48

    Introduccin a la Plataforma .NET

    25

    biblioteca no es compatible el problema puede ser peor aun, ya que hay que evaluar elorden en que las aplicaciones son ejecutadas, o a la ltima versin de componente quefue registrada, generando as fallas intermitentes y de difcil localizacin. En muchasocasiones el tiempo que toma detectar la falla real no justifica, y se termina por re-instalar el aplicativo o sistema operativo.

    Veremos mas adelante como la plataforma .NET de Microsoft resuelve estaproblemtica, mediante cambios sustanciales en la estructura y forma en que sedistribuye una aplicacin.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    34/48

    Introduccin a la Plataforma .NET

    26

    Dime en que programas y te dir quien eresComo vimos anteriormente, la plataforma .NET ofrece un conjunto de tecnologas ycaractersticas compartidas por todos los lenguajes Microsoft. En esta nuevaversin, usted deber pensar en reestructurar sus aplicaciones, y no tanto en unasimple actualizacin tecnolgica Es evidente que no en todas las aplicaciones sonfactibles de migrar, y depender de usted el decidir en cada caso si las tecnologas lo

    benefician.Cuando hablamos de una aplicativo Visual Basic, generalmente nos referimos a unaaplicacin principal compilada- con extensin EXE, algunas bibliotecas (extensin.DLL), as como controles Activex (.OCX), adems de la biblioteca principal(Runtime) de Visual Basic. Este ltimo se extiende desde las versiones mas antiguasde Basic, y es el encargado de darle vida a las aplicacin, sin ella la ejecucinfallara..

    A grandes rasgos, cuando se ejecuta la aplicacin, el sistema operativo carga elejecutable compilado en memoria, analiza los vnculos (bibliotecas necesarias), y encaso de ser requerido las carga tambin, ejecutando posteriormente la aplicacin.Visto que el ejecutable y las bibliotecas estn compiladas en lenguaje mquina, puedeejecutarse directamente sobre el procesador sin necesidad de interpretes (aunque enalgunos casos, necesite de las funciones situadas en el la biblioteca principal o

    Runtime).

    En otros lenguajes como JAVA, el proceso es significativamente diferente debido a su

    arquitectura. Cuando Java fue concebido, se pens en un lenguaje capaz de traspasarlas fronteras de un sistema operativo o procesador. Debido a que un ejecutable JAVA

    Aplicacin 1

    Bibliotecas DLL, OCX, EXE,archvos de recurso, etc.

    Archivo ejecutable EXE

    MSVBVM60.DLL

    Runtimede ejecucin

    Sub Calcular (X as Long)

    X = X +1End SubSub Restar (Y as Long)Y=Y-1End SubSub Sumar(I as Long)X=X+1

    010100010010101010100010000000010001000100010111100101111101001011101000100100010010001011111101010010101111111100001011

    Procesador

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    35/48

    Introduccin a la Plataforma .NET

    27

    no es compilados en lenguaje mquina, es posible su ejecucin en otras plataformasdiferentes a Windows. Visto que Java es un lenguaje interpretado, sus rutinas soncompiladas en un lenguaje intermedio llamado ByteCode. Este es un conjunto deinstrucciones factibles de ser interpretadas por una Mquina Virtual o Interprete. Elinterprete implementa un procesador mediante Software, y virtualmente una

    aplicacin JAVA puede correr sobre cualquier sistema operativo que implemente esteInterprete.

    Una vez compilada la aplicacin, el proceso de carga es sustancialmente diferente aldel cdigo de compilado real. La aplicacin se carga en memoria, y all entra enaccin el Interprete que traduce cada instruccin delByteCodea cdigo mquina.Si bien el compilado real tiene la ventaja de ofrecer mejor performance debido a queinteracta directamente con el procesador, el compilado a ByteCode tiene la

    posibilidad de correr bajo cualquier sistema operativo y procesador que implemente elInterprete. De esta forma ofrece mayor control y seguridad, pero a costo de una pobre

    performance en comparacin con la compilacin real.

    Usted se preguntar que relacin tiene la tecnologa JAVA con la plataforma .NET.Bueno, si bien la tecnologa .NET adquiere personalidad propia, hay muchas de lascaractersticas de JAVA que nos van a ser tiles a la hora de entender el nuevoconjunto de tecnologas que encapsula la palabra .NET, entre ellas la bibliotecacomn a los lenguajes CLR(Common Language Runtime).

    Ques Common Languaje Run t im e?

    La plataforma .NET es un conjunto de tecnologas que facilitan y amplan el espectrode su desarrollo. Esta versin de Visual Basic cambia radicalmente la metodologade ejecucin, ya que cuenta con un motor de ejecucin llamado CLR (Common

    Language Runtime). Este motor de ejecucin esta situado entre su aplicacin y elprocesador. A diferencia de otras tecnologas similares, el motor o Interprete escompartido por todos los lenguajes que integran la plataforma .NET (VB,C, C# -unnuevo lenguaje de la familia Microsoft-, etc).

    public String[ Obtener ( intAnoDesde,int AnoHasta,int Pais,int Indicador) {

    String Valores[][] = null;switch (Indicador)

    0101000100101010101000100000000100010001000101111001011111010010111010001001000100100010111111010100101011111111000010111010101010101

    ProcesadorInterprete

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    36/48

    Introduccin a la Plataforma .NET

    28

    El cdigo escrito para el la plataforma .NET es ejecutado sobre el control delInterprete de ejecucin comn. CLR ha sido instrumentado para reemplazar, ampliar,o mejorar servicios y tecnologas existentes, como ser COM, Microsoft TransactionServer, Microsoft Message Queue, y COM+.

    Al utilizar el motor compartido, todos los lenguajes ofrecen caractersticas yfacilidades comunes, como ser el soporte para orientacin a objetos, el colector debasura, y el manejo de ensamblados(el cual vera en este captulo).

    Sistema comn de tipos, clases, etc

    Compiladores deMIL a cdigo nativo

    Colector de basura, etc

    Manejador de clases y diseo de memoria

    Runtime confunciones

    tradicionalesSeguridad

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    37/48

    Introduccin a la Plataforma .NET

    29

    Cd igo Man ipu ladoEl cdigo manipulado es aquel que est compilado para ser traducido por el motorCLR. El cdigo construido en las versiones anteriores de Visual Basic es

    considerado Cdigo No Manipulado (o Unmanaged Code), debido a que interactadirectamente con el procesador. Si bien otros lenguajes de .NET pueden generarcdigo no manipulado, Visual Basic .NET es capaz de generar slo cdigomanipulado. De esta forma, cualquier biblioteca o ejecutable producido en estanueva versin correr bajo el dominio y control del motor CLR:Veamos algunas diferencias entre la versin 6.0 y .NET de Visual Studio:

    Windows NT 4.0 y VB6 Windows 2000 y VB6 Plataforma .NET

    Cdigo Cdigo no manipulado,producido por VB 6.0

    Cdigo no manipulado,producido por VB 6.0

    Cdigo manipuladode Visual Basic.NET

    Capaespecfica del

    lenguaje

    Utiliza la biblioteca principalde Visual BasicMSVBVM60.DLL

    Utiliza la bibliotecaprincipal de Visual BasicMSVBVM60.DLL

    Utiliza motor de CLRMSCORE.DLLMSCORLIB.DLL

    Contexto

    Concurrencia

    Transacciones

    Utiliza la biblioteca deMicrosoft TransactionServerMTXEX:DLL

    Utiliza bibliotecas deCOM+OLE32.DLLOLEAUT32.DLL

    Utiliza motor de CLRMSCORE.DLLMSCORLIB.DLL

    Manipulacin

    de clases

    Utiliza bibliotecas de COMOLE32.DLLOLEAUT.DLL

    Utiliza bibliotecas deCOM+OLE32.DLLOLEAUT32.DLL

    Utiliza motor de CLRMSCORE.DLLMSCORLIB.DLL

    Usted se preguntar que ventajas tiene la de reemplazar una tecnologa que produceejecutables que interactan directamente con el procesador, a una tecnologa querequiere un seudo compilador para funcionar. Veremos la respuesta a continuacin.

    CLR fue diseado con el objetivo de brindar un nivel sin precedentes de integracinentre lenguajes, ya que el cdigo compilado para ste sigue un conjunto de reglascomunes. Visto que CLR es totalmente orientado a objetos, los lenguajes heredan estacapacidad. Ahora todo en Visual Basic es considerado un objeto, y contiene lascaractersticas inherentes, como ser herencia, sobrecarga, polimorfismo, etc. A su vez,se reemplaza el manejo de errores por un esquema de captura de errores orientado aobjetos. Todos los lenguajes heredan las caractersticas de CLR, por que lo estos seven sustancialmente modificados, a los efectos de adaptarse a l.

    Cuando usted compila una aplicacin en .NET, el resultado no ser cdigo mquina,sino que ser un metalenguaje denominado MSIL o IL (Microsoft Intermediate

    Language). MSIL es un formato compilado, que contiene instrucciones de bajo nivelque pueden ser solamente entendidas por el compilador incluido en .NET llamado JIT( Just in Time Compiler). A diferencia de JAVA, cuando se ejecuta una aplicacincompilada para CLR, JIT verifica que el cdigo MSIL sea completamente seguro (estoquiere decir, que no realice conversin de punteros en forma ilegal, o todo aquello que

    pueda ocasionar un error de falla de memoria), y a continuacin lo transforma en

    cdigo mquina y lo ejecuta.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    38/48

    Introduccin a la Plataforma .NET

    30

    De esta forma se asegura un buen rendimiento, ya que el cdigo final sigue siendocdigo mquina y no interpretado. A su vez, el cdigo controlado puede interactuarcon cdigo no controlado, como ser un control ActiveX o biblioteca realizada en unaversin anterior a la 7.0.Visto que .NET tiene su propia forma de manejar componentes, descarta la utilizacin

    de COM, pero igualmente puede utilizar componentes que soporten esta tecnologa.

    De hecho, .NET es tecnologa similar a COM en algunos aspectos, pero con suscaractersticas negativas resueltas.

    COM .NET

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    39/48

    Introduccin a la Plataforma .NET

    31

    In teracc in ent re leng ua jesEn algunas ocasiones, los desarrolladores C++ producan bibliotecas que utilizabancaractersticas no compatibles con VB. En estos casos, los programadores VisualBasic perdan la posibilidad de acceder dichas bibliotecas, provocando muchas

    veces la reprogramacin de las mismas. Uno de los objetivos de CLR es la de asegurarun alto nivel de compatibilidad entre lenguajes, para ello implementa el llamadoSistema Universal de Tipos(Universal Type System).

    El Sistema Universal de Tipos es un conjunto de tipos de datos y clases confuncionalidad (bibliotecas), que pueden ser soportados y utilizados por todos los

    lenguajes de .NET. Si bien no todos los tipos de datos definidos en CLR sonutilizados desde todos los lenguajes, existe un mnimo accesible a todos. De estaforma, una biblioteca que es desarrollada en C++ puede ser accesible desde VB, y lafuncionalidad fcil de invocar. Esto es vlido para todos los lenguajes de la

    plataforma, incluso para los lenguajes controlados por .NET que estn siendodesarrollados por otras empresas (APL, COBOL, PASCAL, Perl,etc.)

    Los Dom in i o sUnos de los problemas con los que cuenta la tecnologa actual, es la de realizaraislamiento de procesos por hardware. Esto quiere decir que cada aplicacin corre

    dentro de un espacio de memoria separado. Si bien esto tiene la ventaja de protegercontra fallas la aplicacin si se cae una aplicacin lo har slo esta, y no todas lasdems- tiene la desventaja de ser muy pesado a nivel de recursos. Imagine un servidorWebcreando y destruyendo cientos de procesos por segundo!Una de las caractersticas principales CLR es la de proveer aislamiento de procesos

    por software mediante los Dominios. Esto quiere decir que las aplicaciones corriendobajo un mismo espacio de memoria estn aisladas entre si. Los Dominios controlan lavisibilidad y la tolerancia de fallas. Si por error cayera una aplicacin, solamenteafectar a este dominio y no al proceso entero.De esta forma, se obtienen las mismas caractersticas que utilizando procesos, perocon un gasto de recursos muy inferior.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    40/48

    Introduccin a la Plataforma .NET

    32

    Por otra parte, cada vez que un componente o aplicacin necesita conectarse con otrautiliza la tecnologa COM, lo que implica un consumo alto en recursos. Bajo CLR lacomunicacin se realiza entre Dominios y utilizando tecnologas .NET, sin utilizarCOM, haciendo esto mas eficiente.Recuerde que cada aplicacin corre en el contexto de un Dominio (Domain), y sta es

    la nueva unidad mnima de proceso.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    41/48

    Introduccin a la Plataforma .NET

    33

    El co lec to r de B asuraEl colector de basura es el servicio de la plataforma .NETpara cdigo manejado,quese encarga de liberacin de la memoria de aquellos objetos que no est siendo

    utilizados.Los colectores de basura datan de los aos 50, cuando John McCarthy (creador de

    LISP), escribi la primer especificacin de un colector de basura de memoria.Ahora, Microsoft ha construido uno propio, a ser utilizado por todos los lenguajesde la plataforma .NET, porque de nuevo- la solucin que requiere un verdaderolenguaje orientado a objetos de asignar y liberar memoria constantemente es uncolector.

    Cuando usted utiliza un objeto, debe cerciorarse de realizar los siguientes pasos:

    1. Se solicita una referencia a un objeto2. Se asigna memoria para el objeto3. Se carga el objeto en memoria y se inicializa4. Se utiliza5. Se destruye la referencia6. Se libera la memoria

    *En otros lenguajes el proceso puede ser aun ms complejo.

    Como vimos anteriormente, si por error alguno de los puntos no se realiza, o seefecta en un orden diferente, las consecuencias pueden variar desde un consumo dememoria elevado, hasta la corrupcin de objetos y el comportamiento de la aplicacinen forma inesperada, en momentos imprevisibles. Si bien existen algunasherramientas que nos permiten detectar este tipo de errores (como ser el Task

    Manager, System Monitor ActiveX Control, Compuwares BundsChecker,etc), stacontina siendo una equivocacin muy frecuente, y de un alto costo e impacto paralas aplicaciones actuales.El colector de basura est destinado a reemplazar el sistema tradicional de manejo dememoria, que consiste en liberar en forma manual los recursos, y responde a ser lanica forma que COM ofrece. Generalmente los objetos COM son grandes, y el

    proceso de asignar y liberar la memoria es pesado para esta tecnologa. En los nuevoslenguajes donde todo debe ser tratado como un objeto y constantemente se solicita o

    libera memoria, es un costo muy alto a pagar.Como ya vimos, una de las caractersticas de COM es la del manejar un contadorinterno de referencias. Cada vez que una referencia a un objeto es solicitada, elcontador es incrementado, y cuando la referencia es liberada el contador esdecrementado. Cuando el contador de referencias llega a 0, la memoria es liberada.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    42/48

    Introduccin a la Plataforma .NET

    34

    Este proceso resuelve bien muchas situaciones, pero como vimos anteriormente, tieneun serio inconveniente: las referencias circulares.

    Los programadores frecuentemente construyen complejos sistemas que constan decientos de componentes (objetos) relacionados entre s. Como resultado de esto, amenudo un objeto A contiene una referencia a un objeto B, y un objeto B puedecontener una referencia al objeto A. A esto se le llama referencia circular, y ustednecesita cdigo especial para tratar este caso. Por ejemplo, debe asegurarse que elobjeto sea liberado en el orden adecuado, de la forma correcta, y determinar cuandoya no esta siendo utilizado. De hecho, escribir cdigo especial para este tipo deocasiones es una mala idea, ya que se debe considerar -incluso cuando los objetosactuales no tengan previsto utilizar referencias circulares- esta casustica. De estaforma, las referencias circulares han generado cientos de artculos y formas de

    remediar este problema. El recolector de basura ha encontrado una solucin a lasreferencias circulares desde sus comienzos. Los sistemas con colector de basurapueden asignar y liberar la memoria en forma eficiente y automtica, equilibrando losrecursos, y liberando al programador de esta tarea. De esta forma, el colector de

    basura puede ser visto como un servicio invisible para usted- que se ocupa de liberarla memoria cuando no esta siendo utilizada. Esto ha trado consigo un cambio en lamodalidad de solicitud y liberacin de objetos en Microsoft Visual Basic, ya queahora la utilizacin de la palabraNothinges opcional.Otra de las caractersticas compartidas por los colectores de basura y quiz el puntoms importante a tener en cuenta- es que la memoria no es liberada en el momentoque los objetos dejan de estar en uso. En las versiones anteriores de Visual Basic,

    usted poda conocer el momento exacto en el cual un objeto era liberado (se asignaNothing a la variable de tipo objeto, y el contador de referencias es 0). A estacaracterstica se le denomina finalizacin determinada, ya que el desarrollador tieneel control total sobre dicho evento.

    La perdida de esta caracterstica ha causado algunos cambios importantes en ellenguaje, como el no soporte para el evento de finalizacin de una clase(Class_Terminate), debido a que se desconoce el momento exacto en el cual elcolector lo destruir. Para solucionar esto, el cdigo manejado cuenta con el evento

    Finalize a ser lanzado cuando el colector de basura libere la memoria ocupada por elobjeto.

    A B

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    43/48

    Introduccin a la Plataforma .NET

    35

    A medida que contine con el libro olvidar la tediosa tarea de liberar referencias enVisual Basic, pero deber pensar en el impacto que esto tendr sobre susaplicaciones actuales.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    44/48

    Introduccin a la Plataforma .NET

    36

    La so luc in a l in f ie rno DLL: Ensamb lados (Assembly)En algunas ocasiones, el recuerdo de los sistemas operativos monotarea y lasinstalaciones de aplicaciones que constaban de copiar un conjunto de archivos a un

    directorio (ahora llamada carpeta), invade mi mente con un dejo de melancola. Comovimos anteriormente, la gran parte de los desarrolladores estn familiarizados con lascaractersticas de las bibliotecas compartidas y sus posteriores consecuencias (comoser El infierno DLL).El infierno DLL refiere a un conjunto de problemas causados por la utilizacin dearchivos compartidos. Con la arquitectura actual (COM) se hace complejo construir

    bibliotecas que no sean compartidas, y que estn aisladas de las dems aplicaciones.Por otra parte, la imposibilidad de mantener activa o correr varias versiones de lamisma biblioteca al mismo tiempo, produce otro conjunto de restricciones. La

    plataforma .NET ofrece una solucin definitiva a este problema, mediante losllamadosEnsamblados(Assembly).En general, la instalacin de una aplicacin consta de varios pasos, y tpicamenteenvuelve copiar un nmero de componentes al disco, y crear un conjunto deinformacin en el archivo de registro que describe los componentes instalados. Deesta forma, existe una separacin entre la informacin del archivo de registro quedescribe al componente, y los archivos fsicos (que son los que contienen laimplementacin), haciendo difcil coordinacin de ambos.Otro problema comn es el de actualizar un componente de una aplicacin mientrasesta se ejecuta. En los casos ms problemticos (como ser aplicaciones Webde altademanda) el servicio Web debe ser parado e iniciado nuevamente para actualizar elcomponente COM.

    Como vimos, todos estos problemas son causados porque la descripcin delcomponente est separada, esto indica que los componentes no son auto-descriptivos.Los ensamblados (Assembly) son la tecnologa principal de .NET utilizada pararesolver los problemas de versin e instalacin. En la mayora de los casos, unensamblado equivale a un DLL, y en esencia, ellos son bibliotecas lgicas (o DLLslgicos). Los ensamblados son auto-descriptivos o auto-contenidos, esto quiere decirque no necesitan agregar informacin en el archivo de registro.Los ensamblados contienen el llamado manifiesto (Manifest), que detalla su versin ytoda aquella informacin para que este pueda ser identificado nicamente.Las versiones de componentes en la plataforma .NET se realiza a nivel deensamblados, siendo sta la unidad mas pequea. Incluso la seguridad se maneja

    mediante el Ensamblado como ncleo principal del modelo de seguridad, de estaforma, el desarrollador de un ensamblado puede registrar en el manifiesto el conjuntode permisos necesarios para ejecutar dicha biblioteca, y el administrador podrgarantizar los privilegios requeridos por el ensamblado mediante la poltica deseguridad.

    En .NET existen los ensamblados denominados lado a lado (Side by Side), y sonellos el corazn de la nueva historia en lo que a versiones se refiere. Lado a Ladoesla habilidad de correr mltiples versiones del mismo componente en la mismamquina al mismo tiempo. Debido a esto, diferentes aplicaciones pueden estarutilizando simultneamente diferentes versiones de la misma biblioteca. Con los

    componentes que soportan Lado a lado, los autores no estn atados a una estrictacompatibilidad con versiones anteriores, ya que las aplicaciones son libres de utilizar

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    45/48

    Introduccin a la Plataforma .NET

    37

    diferentes versiones del mismo componentes. Por otra parte, aislando un componentese asegura que ser accedido y utilizado por una nica aplicacin. El aislamientoofrece al desarrollador el control absoluto sobre el cdigo que es empleado por suaplicacin, y es la modalidad por defecto utilizada en la plataforma .NET.Como vimos anteriormente, el aislamiento de bibliotecas comienza con Windows

    2000, con la introduccin del archivo con extensin .local. Este archivo es utilizadopara causar que el sistema operativo y COM observen primero al directorio de laaplicacin, e intenten cargar la biblioteca all existente (en vez de la especificada porel archivo de registro).

    Los ensamblados privados, son instalados con la estructura de directorios de laaplicacin, y es CLR quien se encarga de buscar la biblioteca dentro del directorio.Para ello utiliza un sistema denominado probing, que consta de tomar el nombre delensamblado, agregarle la extensin .dll, y buscarlo dentro de los directorios de laaplicacin. A su vez, algunas caractersticas pueden variar de acuerdo al lenguaje delsistema operativo donde se ejecuta el ensamblado (a esto se le llama cultura). La

    cultura es til cuando se desea que los ensamblados con recursos pertenecientes unlenguaje se utilicen en ciertas situaciones, por ejemplo que cuando el lenguaje seaespaol se busquen en el directorio ES, mientas que los ensamblados pertenecientesal lenguaje ingls se busquen en un directorio llamado EN.Por otra parte, las aplicaciones de la plataforma .NET, cumplen con las siguientescaractersticas:

    Son auto-descriptivasAl ser auto-descriptivas, eliminan la dependencia con el archivo deregistro, permitiendo un impacto cero sobre la instalacin ydesinstalacin.

    La Informacin de versin esta registrada y es forzosamente mantenida.La plataforma implementa compatibilidad de versiones, a los efectosde cargar la versin adecuada en tiempo de ejecucin.

    Contienen la ltima configuracin vlidaCuando una aplicacin es ejecutada, la plataforma provee la capacidadde recordar el conjunto de componentes, incluyendo sus versiones, alos efectos de almacenar la informacin de todos los componentes quetrabajan en conjunto.

    Soportan las caractersticas lado a lado (Side-by-side)Permite que mltiples versiones de un mismo componente puedan serinstaladas y ejecutadas simultneamente, y a las aplicaciones clienteespecificar que versin desea cargar, en vez que la versin sea forzadaa utilizar por el sistema operativo.

    Soportan aislamiento de aplicacinLas aplicaciones no son afectadas por los cambios como consecuenciade la instalacin de otra aplicacin.

    Como vimos anteriormente, los ensamblados contienen una seccin denominadamanifiesto, donde se especifica informacin descriptiva del mismo.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    46/48

    Introduccin a la Plataforma .NET

    38

    Veamos parte de la informacin all almacenada:

    Identidad

    La identidad de un ensamblado consta de tres partes: nombre, versin,y cultura.

    Lista de archivos

    Incluye la lista de todos los archivos que contiene el Ensamblado.

    EnsambladosreferenciadosLista de dependencias de todos los Ensamblados utilizados por el

    presente Ensamblado.

    Tipos y recursos exportadosEntre otras, se especifica la visibilidad disponible para los tipos y recursosque integran el Ensamblado.

    Solicitudes de permisoIndica informacin inherente a la seguridad requerida por el Ensamblado.

    No es necesario que conozca la estructura fsica de un ensamblado, pero es bueno quedistinga las cuatro partes que lo componen: el manifiesto, la metadata que describe lostipos, el cdigo en lenguaje intermedio (MSIL), la implementacin de los tipos, y lalista de recursos. Si bien existen varias modalidades de empaquetar estos cuatro

    elementos, estos pueden estar contenidos dentro de una nica biblioteca DLL, ascomo partido en mltiples archivos.

    Al igual que las bibliotecas compartidas utilizadas mediante la tecnologa COM, los

    ensamblados tambin pueden ser compartidos por varias aplicaciones. Losensamblados compartidos son guardados en el almacn de ensamblados globales.

    Manifiesto

    Metadata

    MSIL

    Biblioteca1.DLL

    Nombre: Biblioteca1.dllOtros Archivos:NoDependencias: MSCORLIBR.DLL,

    OTRABIBLIOTECA.DLLPermisos requeridos: Lectura, EscrituraTipo: PrivadoLista de tipos pblicos: Clase1, Clase2, Clase3,Interfase1, Estructura1. Enumerado

    Ensamblado1

    Manifiesto

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    47/48

    Introduccin a la Plataforma .NET

    39

    La utilizacin del almacn no es obligatoria, pero puede brindarle un buen marco parala administracin de los mismos. Generalmente los ensamblados compartidos sonagregados al almacn por el instalador de la aplicacin. Un ensamblado compartidodebe especificar en forma muy estricta la informacin de versin, compatibilidad, ydependencias. Al igual que en la tecnologa COM, los ensamblados compartidos

    deben tener un nombre global nico a nivel del sistema operativo, para que de estaforma pueda ser identificado nicamente. Para ello, se utiliza criptografa de clavepblica y privada, que adicionalmente le asegura al autor de un componente que nadiemas que l podr generar nuevas versiones del mismo.

    Veamos con que ventajas cuenta la utilizacin de bibliotecas compartidas mediante elalmacn de ensamblados:

    Mejor rendimiento Si el ensamblado ya ha sido cargado enmemoria, no se verifica nuevamente su integridad si otra aplicacinrequiere una instancia del mismo. Por otra parte, el sistema operativo

    utiliza una nica instancia para servir a todas las aplicaciones.

    Chequeo de Integridad Cuando un ensamblado es agregado alalmacn, un chequeo de integridad es realizado sobre todos losarchivos que la contienen.

    Seguridad de archivos - Solamente usuarios con permisos deadministrador pueden eliminar archivos del almacn. Debe recordarque generalmente un instalador se ejecuta con permisos deadministrador.

    Versiones Permite que mltiples versiones del mismo ensambladopueden existir en el almacn.

    Como vimos, los ensamblados tienen varias ventajas sobre la arquitectura debibliotecas compartidas de COM. Mas adelante, crearemos varios ensamblados desdeVisual Basic.

  • 7/27/2019 Visual Basic Brain Upgrade.pdf

    48/48

    Introduccin a la Plataforma .NET

    Qu ver en los prximos captulos?A mi criterio, el entendimiento de este captulo constituye un paso muy importante enla comprensin del resto del libro, y del alcance de las tecnologas .NET.En el prximo captulo veremos las caractersticas principales de la nueva interfase dedesarrollo, y posteriormente nos avocaremos a analizar en detalle las caractersticasaqu citadas.