intro .net

Embed Size (px)

Citation preview

  • El lenguaje .Net

    1Este captulo nos dar una introduccin a las caractersticasdel lenguaje .Net, qu es el Framework, cmo se estructurasu lgica y qu herramientas y complementos disponemos enel paquete de herramientas de Visual Studio. Una vezcomprendido los conceptos bsicos del marco de trabajo que nos brinda .Net, haremos una introduccin a loslenguajes estrella del producto.Visual Basic .Net y C#,cules son las similitudes y diferencias entre ellos yrealizaremos algunos ejercicios prcticos.

    013a024.qxp 09/07/2008 06:24 p.m. Pgina 11

  • El lenguaje .Net

    Que es .Net

    Los lenguajes

    Visual Basic .Net

    Visual C#

    Ejercicios prcticos

    Comenzaremos por entender que es .Net, todos loscomponentes que arman esta plataforma y la arquitectura queste maneja para desarrollo de software.

    Veremos los lenguajes estrella que se incluyen en Visual Studio.Net, como ser Visual Basic .Net y C#, sus diferencias y similitudes.

    El lenguaje que le dio un gran salto a Microsoft en el mundo de la programacin, se ha renovado, adquiriendo el poder y fuerzade .Net.

    C# ha ganando un terreno importante en los lenguajes deprogramacin por su potencia y practicidad. Conozcamos qucaractersticas nos brinda.

    Para entender mejor los conceptos explicados hasta aqu de cadalenguaje que componen a Visual Studio, realizaremos ejerciciosprcticos de consola, utilizando la sintaxis vista hasta el momento.

    El lenguaje .Net fue ganando lentamente su lugar en el mundode la programacin, y la versin 2005 fue un gran para losprogramadores.

    013a024.qxp 09/07/2008 06:24 p.m. Pgina 12

  • 13

    Para llegar a convertirnos en profesionales deldesarrollo, no podemos omitir ningn concep-to; por ese motivo comenzaremos conociendocules son los componentes que ofrece la tec-nologa con la cual vamos a trabajar.Microsoft .NET es una plataforma de desarro-llo y ejecucin de aplicaciones; es decir, pro-porciona los elementos necesarios para el desarrollo de aplicaciones de software, y todoslos mecanismos de seguridad y eficiencia paraasegurar su ptima ejecucin.Veamos a continuacin cules son algunas desus principales caractersticas:

    Las aplicaciones de .NET se ejecutan en unentorno aislado del sistema operativo deno-minado runtime, lo que lo hace flexible,seguro y portable.

    Es 100% orientado a objetos. Permite desarrollar aplicaciones en ms de

    un lenguaje de programacin. Est diseado para posibilitar el desarrollo

    de aplicaciones corporativas complejas, ro-bustas y flexibles.

    Proporciona un nico modelo de programa-cin consistente para el desarrollo de dife-rentes modelos de aplicaciones (Windows,Web, de consola, mviles, etc.) y para dife-rentes dispositivos de hardware (PC, TabletPC y Pocket PC, entre otros).

    Puede integrarse fcilmente con las aplica-ciones desarrolladas en modelos anteriores,como COM. Es posible utilizar elementosCOM en los desarrollos .NET, y viceversa.

    Integra aplicaciones de otras plataformas ysistemas operativos, al implementar estn-dares como XML, SOAP, WSDL, etc.

    Los principales elementos que constituyen laplataforma .NET son los siguientes:

    .NET Framework: Es el componentefundamental, que contiene los elementosnecesarios para la creacin y ejecucin de las aplicaciones. Est formado,bsicamente, por dos elementos: el entor-no de ejecucin de aplicaciones y las bi-bliotecas base.

    El entorno de ejecucin de aplicaciones oruntime es el denominado Common LanguageRuntime (CLR). Entre sus principales fun-ciones, se ocupa de:- Administrar la memoria de forma inteli-

    gente: Esto significa liberar y controlarla memoria de manera automtica.

    - Realizar el aislamiento de aplicaciones:Si una aplicacin deja de funcionar, noafecta a otra en ejecucin ni al sistema.

    - Brindar seguridad en la ejecucin de loscomponentes: Basa su ejecucin en lainformacin proporcionada por ellos(metadata), que indica cmo debe ejecu-tarse, qu versin utilizar y bajo qucontexto de seguridad, entre otras cosas.

    Qu es .NET?A continuacin, haremos una introduccin a .NET, y veremoscules son las principales caractersticas que debemos conocer.

    Component Object ModelEs la plataforma para desarrollo de componentesde software introducida por Microsoft antes de.NET. El trmino COM es usado comnmente enel desarrollo de software como un trmino queabarca las tecnologas OLE, OLE Automation,ActiveX, COM+ y DCOM. Podemos decirentonces que .NET es la evolucin de COM.

    Qu es .NET?

    013a024.qxp 09/07/2008 06:24 p.m. Pgina 13

  • 1414

    - Generar cdigo nativo: La ejecucin delos componentes se realiza con un com-pilador Just In Time (JIT), que traduce loscomponentes al cdigo nativo segn laCPU en que se encuentre, y los ejecutaen su entorno.

    Base Class Library (BCL) o biblioteca declase base: Proporciona todos los compo-nentes y clases necesarios para el desarrollode aplicaciones en la plataforma. stos in-cluyen la mayora de las funcionalidadesque los programadores aplican de maneracotidiana y, adems, un conjunto de clasesespecficas de acuerdo con la tecnologaque se va a utilizar en la creacin de lasaplicaciones. Todos estos componentes es-tn divididos en tres grupos principales:

    - Windows Forms - ASP.NET y Servicios Web XML - ADO.NET

    Lenguajes de programacin y compila-dores: Los lenguajes de programacin per-miten el desarrollo de aplicaciones sobre laplataforma .NET. Hacen uso de las especi-ficaciones del CLR y de las BCL para eldesarrollo de las aplicaciones, y siguen unestndar denominado Common Language Specification (CLS), lo que hace que seancompletamente compatibles entre s.Existen muchos lenguajes para programaren .NET, como Visual Basic .NET, C# (C-Sharp), NET.COBOL, y otros. Dadoque el CLS es una especificacin abierta,cualquier lenguaje que cumpla con ella pue-de ser utilizado para desarrollar en .NET.

    Herramientas y documentacin: .NETproporciona un conjunto de utilitarios yherramientas de desarrollo que simplifican elproceso de creacin de aplicaciones, as comotambin, documentacin y guas de arquitectu-ra, que describen las mejores prcticas de dise-o, prueba e instalacin de aplicaciones .NET.

    Sistemas operativos

    El framework .Net puede instalarse en cualquiersistema operativo de la familia Windows superior a laversin 98.Windows 2003 y 2008 Server, XP Servicepack 2 y Windows Vista ya lo tienen instalado.

    FIGURA 001 | stos son los principales componentes que integran la plataforma .NET.

    CLR (Common Language Runtime) BCL (Base Class Library) Lenguaje de programacin Herramientas y documentacin

    Tecnologa .NET

    1. EL LENGUAJE .NET

    013a024.qxp 09/07/2008 06:24 p.m. Pgina 14

  • 1515

    .NET FrameworkEl primer elemento que debemos conocer esel .NET Framework o marco de trabajo.Como ya mencionamos, es el componentefundamental de la plataforma Microsoft.NET, y es necesario tanto para desarrollaraplicaciones como para ejecutarlas luego.Tiene tres versiones, que pueden conseguirseen forma gratuita:

    .NET FRAMEWORK REDISTRIBUTABLE PACKAGEEs el componente de la plataforma .NET nece-sario para ejecutar aplicaciones. Este elementose instala en los entornos de produccin o esta-ciones de trabajo de los clientes y en las compu-tadoras de los usuarios que vayan a utilizar apli-caciones .NET. Tiene dos elementos: el entornode ejecucin de la plataforma .NET (CLR, msadelante lo veremos en detalle) y las bibliotecasde funcionalidad reutilizable (BCL).

    .NET FRAMEWORK SDKEsta versin contiene herramientas de desarro-llo de lnea de comandos (compiladores, depura-dores, etc.), documentacin de referencia, ejem-plos y manuales para programadores.En general, se instala en los entornos de de-sarrollo de aplicaciones, por lo que resulta mstil para programadores que para usuarios. Parainstalar la versin SDK (Software Development Kit)es necesario instalar previamente el RedistributablePackage (mencionado con anterioridad).

    .NET COMPACT FRAMEWORKSe trata de una versin reducida del .NETFramework Redistributable, especialmentepensada para instalar en dispositivos mviles,como Pocket PCs y Smart Phones.En este caso, cuando se trata de las aplicacio-nes de escritorio (WinForms o de Formula-rios) y las de consola (aplicaciones cuya inter-faz de usuario es una consola de comandos

    con textos solamente), el framework debe es-tar instalado en la PC del cliente (usuario), yen el servidor slo si la aplicacin ser distri-buida y tendr parte de su funcionalidad cen-tralizada en una nica computadora. En el ca-so de las aplicaciones Web, el nico requisitodel lado del cliente o usuario es tener un nave-gador (browser) y una conexin de red al ser-vidor, que debe tener instalado el .NET Fra-mework. Finalmente, para las aplicaciones m-viles, que se ejecutan sobre Windows Mobileen algn dispositivo tipo Pocket PC o SmartPhone, es preciso tener instalado el .NETCompact Framework en el dispositivo.

    VersionesExisten varias versiones de los frameworksmencionados:

    Versin 1.0: Liberada a principios del ao 2002, uti-lizada en la primer version de Visual Studio .Net,incluia soporte para para los nuevos lenguajesVB.Net y C# .Net.

    Versin 1.1: Liberada en 2003, inclua el compactframework, framework 1.1 y soporte para el len-guaje J# .Net.

    Versin 2.0: Liberada a fines del ao 2005, fue elprimer gran cambio en la plataforma, y result unaEvolucin en lugar de una revolucin. Un gransalto en lo que respecta a la productividad.

    Versin 3.0: Liberada en noviembre de 2006, combi-na las caracteristicas de la versin 2.0 con las nuevastecnologas como Windows Presentation Founda-tion,Windows Communication Foundation,Win-dows Workflow Foundation y Windows CardSpace.

    Versin 3.5: Liberada en noviembre de 2007, inclu-ye nuevas caracteristicas de las versiones 2.0 y 3.0incorporadas en forma incremental ms el servicepack 1 correspondientes a los respectivos frame-works.

    Qu es .NET?

    013a024.qxp 09/07/2008 06:24 p.m. Pgina 15

  • 1616

    Entorno de ejecucin

    El CLR o Common Language Runtime es el en-torno que administra la ejecucin de cdigo yproporciona los servicios para el desarrollo delas aplicaciones, as como tambin todos loselementos requeridos por los lenguajes, VisualBasic .NET, C# y otros de .NET.Los tipos de datos son comunes a todos loslenguajes y son provistos por el Common TypeSystem (CTS o sistema de tipos comunes) delCLR. Cada tipo de dato tiene su propia sintaxisen su lenguaje de programacin, pero, al ser to-mados por el CLR, esos tipos son iguales.Esto se debe a que uno de los principales ob-jetivos de la plataforma .NET fue ser indepen-diente del lenguaje de programacin elegidopara el desarrollo de aplicaciones. Por eso secre la Common Language Specification (CLS o es-

    pecificacin de lenguaje comn), que define yestandariza un conjunto de las caractersticassoportadas por el CLR que son necesarias en lamayora de las aplicaciones. Todos los compo-nentes desarrollados y compilados de acuerdocon esta especificacin pueden interactuar en-tre s, independientemente del lenguaje en elque fueron escritos.Microsoft proporciona, junto con el .NET Fra-mework, las implementaciones de cuatro lengua-jes compatibles con CLS, y sus compiladores:

    Microsoft Visual Basic .NET Microsoft Visual C# .NET Microsoft Visual J# .NET Microsoft Visual C++ .NET

    Esto significa que una aplicacin escrita en Vi-sual Basic .NET, por ejemplo, puede incorporar

    SERVICIOS DESCRIPCIN

    Compilacin Just In Time El CLR se encarga de compilar las aplicaciones .NET a cdigo de mquina nativo para el(o justo a tiempo) sistema operativo y la plataforma de hardware en la que se est ejecutando.

    Gestin automtica de El CLR abstrae a los desarrolladores de tener que pedir y liberar memoria explcitamente.memoria Para hacerlo, uno de sus componentes, llamado garbage collector (recolector de basura),

    se ocupa de liberar peridicamente la memoria que ya no est siendo usada por ningunaaplicacin.Adems, el CLR tambin abstrae a los desarrolladores del uso de punteros ydel acceso a memoria de bajo nivel. Si bien estas caractersticas pueden ser consideradaspoderosas, suelen hacer que el desarrollo y el mantenimiento de aplicaciones resultenms propensos a errores y menos productivos.

    Gestin de errores Como las aplicaciones .NET no se ejecutan directamente contra el sistema operativo,consistente cualquier error no manejado que ocurra en tiempo de ejecucin ser atrapado por el

    CLR en ltima instancia, sin afectar a ninguna otra aplicacin que se est ejecutando ni te-ner efecto alguno sobre su estabilidad.

    Ejecucin basada en Todas las aplicaciones .NET son empaquetadas en componentes reutilizables denominados,componentes genricamente, assemblies, que el CLR se ocupa de cargar en memoria y ejecutar.

    Gestin de seguridad El CLR proporciona una barrera ms de contencin a la hora de ejecutar aplicaciones ma-nejadas, ya que permite establecer polticas de seguridad muy detalladas, que debern sercumplidas por las aplicaciones .NET que se ejecuten en una determinada computadora.

    Multithreading El CLR brinda un entorno de ejecucin multi-hilos por sobre las capacidades del sistemaoperativo, as como tambin, mecanismos para asegurar su sincronizacin y acceso con-currente a recursos compartidos.

    Tabla 1 | Principales servicios proporcionados por el CLR

    1. EL LENGUAJE .NET

    013a024.qxp 09/07/2008 06:24 p.m. Pgina 16

  • 1717

    sin problemas nuevas partes escritas en C# oC++.NET.Dado que la especificacin CLS es un estndarpblico, ha permitido que otros diseadoresde lenguajes y compiladores desarrollen msde 20 lenguajes compatibles con ella y, por lotanto, compatibles entre s y con los lenguajesdesarrollados por Microsoft. Todos los compo-nentes y las aplicaciones creados bajo estas espe-cificaciones se dice que son de cdigo adminis-trado, o Managed Code. La nica excepcin esC++.NET, que, adems, tiene la capacidad decrear cdigo no manejado, o Unmanaged Code,debido a que muchas aplicaciones de muy bajonivel, como drivers de dispositivos, necesitan te-ner acceso directo a los recursos del sistemaoperativo para tener un mejor rendimiento.

    Como cada lenguaje proporciona su propia sin-taxis en la implementacin de las directivas delCLS, es necesario que los compiladores tra-duzcan su cdigo fuente en algo que seaentendible por el CLR. Ese algo se denomi-na MSIL o Microsoft Intermediate Language, que esun cdigo intermedio en el que se compilantodos los lenguajes de .NET. Estos componen-tes y aplicaciones resultantes de la compilacinse conocen como assemblies o ensamblados en.NET. Pueden ser archivos ejecutables (.exe) obibliotecas de clases y componentes (.dll). Losassemblies no son ejecutables directamente, si-no que son compilados al cdigo nativo de laCPU en la que se encuentran corriendo por elcompilador Just In Time (JIT) del CLR y, luego,se ejecutan en su entorno. Para que el CLR

    FIGURA 002 | Ejecucin de las aplicaciones por medio del CLR. Los lenguajes de programacin generan cdigo

    administrado en MSIL a travs de sus compiladores. Los assemblies generados son tomados por el JIT del CLR,

    traducidos a cdigo nativo de la CPU en la que se encuentra y ejecutados en un ambiente aislado dentro del CLR.

    VB.NET C// J// C++.NET

    CompiladorVB.NET

    CompiladorC//

    CompiladorJ//

    CompiladorC++.NET

    Assembly(MSIL)

    JIT (Just In Time Compiler)

    CLR (Common Language Runtime)

    Assembly(MSIL)

    Assembly(MSIL)

    Assembly(MSIL)

    Unmanagedcode

    Cdigo Nativo

    SIstema Operativo

    Lenguajes deprogramacin

    Compiladores

    Managed Code

    Esquema de ejecucin del CLR

    Qu es .NET?

    013a024.qxp 09/07/2008 06:24 p.m. Pgina 17

  • entienda cmo debe ejecutar estas aplicacionesy componentes, los compiladores de los lengua-jes de .NET incluyen en la compilacin la me-tadata, que es la informacin que describe losobjetos que forman parte de la aplicacin ocomponente generado.La metadata describe:

    Los tipos de datos y sus dependencias. Los objetos y sus miembros. La referencia e informacin (incluyendo ver-

    sin) de los componentes y recursos exter-nos que son utilizados por la aplicacin ocomponente y que son necesarios para sufuncionamiento.

    Esta metadata de un componente administradoes utilizada por el CLR para proporcionar, en-tre otras, las siguientes funcionalidades: Administrar la memoria. Localizar y crear instancias de clases. Administrar las referencias de los objetos y

    realizar el garbage collection. Resolver las invocaciones de mtodos. Generar cdigo nativo. Asegurar que la aplicacin tiene los recursos

    necesarios para funcionar. Reforzar la seguridad.

    1818

    La inclusin de esta metadata en el compo-nente compilado hace que ste se autodescri-ba. Esto le indica al CLR todo lo necesariopara preparar y ejecutar una aplicacin .NETcorrectamente y permitir que pueda interac-tuar con otros componentes.

    Compilacin Just In Time (o justo atiempo): El CLR se encarga de compilar lasaplicaciones .NET a cdigo de mquina nati-vo para el sistema operativo y la plataformade hardware en la que se est ejecutando. Es-to lo hace sin intervencin alguna del de-sarrollador o el usuario y cuando se necesita.

    Gestin automtica de memoria: El CLRabstrae a los desarrolladores de tener que pe-dir y liberar memoria explcitamente. Para lo-grarlo, uno de sus componentes, llamado garbage collector (recolector de basura), se encar-ga de liberar peridicamente la memoria queya no est siendo usada por ninguna aplica-cin. Por otra parte, el CLR tambin abstraea los desarrolladores del uso de punteros ydel acceso a memoria de bajo nivel. Si bienestas caractersticas pueden ser consideradaspoderosas, suelen hacer que el desarrollo y elmantenimiento de aplicaciones resulten mspropensos a errores y menos productivos.

    Gestin de errores consistente: Como lasaplicaciones .NET no se ejecutan directa-mente contra el sistema operativo, cualquiererror no manejado que ocurra en tiempo deejecucin ser atrapado por el CLR en lti-ma instancia, sin afectar a ninguna otra apli-cacin que se est ejecutando ni tener efec-to alguno sobre su estabilidad.

    Ejecucin basada en componentes: To-das las aplicaciones .NET son empaqueta-das en componentes reutilizables denomina-dos, genricamente, assemblies, que el CLRse ocupa de cargar en memoria y de ejecu-tar. Profundizaremos este tema en los pr-ximos captulos del libro.

    NamespacesEl conocimiento de los namespaces de .NET esde fundamental importancia para aprovechar todala funcionalidad que nos proporciona y, as, notener que escribir cdigo con el que ya contamos.

    El CLR administra la ejecucinde cdigo y permite el

    desarrollo de las aplicaciones.

    1. EL LENGUAJE .NET

    013a024.qxp 09/07/2008 06:24 p.m. Pgina 18

  • 1919

    Gestin de seguridad: El CLR brinda unabarrera ms de contencin a la hora de ejecu-tar aplicaciones manejadas, ya que permite es-tablecer polticas de seguridad que debernser cumplidas por las aplicaciones .NET quese ejecuten en una computadora.

    Multithreading: El CLR provee un entornode ejecucin multi-hilos por sobre las capaci-dades del sistema operativo, as como tam-bin, mecanismos para asegurar su sincroni-zacin y el acceso a recursos compartidos.

    Biblioteca de funcionalidad(Base Class Library)

    La funcionalidad principal de la Base Class Li-brary es proporcionar cientos de tipos bsicos

    (clases e interfaces) orientados a objetos, extensi-bles mediante herencia e independientes del len-guaje de programacin que se desee utilizar (en el libro Introduccin a la programacin, se describe elsignificado de muchos de estos conceptos, queluego profundizaremos con mayor detalle). Esteconjunto de elementos incluye la mayora de lasfuncionalidades que los programadores aplicande manera cotidiana.Dada la cantidad de clases (unos cuantos miles),es necesario organizarlas de algn modo en quesean fciles de encontrar y que permita diferen-ciarlas si poseen el mismo nombre. Para lograr es-to, .NET proporciona lo que se denomina name-spaces o espacios de nombres. Se trata de califica-dores de clases, que hacen posible determinar,unvocamente, qu clases utilizar dentro de .NETy, as, evitar ambigedades. En la Tabla 2 vemosuna breve lista de los principales namespaces.

    FIGURA 003 | Principales namespaces de la Base Class Library.

    Conocerlos nos permitir aprovechar todo el potencial de .NET.

    ServicesDescriptionDiscoveryProtocols

    Caching

    System.Web System.Windows.Forms

    System.Drawing

    System.XmlSystem.Data

    System

    Security

    Configuration SessionState

    OleDb Odbc

    Common

    Colections

    Configuration

    Diagnostics

    Globalization

    IO

    Net

    Reflection

    Resources

    Security

    ServiceProcess

    Text

    Threading

    SqClient

    Drawing2D Printing

    Imaging Text

    XSLT Serialization

    XPath

    UIHtmlControlsWebControls

    Design ComponentModel

    RuntimeInteropServicesRemotingSerialization

    Namespaces de la librera de clases base

    Qu es .NET?

    013a024.qxp 09/07/2008 06:24 p.m. Pgina 19

  • 2020

    Lenguajes de programacin

    Los lenguajes de programacin de .NET es-tn basados en la Common Language Specifica-tion (CLS), por lo cual, ahora, la eleccin dellenguaje en el que debe escribirse una aplica-cin .NET prcticamente fue reducida a unacuestin de gustos personales y comodidadcon la sintaxis. No hay motivos tecnolgicosque nos lleven a elegir un lenguaje en parti-cular, al menos, entre los ofrecidos por

    Microsoft. Todos utilizan el mismo runtime,todos emplean el mismo conjunto de biblio-tecas de la misma manera, no existen dife-rencias de performance, todos tienen la mis-ma potencia, y la misma capacidad de accesoa los recursos y servicios que expone el.NET Framework. De hecho, al cargar y eje-cutar un assembly, el CLR no sabe en qulenguaje de programacin de alto nivel fueescrito ste, ya que lo que recibe finalmentees cdigo MSIL.

    NAMESPACES FUNCIONALIDAD

    System Es el principal namespace y forma la raz de todos los otros dentro del BCL. Entre losprincipales elementos que encontramos en l estn:- Definicin de todos los tipos de datos establecidos por el Common Type System del CLR.- Acceso a funciones matemticas bajo el namespace MATH.- Clases dedicadas al acceso al entorno de ejecucin de la aplicacin a travs del

    namespace Environment.- Acceso directo al Garbage Collector a travs del namespace GC.

    System.Collections Contiene una serie de clases que permiten administrar un conjunto de objetos de maneraordenada. La principal es Collection, pero existen otras, como SortedList,ArrayList,Queue, Stack, etc.

    System.Data Contiene todas las clases necesarias para el procesamiento de datos desde bases de datos(ADO.NET). Entre los principales namespaces, podemos encontrar System.Data.SqlClient(exclusivo para bases de datos SQLServer), System.Data.OleDb (orgenes de datosOLEDB) y System.Data.Odbc (para otros tipos de bases de datos), entre otros.

    System.Drawing Contiene las clases para proporcionar toda la funcionalidad grfica en el framework.

    System.IO Contiene las clases y los mtodos necesarios para leer y escribir todo tipo de archivos,tanto en texto plano como a nivel de bytes.

    System.Security Proporciona toda la funcionalidad para realizar los procesos de autenticacin y autoriza-cin, manejo de credenciales y criptografa, entre otras tareas.

    System.Text Contiene las clases para codificar y decodificar texto de diferentes formatos.Tambin in-cluye las clases necesarias para la bsqueda y el manejo de texto a travs de expresionesregulares.

    System.Windows.Form Es el namespace base para la creacin de aplicaciones Windows con formularios. En l es-tn definidas todas las funcionalidades y los controles necesarios para la creacin de inter-faces de usuario en este tipo de aplicaciones: cajas de texto, botones, etiquetas, dilogos, ymucho ms.

    System.Web Es el namespace base para la creacin de aplicaciones Web (ASP.NET). En l estn defini-das todas las funcionalidades y los controles necesarios para la creacin de interfaces deusuario en este tipo de aplicaciones.Tambin incluye las definiciones para el tratamientode servicios web y muchos aspectos ms de este entorno.

    System.Xml Encapsula todas las clases necesarias para el procesamiento de documentos XML.

    Tabla 2 | Principales namespaces y su funcionalidad

    1. EL LENGUAJE .NET

    013a024.qxp 09/07/2008 06:25 p.m. Pgina 20

  • 2121

    Principales lenguajes de la plataformaExiste una gran variedad de lenguajes de pro-gramacin en la plataforma .NET, aunque sedestacan, principalmente, dos: VB.NET y C#(C Sharp).

    VB.NET es Visual Basic .NET y es la evolu-cin de Visual Basic 6.0. Fue rescrito porcompleto para la plataforma a fin de hacerlototalmente orientado a objetos, y puede haceruso de todos los elementos del framework,como cualquier otro lenguaje. Para quieneshayan programado en Visual Basic 6.0, ste esel lenguaje natural para utilizar en .NET, yaque presenta la misma sintaxis que su prede-cesor, aunque con algunos cambios que per-miten adaptarse a la plataforma.

    C# (pronunciado C Sharp) es un nuevo len-guaje que fue diseado, especficamente, parala plataforma .NET. Tiene una sintaxis similara las de C y Java, por lo que resulta la eleccinnatural para quienes hayan trabajado con ellos.

    Ambos lenguajes son de primer nivel en laplataforma y no presentan diferencias de ren-dimiento en ella.

    Herramientas de desarrollo

    Para que la creacin de aplicaciones en .NETsea lo ms productiva posible, Microsoft ofre-ce su propio entorno de desarrollo: Visual Studio. Se trata de un IDE (entorno integradode desarrollo) preparado para aprovechar to-das la caractersticas del framework .NET ydarle al programador un entorno nico desdedonde realizar todas sus tareas. Dentro de Visual Studio, podemos realizar aplicacionesWindows y Web, servicios Web y bibliotecasde componentes, adems de acceder a bases de

    datos, y muchas opciones ms, con cualquierlenguaje de la plataforma provisto por Micro-soft (VB.NET, C#, C++, etc.). La idea de es-te IDE es que el programador no tenga quecambiar de aplicacin para realizar todas lastareas involucradas en el desarrollo de un sis-tema. La familia de Visual Studio 2005 tieneun producto a la medida de las necesidades yposibilidades de cada tipo de desarrollador:parte desde una lnea gratuita de versiones de-nominadas Express, hasta llegar a una suitecompleta de productos destinada a grandesequipos de desarrollo: Visual Studio TeamSystem. A continuacin, una breve descrip-cin de las diferentes familias de productos:

    VISUAL STUDIO 2005 EXPRESS EDITIONIncluye herramientas livianas, fciles de usar yde aprender, destinadas a novatos, estudiantesy quienes programan como hobby. Son lasversiones ideales para los que recin se ini-cian en .NET. Son gratuitas y hay una herra-mienta por cada lenguaje.Para desarrollar aplicaciones Windows, exis-ten las siguientes alternativas:

    Visual Basic 2005 Express Edition Visual C# 2005 Express Edition Visual J# 2005 Express Edition Visual C++ 2005 Express Edition SQL Server 2005 Express Edition Visual Web Developer 2005 Express

    Qu es un IDE?Un IDE (Integrated Development Environment oentorno integrado de desarrollo) es un espacio detrabajo que proporciona un conjunto de mens,toolbars y ventanas para realizar las diferentestareas de programacin.

    Qu es .NET?

    013a024.qxp 09/07/2008 06:25 p.m. Pgina 21

  • 2222

    VISUAL STUDIO 2005 STANDARD EDITIONEs un entorno de desarrollo unificado, pensa-do para desarrolladores que construyen aplica-ciones cliente/servidor de Windows y sitiosWeb. En esta edicin, todo el IDE se encuen-tra mejorado e integrado, de modo que se pue-den realizar, de manera conjunta, aplicacionesWindows, Web y para dispositivos mviles, endiferentes lenguajes de programacin y sincambiar de entorno.

    VISUAL STUDIO 2005 PROFESSIONAL EDITIONEs un entorno de desarrollo pensado paraprogramadores individuales que construyenaplicaciones de alto rendimiento. Es posibleaprovechar su entorno para construir una am-plia gama de aplicaciones mviles, Web,Windows y basadas en Office. Presenta mejo-ras en el IDE, adems de que proporciona so-porte de depuracin remoto, posibilidad degenerar aplicaciones de 64 bits, y acceso com-pleto a los servicios del sistema y a las basesde datos. Incluye Crystal Reports para la gene-racin de reportes y proyectos de instalacinbasados en Windows Installer.

    VISUAL STUDIO 2005 TOOLS FOR OFFICEEsta versin permite que profesionales IT,ISVs e Integradores de Sistemas construyansoluciones Smart Client para Microsoft Office.

    VISUAL STUDIO 2005 TEAM SYSTEMSe compone de herramientas para administrartodo el ciclo de vida del desarrollo de software,de manera que sean productivas, integradas yextensibles. Ampla la lnea de productos de Visual Studio para que los equipos de trabajomejoren sus capacidades de comunicacin y co-laboracin. La familia Team System se divide en:

    Visual Studio Team Suite: Es la suite mscompleta, til tanto para arquitectos comopara desarrolladores y testers.

    Visual Studio 2005 Team Suite Edicinprofesionales de bases de datos: Es unaedicin especial que proporciona herra-mientas para permitir el cambio de la admi-nistracin, el testeo y la implementacin pa-ra las bases de datos del servidor SQL.

    Visual Studio 2005 Team Suite Edicinpara arquitectos: Brinda herramientas parael diseo visual de servicios, soluciones orien-tadas a servicios y validacin con ambientesoperacionales antes de su implementacin.

    Visual Studio 2005 Team Suite Edicinpara testeadores de software: Introduceun conjunto de herramientas de testeo quese encuentran integradas dentro del ambien-te del Visual Studio y ayudan a construiraplicaciones de alta calidad.

    Visual Studio 2005 Team FoundationServer: Es un servidor integrado que com-bina control de versiones, seguimiento detem de trabajo y reportes.

    Versin de Visual Studio Procesador RAM Disco Rgido

    Express Pentium III 600 MHz o similar 256 MB 700 MB

    Standard Pentium III 600 MHz o similar 256 MB Entre 2 GB y 3,8 GB

    Professional Pentium III 600 MHz o similar 256 MB Entre 2 GB y 3,8 GB

    Team System Procesador de 2 GB o ms 512 MB 8 GB

    Tabla 3 | Requisitos de las versiones

    1. EL LENGUAJE .NET

    013a024.qxp 09/07/2008 06:25 p.m. Pgina 22

  • 2323

    Visual Studio 2005 Team Test LoadAgent: Destinada a testeadores de software.Permite que las organizaciones simulen msusuarios y tests ms precisos de desempeoen las aplicaciones desarrolladas.

    El IDEEl IDE proporciona herramientas tales comolos compiladores, un depurador o debugger(que asiste en el seguimiento y la correccinde errores en los programas) y otras destina-das a administrar los proyectos. Proporcionaun men estndar, numerosas toolbars y ungran nmero de ventanas. El IDE est com-puesto, bsicamente, por cinco secciones:

    Barra de herramientas: Aqu se encuen-tran las barras de herramientas, que dan ac-ceso a los comandos ms comunes. De

    acuerdo con la tarea que estemos realizan-do, esta seccin cambiar segn las necesi-dades.

    Lista de errores: Aqu estn las ventanas deerrores, la de tareas y la de salida.

    Cuadro de herramientas: Presenta la caja deherramientas, que contiene todos los controles

    Gua Visual 001 | Secciones del entorno de desarrollo

    rea detrabajo

    Barra de herramientas

    PacienciaAunque muchos de los conceptos vistos hasta elmomento pueden resultarnos de difcil compren-sin e incluso algo aburridos, debemos saber que esmuy importante tener una base conceptual slidaantes de comenzar a tipear cdigo. Muchos de es-tos conceptos sern comprendidos con mayor clari-dad cuando empecemos a trabajar.

    Cuadro de herramientas

    Lista de errores

    Exploradorde solucionesy ventana dePropiedades

    Qu es .NET?

    013a024.qxp 09/07/2008 06:25 p.m. Pgina 23

  • 2424

    y componentes que podemos utilizar cuandorealizamos aplicaciones. Segn el tipo de pro-grama (Windows o Web), se llenar con loscontroles y componentes apropiados para ca-da uno. Tambin est el DataBase Explorer oexplorador de bases de datos, que nos da ac-ceso a los orgenes de datos a utilizar ennuestra aplicacin.

    Explorador de soluciones y ventana depropiedades: Ambos son importantes, yaque el primero presenta todos los proyec-tos y archivos con que estamos trabajando;y el segundo, las propiedades de todos loselementos del entorno.

    rea de trabajo: En este espacio aparecentodos los documentos que estemos manejan-do, tanto en vista de cdigo como en vistade diseo. El IDE es un entorno de mlti-ples documentos, y se accede a cada uno deellos a travs de las solapas con su nombre.

    Debido a la gran cantidad de elementos quecontiene el IDE, se le han agregado otrospara aprovechar al mximo el espacio dispo-nible. Uno de ellos es el AutoDock, que per-mite mover las ventanas por todo el IDEutilizando el mouse para reposicionarlas. Sipor alguna razn cerramos alguna ventana,basta con ir al men Ver para abrirla otravez.

    Mens y barras de herramientas

    El IDE presenta un conjunto de mens quedebemos acostumbrarnos a utilizar para sa-carle el mximo provecho. Muchos de ellos si-guen el estndar de cualquier aplicacin Win-dows, y otros cuentan con opciones y funcio-namiento similares a los de cualquier aplica-cin. En la Gua Visual 002 se describen losprincipales mens y sus funcionalidades.

    Gua Visual 002 | Los mens del entorno

    Proporciona lasopciones para la

    apertura y grabacinde proyectos y

    soluciones.

    Brinda los comandospara la edicin detexto, tales comoCut, Copy y Paste.

    Permiteacceder a

    lasventanasdel IDE.

    Destinado ala compilacindel proyecto.

    Configura lasconexiones a

    los orgenes dedatos.

    Permite la selecciny organizacin de

    las ventanas dentrodel IDE.

    Brinda acceso a laayuda integrada del

    sistema.

    Permiteagregar

    diferenteselementos al

    proyecto.

    Posibilita elseguimiento delprograma para ladeterminacin

    de errores.

    Contiene un conjuntode opciones para laconfiguracin delentorno y de los

    proyectos.

    Otorga acceso a losrecursos en lneasobre Visual Basic.

    1. EL LENGUAJE .NET

    013a024.qxp 09/07/2008 06:25 p.m. Pgina 24

  • 2525

    Como mencionamos anteriormente, existendiversas versiones de Visual Studio segn lanecesidad de cada corporacin o equipo detrabajo. El problema es que cada una es muycostosa, y es difcil que dispongamos de al-gunos miles de dlares para adquirir una ycomenzar a estudiar. Por eso, la empresa Mi-crosoft puso a disposicin una versin de suentorno Visual Studio totalmente gratuita,llamada Express. La pregunta es por quofrece sin costo un entorno que cuesta milesde dlares. La respuesta es sencilla: esta ver-sin Express no contiene todo el potencialde sus hermanas mayores, pero nos permiteaprender usando sus mismas posibilidades.Antes de continuar, es importante que co-nozcamos cul es la diferencia que existe en-tre esta versin y la versin comercial.La versin Express est dividida por lengua-jes, es decir que si queremos utilizar VisualBasic .NET, deberemos instalar esa versinde Visual Studio Express; en el caso de C#,deberemos hacer lo mismo, y as podremoscompletar todos los lenguajes disponibles. Yes ac donde tenemos la principal diferencia.Las versiones superiores a las Express utili-zan el mismo entorno para todos los lengua-jes, y permiten instalar una sola vez el pro-ducto, para disponer de todos ellos. Incluso,es posible realizar aplicaciones empleandoms de un lenguaje de programacin al mis-mo tiempo (siempre que hayamos instaladoantes todos los entornos). Como nosotrosestamos comenzando a programar y no va-mos a realizar aplicaciones multilenguaje,esta ltima caracterstica realmente no nosbeneficia.

    Cmo obtener las versiones Express

    Las versiones de los programas de visual studio con lasque trabajaremos a lo largo del libro, estn disponibles enInternet, por lo cual si no disponen de banda ancha, es re-comendable descargarlas desde un cibercaf, o desde la ca-sa de algun conocido que disponga de banda ancha. Elcontenido descargado conviene grabarlo en un CD-ROMpara tenerlo disponible en el momento que lo necesite-mos. Recomendamos, tambin, una lectura exhaustiva delsitio Web de Microsoft para conocer los respectivos servi-ce packs que han salido con posterioridad al lanzamientode cada una de estas herramientas, y descargarlos e insta-larlos luego de tener el conjunto de aplicaciones instaladas.Esto nos permitir trabajar con mayor seguridad en nues-tros desarrollos sin preocuparnos por bugs o errores quelas herramientas contenan en sus primeras versiones.Todas las versiones Express que utilizaremos tienen ungran potencial, que nos permitirn efectuar desarrollosde nivel profesional, y el da de maana cuando estemosdelante de una versin profesional, veremos que su con-formacion es exactamente igual a la de las versiones express, por lo cual no perderemos tiempo en tener queaprender su manejo.

    Visual Studio ExpressVeamos y analicemos cules son las ventajas, requisitos yposibilidades que nos brinda esta versin de Visual Studio.

    Requisitos mnimos para las versiones ExpressProcesador: Pentium III, 600 MHzRAM: 256 MBDisco duro: 700 MB aproximadamente para ca-da lenguajeSistema operativo:Windows XP, 2000 o superior

    Visual Studio Express

    013a024.qxp 09/07/2008 06:25 p.m. Pgina 25

  • Language, o lenguaje intermedio de Microsoft),que se asemeja mucho a un assembler. El cdi-go MSIL generado se almacena en un archivodenominado ensamblado (o assembly, en ingls).En Windows los ensamblados ejecutables tienenextensin exe, y los que son bibliotecas de cla-ses o de controles tienen extensin dll. ComoMSIL es independiente de la plataforma, se lo-gra una ventaja fundamental: no dejar atado elprograma compilado a una plataforma dada.Luego, al momento de ejecutar el programa, uncomponente denominado CLR (que veremosluego) se ocupa de leer el cdigo MSIL y deconvertirlo en cdigo propio de la mquina enla que se va a ejecutar. Para compilar, el CRL sevale del JIT-Compiler (JIT es el acrnimo de JustIn Time, que puede traducirse al espaol comoen el momento). El JIT, o jitter, se encargade hacer la compilacin final.

    CompiladoresEn nuestra prctica anterior,Visual Studio realiz algunas tareaspara mostrar nuestra aplicacin.Analicemos cules son.

    Luego de escribir el cdigo fuente de nuestroprograma, falta un paso ms para poder ejecu-tarlo y ver nuestro trabajo funcionando: la com-pilacin. ste es el proceso por el cual el cdigofuente (C#, Visual Basic .NET, etc.) se transfor-ma en cdigo que pueda ser entendido por lamquina. En .NET el resultado de la compila-cin es un poco diferente. Supongamos que he-mos escrito el cdigo para una primer aplica-cion. Luego de haber realizado esto y guardadolos archivos correspondientes al proyecto y m-dulos que lo componen, nos faltara un pasoms para poder ejecutarlo y verlo en funciona-miento. Este paso es la compilacin. Por esteproceso debe pasar el cdigo fuente de nuestroprograma, haya sido desarrollado en VB.Net,C# u otro. El cdigo es transformado en unlenguaje intermedio que interpretar la mquina,denominado MSIL (Microsoft Intermediate

    FIGURA 004 | En los lenguajes tradicionales, el compilador toma el cdigo

    fuente y produce un archivo con cdigo en lenguaje de mquina.

    Compilacin estndar y .NET

    int a - b + c;.entr ypointmaxstack 8L_0000; idstr Hola MundoL_0005; net

    Cdigo fuente Cdigo MSILCompilador

    int a - b + c; 1021211102021001202011120110

    Cdigo fuente Cdigo mquinaCompilador

    2626

    1. EL LENGUAJE .NET

    026a037.qxp 06/07/2008 10:45 p.m. Pgina 26

  • 2727

    Como pudimos ver, la compilacin es una delas etapas fundamentales. Cualquier inconve-niente que detecte el compilador puede conver-tirse en un dolor de cabeza si no contamos conherramientas que nos asistan para manejar loserrores. La mejor ayuda que tendremos para es-to es, sin dudas, el IDE, del cual ya conocimosalgunas herramientas y funciones. ste ofreceun potente editor con coloreo de sintaxis y tec-nologa IntelliSense (que muestra mens conopciones sensibles al contexto a medida que seescribe). Esto es lo que nos permitir minimi-zar muchos de los errores que ms frecuente-mente se cometen al escribir el cdigo.

    Adems, Visual Studio ofrece opciones paradepurar el cdigo y dejarlo libre de errores, quepermiten seguir la ejecucin paso a paso, moni-torizar los valores de las variables e, incluso, al-terar el orden de ejecucin para probar deter-minada parte del cdigo fuente. Otra opcininteresante que provee Visual Studio es la de-puracin remota, consistente en seguir paso apaso la ejecucin de un programa que no seencuentra en la misma computadora donde es-t el IDE, como un servicio en un servidor ouna aplicacin en un dispositivo mvil conecta-do a la PC. Todas estas funciones las iremosdesarrollando a lo largo del libro.Adems de Visual Studio, la plataforma .NETcuenta con otras herramientas interesantes,algunas desarrolladas por Microsoft y otras,por terceros. Una muy til es ILDasm.exe,que permite tomar un ensamblado ya compi-lado y obtener el cdigo MSIL que contiene.Con ella, podemos estudiar cdigo ya compi-lado, para revisar cmo queda. Ahora bien,como se puede ver el cdigo MSIL tan fcil-mente, surge de inmediato una cuestin im-portante: la de la propiedad del cdigo. Esdecir, alguien que tome un ensamblado crea-do originalmente por nosotros puede usar ILDasm para ver su contenido. Si bien el c-digo MSIL no es comprensible para cualquierpersona, es fcil ver de qu manera est im-plementado un algoritmo. Y no es necesarioaclarar que esto puede ser muy perjudicialcuando en el ensamblado interviene informa-cin sensible involucrada, por ejemplo, con elnegocio de una empresa. Ms adelante, anali-zaremos algunas alternativas que permitirnbrindar seguridad al cdigo programado.

    Herramientas de desarrolloLa plataforma .NET incluye, adems de los compiladores, unconjunto de herramientas para facilitar la tarea del desarrollador.

    Las herramientas de edicin delIDE permiten evitar los errores

    ms frecuentes que se cometen al escribir cdigo.

    FIGURA 005 | Visual Studio proporciona herramientas para ayudar

    al programador en la tarea de desarrollar y depurar los programas.

    Herramientas de desarrollo

    026a037.qxp 06/07/2008 10:45 p.m. Pgina 27

  • 2828

    A continuacin, dedicaremos algunas pginas acomprender ms en detalle el funcionamientodel framework .NET, y as saber cul es,especficamente, la funcin que cumple.Primero, conozcamos un poco ms acerca desu evolucin en el tiempo.La primera versin del framework .NET vio laluz a principios del ao 2002, junto con la nuevaversin de Visual Studio, que en ese momentose llamaba Visual Studio .NET. Como entornode desarrollo, este Visual Studio fue el sucesordel popular Visual Studio 6, aunque con unanovedad muy atractiva: era el mismo IDE paratodos los lenguajes del paquete, a diferencia desu predecesor, que tena un IDE distinto (muydistinto) para cada uno. Esta primera versin yatena implementados los lenguajes C# y VisualBasic .NET, adems de una versin para .NETde C++ (conocida como Manager C++). Estaprimera versin ya contemplaba la creacin deaplicaciones de escritorio, aplicaciones Web yservicios Web. Aproximadamente un ao mstarde, en 2003, se liber la siguiente versin, la1.1. Su novedad ms interesante fue el CompactFramework, una versin reducida para usar endispositivos mviles que tuvieran Windows CEo Pocket PC. Con respecto a los lenguajes, seincorpor uno nuevo llamado J#, un derivadode Java para .NET.

    El presente

    A fines de 2005 apareci la versin 2.0 delframework .NET. Acompaando a varias no-vedades en los lenguajes, lleg la versin 2005de Visual Studio, que trajo muchos cambios,tanto en los aspectos estticos como en los

    funcionales. Adems, incluy un conjunto nu-meroso de controles y componentes para usaren aplicaciones tanto Web como Windows. Elframework .NET va por la versin 3.0, libera-da en 2007. Es una extensin de la versin

    2.0, que incluye cuatro nuevas tecnologas:Windows Presentation Foundation (para lainterfaz de usuario), Windows CommunicationFoundation (para la comunicacin entre apli-caciones), Windows Workflow Foundation(para disear e implementar workflows) yCardSpace (para identidades electrnicas).

    Versiones del frameworkPara que el compilador funcione como corresponde,necesitamos un framework.Veamos de qu se trata.

    Sin dudas, la principal novedad deVisual Studio es utilizar el mismo

    IDE para todos los lenguajes.

    FIGURA 006 | El framework 3.0 se presenta como un conjunto de

    componentes agregados sobre el framework 2.

    1. EL LENGUAJE .NET

    026a037.qxp 06/07/2008 10:45 p.m. Pgina 28

  • 2929

    ste es un concepto fundamental que debere-mos conocer antes de adentrarnos en el mundode la programacin. A qu nos referimos preci-samente cuando hablamos de arquitectura desoftware? La arquitectura define cmo se organi-zarn los distintos componentes del software, demanera que, juntos, puedan resolver el problema.Los objetivos de las distintas arquitecturas sonfavorecer la mayor cantidad de caractersticas delsoftware, desde el alto rendimiento hasta la facili-dad de mantenimiento, la extensibilidad (concunta facilidad pueden agregarse nuevos ele-mentos) y la escalabilidad (cunto puede crecer elsoftware en cantidad de usuarios y datos).Vea-mos algunos ejemplos de arquitectura.

    MONOLTICAEn esta arquitectura, el software se estructura co-mo un nico bloque. El resultado es un softwaredifcil de mantener y con baja escalabilidad.

    CLIENTE-SERVIDORHace referencia a la arquitectura fsica ms quea la lgica. El software se divide en dos com-ponentes, sin embargo, no queda claro qu par-tes se colocan en cada uno.

    EN CAPAS O NIVELESEn este caso, el software se divide en tres oms niveles, cada uno de los cuales se comu-nica slo con el que tiene debajo.

    Arquitectura de softwareLa arquitectura nos permite desarrollar aplicaciones mscomplejas, sin tener que empezar desde cero.

    FIGURA 007 | En este diagrama podemos ver los niveles

    o etapas de una arquitectura Cliente-Servidor.

    Arquitectura Cliente-Servidor

    Interfaz de usuario

    Capa de Interfaz de Usuario}Procesos de

    NegociosCapa de Reglas de Negocios}

    Acceso a Datos Capa de Acceso a Datos}

    Arquitectura de software

    026a037.qxp 06/07/2008 10:45 p.m. Pgina 29

  • El framework .NET es una plataforma dedesarrollo y ejecucin de aplicaciones, queprecisa apoyarse sobre un sistema operativoque le d el soporte necesario para llevar ade-lante las tareas propias, como el manejo dearchivos y de dispositivos.Concentrndonos en el framework propiamen-te dicho, podemos hacer una primera separa-cin en dos grandes partes. Por un lado, tene-mos la parte distribuible, es decir, el conjuntode elementos que deben ser distribuidos juntocon nuestra aplicacin para que sta pueda serejecutada en cualquier equipo. Las primeras

    versiones del framework deban instalarse enWindows para poder correr aplicaciones.NET, no obstante, desde Windows Server2003, los componentes necesarios ya vienenpreinstalados junto con el sistema operativo, locual es una ayuda muy importante.

    30

    Componentes del framework El framework .NET est compuesto por un gran nmero deelementos.Veremos cules son y qu funcin cumplen.

    Las ltimas versiones deWindows ya tienen el

    framework .NET preinstalado.

    FIGURA 008 | El framework .NET est formado por varios componentes,

    cada uno de los cuales es responsable de un conjunto bien definido de tareas.

    Componentes del framework .NET

    VB

    Common Language Specification

    ASP.NET

    ADO.NET y XML

    Base Class Library

    Windows Forms

    C++ C# J# ...

    Common Language Runtime

    Windows COM + Services

    Fram

    ewor

    k .N

    ETD

    istr

    ibui

    ble

    Fram

    ewor

    k .N

    ET S

    DK

    1. EL LENGUAJE .NET

    026a037.qxp 06/07/2008 10:45 p.m. Pgina 30

  • 3131

    GARBAGE COLLECTOREn .NET, el programador no necesita preocu-parse por pedir memoria para los datos ni por li-berarla cuando ya no la necesita. El CLR proveeservicios de administracin automtica de me-moria. El garbage collector (recolector de basu-ra) es el responsable de liberar la memoria cuan-do ya no queda espacio, al desechar aquellos ob-jetos que no se utilizan. Cada vez que la aplica-cin necesita ms memoria y ya se llen el espa-cio que le fue asignado, el CLR invoca al garbagecollector para liberar espacio y, as, poder seguirsatisfaciendo los requerimientos de la aplicacin.

    SECURITY ENGINEUna de las premisas de diseo ms importantesde .NET como tecnologa es la seguridad. Cuan-do ejecutamos aplicaciones .NET, podemos es-pecificar niveles de confianza, que dependen delorigen de la aplicacin o del lugar donde se en-cuentren los archivos al momento de la ejecu-cin. Tambin, al escribir la aplicacin, podemosexigir que se cumplan ciertos requisitos en loque respecta a la seguridad para ejecutar unaporcin de cdigo. El security engine, entonces,es el responsable de asegurar que se cumplan lascondiciones de seguridad necesarias.

    DEBUG ENGINEEste componente permite depurar las aplica-ciones y hacer el seguimiento del cdigo duran-te la ejecucin. Si bien una aplicacin puesta enproduccin puede no contener informacin dedebug, este componente es uno de los ms ti-les durante su desarrollo.

    TYPE CHECKEREl lenguaje MSIL fue diseado para asegurar laseguridad de tipos. Esto significa que el MSIL,por diseo, ya nos asegura que no podremosasignar por error un valor de otro tipo a una va-riable (por ejemplo, asignar un texto a una varia-ble de tipo numrico). Si bien muchos errores

    Common Language RuntimeLa parte distribuible del framework est forma-da por varios componentes. El ms importantees el CLR. Como vimos antes, el modelo deejecucin de .NET est dentro de los denomi-nados de mquina virtual, es decir que el c-digo no se compila a instrucciones nativas de lamquina fsica, sino que se genera en un len-guaje intermedio. Veamos en detalle los com-ponentes ms importantes del CLR, para en-tender mejor sus incumbencias.Tengamos en cuenta que para desarrollar apli-caciones, no es necesario saber al pie de la letratodos estos conceptos tericos. Aunque al igualque sucede en un automvil, ms all de sabermanejarlo, hay que saber por dnde cargarlecombustible y cules son los componentes ne-cesarios para su correcto funcionamiento (acei-te, refrigerante, frenos, etc.).

    CLASS LOADEREl class loader es el responsable de cargar enmemoria el cdigo necesario para ser ejecutadoy de analizar la metadata de cada ensambladocon el objetivo de proveer la informacin re-querida para la ejecucin.

    IL TO NATIVE COMPILERSComo ya vimos, al momento de ejecutar laaplicacin, el cdigo MSIL se traduce en cdi-go nativo de la mquina. Esta tarea es llevada acabo por el CLR a travs de los compiladoresde cdigo intermedio a cdigo nativo.

    El debug engine permite depurarlas aplicaciones y hacer el

    seguimiento durante la ejecucin.

    Componentes del framework

    026a037.qxp 06/07/2008 10:45 p.m. Pgina 31

  • por incompatibilidad de tipos pueden detectarsedurante la compilacin, otros deben dejarse parael momento de la ejecucin, proveyendo servi-cios que hagan la conversin automtica siempreque sea posible. El type checker es el componen-te del CLR que se asegura de que cada conver-sin automtica que deba realizarse durante laejecucin sea vlida y est permitida.

    EXCEPTION MANAGERUna excepcin es una situacin anormal queocurre durante la ejecucin de una aplicacin.Por ejemplo, si queremos escribir un archivo endisco pero ste se encuentra lleno, obtendremosuna excepcin. El exception manager (o admi-nistrador de excepciones) es el encargado de ges-tionar y provocar las excepciones. Al momentode provocar una excepcin, este componente re-colecta bastante informacin del contexto de laexcepcin (como el nombre de la mquina o lapila de ejecucin) para facilitar su manejo o, in-cluso, la depuracin de la aplicacin.

    THREAD SUPPORTEn .NET, es relativamente sencillo ejecutar cdi-go en hilos independientes; es decir, que se eje-cutan al mismo tiempo entre ellos y al mismotiempo que la aplicacin principal. Este compo-nente del CLR provee los servicios necesariospara iniciar los hilos independientes, como astambin para coordinarlos, detenerlos, etc.

    COM MARSHALERBrinda soporte para interactuar con componen-tes COM (Component Object Model). Con l, es po-sible intercambiar datos y comunicarse con apli-caciones que tengan soporte para COM.

    SOPORTE PARA LAS LIBRERAS DE CLASES BASEEste componente permite integrar la aplicacincon cualquier otra que soporte la librera de cla-ses base (BCL, del ingls Base Class Library).

    ASSEMBLIESLos assemblies o ensamblados son la unidadbsica de ejecucin y despliegue en las aplica-ciones .NET. Se diferencian de otras unidadesde cdigo (como los archivos dll ActiveX) enque son autodescriptivos; esto es que tienenen s mismos toda la informacin que el CLRnecesita para ejecutar su cdigo.El ensamblado se almacena en un archivocon extensin exe o dll, eso depende del tipo.En su interior, un ensamblado contiene cdi-go MSIL junto con una seccin denominadamanifiesto. ste puede verse como un enca-bezado que incluye informacin sobre el en-samblado, adems de recursos adicionales alcdigo (como mensajes de error o imgenes).La informacin referida al ensamblado se lla-ma metadata (o metadatos) y, como dijimos,es utilizada por el CLR para dar soporte a losservicios en tiempo de ejecucin. Entre la in-formacin que contiene la metadata, pode-mos mencionar la versin del assembly, elidioma por defecto, informacin de firma di-gital para proteger la identidad del cdigo(para asegurar que no fue modificado por al-guien no autorizado), los ensamblados quenecesita para funcionar, etc.En este punto, debemos tener en cuenta quees muy importante la informacin de la ver-sin, ya que en una misma computadora po-demos tener ms de una versin de un en-samblado, y el CLR es capaz de utilizar la quesea apropiada para cada aplicacin que lo ne-cesite. Una caracterstica muy interesante delos ensamblados es que no requieren ser regis-trados en ningn lugar para estar disponibles,

    3232

    Es importante tener en cuentaque los espacios de nombres

    son una divisin lgica, no fsica.

    1. EL LENGUAJE .NET

    026a037.qxp 06/07/2008 10:45 p.m. Pgina 32

  • 3333

    tal como suceda con los componentes COM.Esto, junto con la caracterstica de autodes-cripcin, facilita rotundamente la instalacin yla actualizacin de aplicaciones, ya que parainstalar una aplicacin basta con copiar enuna carpeta todos los ensamblados que laconforman.

    La biblioteca de clases del framework

    El framework .NET incluye un gran nmerode clases y de componentes que ayudan al pro-gramador en su tarea diaria. Estas clases inte-gran la denominada biblioteca de clases delframework, o FCL por sus siglas en ingls(.NET Framework Class Library). La FCL contie-ne los bloques bsicos para construir aplicacio-nes, y provee clases para realizar la mayora delas tareas comunes en cualquier programa, co-mo acceso a archivos, manejo de textos, lecturay navegacin de archivos XML, conexin a ba-ses de datos, etc. Dada la cantidad de clasesque componen la FCL, los creadores del fra-mework decidieron organizarlas en una estruc-tura jerrquica que permita encontrar fcilmen-te la que se est buscando. Esta estructura denombres se denomina namespace (espacio denombres). Los namespaces, adems, permitenevitar conflictos de nombres, ya que podemostener dos clases que se llamen de la misma ma-nera, pero en namespaces diferentes.

    Common Language Specification

    Una de las premisas de diseo de .NET fue serindependiente del lenguaje utilizado para de-sarrollar, y el hecho de que, desde un lenguaje, sepueda acceder fcilmente a libreras y clases es-critas en otros. Para eso se cre la especifica-cin de lenguaje comn, o CLS por sus siglasen ingls (Common Language Specification). La CLSdefine ciertas caractersticas que debe tener unlenguaje para ser compatible con el CLR. Si bienMicrosoft provee algunos lenguajes para .NET,la CLS hace posible que otras compaas creennuevos lenguajes que permitan escribir aplicacio-nes que corran sobre el framework .NET.

    FIGURA 009 | La GAC contiene una lista de los assemblies pblicos

    que estn en la computadora. Los ensamblados se colocan en la

    GAC para no tener que copiarlos a las carpetas de cada aplicacin.

    Assemblies pblicos y privadosUna aplicacin .NET depende de variosensamblados. Para encontrar aquellos que sonnecesarios, el CLR busca en la carpeta donde estel assembly principal y, si no lo encuentra, lo buscaen un repositorio global denominado GlobalAssembly Cache (GAC), que es una especie dedirectorio de ensamblados compartidos. Unensamblado que se encuentra en la GAC puedeser utilizado por ms de una aplicacin, sinnecesidad de copiarlo a su carpeta. Los assembliesque estn en la GAC se denominan assembliespblicos, en tanto que los que estn en la mismacarpeta se llaman privados.

    Componentes del framework

    026a037.qxp 06/07/2008 10:46 p.m. Pgina 33

  • 3434

    Como vimos antes, las aplicaciones .NETson compiladas a un lenguaje intermedio, conel objetivo de independizarlas de la plataformafinal donde sern ejecutadas. Esto se denominaCLI (Common Language Infrastructure, o infraes-tructura de lenguaje comn). No debemos con-fundir el CLI con el CLR: el CLI es una espe-cificacin, no una implementacin; y elCLR, si bien cumple con esta especificacin,tiene aspectos que van ms all de ella. Hayque tener presente que el CLI es independientede .NET; es una especificacin que puede usar-se para desarrollar otras plataformas y tecnolo-gas. El .NET de Microsoft, de hecho, es un

    Funcionamiento del CLREn esta etapa veremos cmo .NET realiza la conversin del cdigofuente a un lenguaje intermedio para que funcione en el sistema.

    superconjunto del CLI, ya que est implemen-tado de manera de cumplir con todas las espe-cificaciones del estndar.

    El modelo de ejecucinEl modelo de desarrollo y ejecucin de .NET esde los denominados en dos etapas o de com-pilacin diferida. El desarrollo comienza con laescritura del cdigo fuente de la aplicacin en al-guno de los lenguajes con soporte para el frame-work .NET. Una vez escrito el cdigo fuente, de-be ser compilado utilizando el compilador apro-piado para el lenguaje en cuestin.

    FIGURA 010 | Microsoft .NET es un superconjunto del CLI que implementa

    las especificaciones del estndar, y agrega un conjunto de libreras y herramientas muy tiles.

    Especificaciones y libreras en .NET

    Lenguajes de Alto Nivel

    .NET Framework

    Common Language Specification

    Common Type System

    Base Class Library

    Common Language Runtime

    WPF,WF,WCF

    WinForms

    ASP.NET

    ADO.NET

    Herramientas de Depuracin

    Common Language Infrastructure

    1. EL LENGUAJE .NET

    026a037.qxp 06/07/2008 10:46 p.m. Pgina 34

  • 3535

    El resultado de la compilacin es uno o ms en-samblados, de los cuales uno debe tener exten-sin exe (a menos que sea una aplicacin Web)y ser el punto de entrada para la ejecucin de laaplicacin. Como ya hemos explicado, cada assembly contiene cdigo intermedio (MSIL)adems de los recursos y metadatos. Al mo-mento de ejecutar la aplicacin, el sistema ope-rativo detecta que se trata de un ensamblado.NET y deriva la ejecucin al CLR. Entonces,ste toma el cdigo MSIL y lo traduce a cdigonativo de la mquina para poder ejecutarlo, yaque las computadoras actuales no son capacesde reconocer instrucciones MSIL.La compilacin a cdigo mquina no se efectacompleta al momento de ejecutar, sino que serealiza a medida que se la necesita. Si una por-cin de cdigo nunca se ejecuta, nunca sercompilada a cdigo nativo. Para lograr la com-pilacin por demanda, el CLR lee cada clase y,antes de comenzar la ejecucin, agrega porcio-nes de cdigo a cada mtodo, de manera talque cuando un mtodo sea ejecutado, se puedahacer la invocacin al compilador JIT (Just InTime). ste traduce las instrucciones del mto-do a cdigo nativo, y reemplaza el cdigo queagreg el CLR por la direccin en memoria delcdigo nativo que acaba de generar. De estemodo, en las subsecuentes llamadas al mtodo,se ejecutar directamente cdigo nativo, y elJIT no intervendr.El modelo de ejecucin de .NET prev contro-les de seguridad del cdigo ejecutado, para evi-tar cdigo malintencionado. Para lograrlo, antesde ordenar la compilacin a cdigo nativo, elCLR analiza la metadata del assembly y le apli-ca las polticas de seguridad que fueron confi-guradas en la computadora. Si el assembly violaalguna de ellas (por ejemplo, est firmado poruna empresa en la que no se confa), se abortala ejecucin de la aplicacin.Adems de los controles antes de la compila-cin a cdigo nativo, el CLR verifica el cdigo

    Caractersticas del CLIHubo muchas premisas que se tuvieron encuenta a la hora de crear la especificacin deCLI. Segn sta, la arquitectura de CLI, entreotras cosas, debe tener las siguientescaractersticas: Permitir la escritura de componentes

    reutilizables e interoperables independientesde la plataforma y del lenguaje deprogramacin utilizado.

    Para facilitar la operacin entre lenguajes, sedebe proveer un sistema de tipos nico ycompleto, comn a todos ellos.

    Cada unidad de cdigo o componente debeser totalmente autodescriptiva, para facilitarsu independencia y su portabilidad.

    Proveer un entorno de ejecucin quepermita supervisar el cdigo para controlary hacer cumplir polticas de seguridad.

    Disear toda la infraestructura basndoseen metadatos, de manera tal que toda laarquitectura pueda acomodarse fcilmente alos cambios e incorporaciones y, as, sefacilite la extensibilidad del modelo.

    Realizar tareas de bajo nivel, como carga de tipos en memoria o compilacin acdigo nativo slo cuando sea necesario(Just In Time).

    Proveer un conjunto de funcionalidadescomunes que los programadores puedanutilizar para desarrollar las aplicaciones. Paraestar acorde con el CLI, estasfuncionalidades deben estar construidas detal manera que su uso no deje unaaplicacin atada a una determinadaplataforma (por ejemplo, .NET brindamtodos para conocer el carcter de fin delnea o el carcter usado para separardirectorios en el disco, que varan segn elsistema operativo).

    Funcionamiento del CLR

    026a037.qxp 06/07/2008 10:46 p.m. Pgina 35

  • tambin durante la ejecucin e interviene endistintos aspectos, entre los que podemosmencionar:

    Administracin automtica de memoriaDurante la ejecucin, el CLR administra cadapedido de espacio de memoria y se encarga deliberar la memoria que ya no se est utilizando.

    Verificacin de tipos de datosSi bien gran parte de la consistencia de tiposde datos puede realizarse durante la compila-cin, hay caractersticas de .NET que hacennecesario relegar otras verificaciones. Cada vezque se hace una conversin de tipos en tiem-po de ejecucin, el CLR controla si es vlida.

    3636

    Hay recursos que el CLR no administra porque son

    del sistema operativo.

    Manejo y coordinacin de hilosCiertas aplicaciones necesitan hacer procesa-mientos en segundo plano para poder conti-nuar atendiendo al usuario o a otros siste-mas de manera eficiente. El CLR proporcio-na mecanismos para facilitar la ejecucin enhilos independientes, y se encarga tanto de lacoordinacin entre ellos como de la finaliza-cin y del control de cada hilo en particular.

    FIGURA 011 | En .NET, las aplicaciones se compilan a un lenguaje intermedio

    para, luego, compilarlas al cdigo nativo de la plataforma donde se ejecutan.

    Generacin de cdigo MSIL

    Common Language Infrastructure

    MSIL

    Cdigo de Mquina

    MSIL

    C#

    Compilador Compilador Compilador

    VB.NET J#

    1. EL LENGUAJE .NET

    026a037.qxp 06/07/2008 10:46 p.m. Pgina 36

  • 3737

    Por un lado, al estar aisladas, si una aplicacinfalla, no afecta a las dems. Por el otro, unaaplicacin puede ser detenida sin necesidad defrenar todo el proceso y las dems aplicaciones.

    El Common Type SystemEl sistema de tipos comn (CTS) define todoslos tipos bsicos del framework .NET. Su obje-tivo es especificar las reglas que rigen a cada ti-po de datos en cualquier aplicacin .NET.Si bien cada lenguaje puede tener su propia sin-taxis para definir los tipos de datos, el cdigoMSIL resultante debe cumplir las reglas delCTS. Esto es fundamental para permitir la in-teroperabilidad de lenguajes exigida por la CLI.El CTS define dos grandes familias de tipos dedatos: los tipos por valor y los tipos por refe-rencia. Los tipos por valor heredan de un tipobsico llamado ValueType y conforman los lla-mados tipos bsicos o tipos primitivos. Las va-riables definidas con tipos por valor se almace-nan directamente en la pila y, por lo tanto, sonliberadas cuando se cierra el bloque de cdigoque las defini. Por otro lado, los tipos por re-ferencia heredan de una clase base llamada Object y se almacenan en el heap. La memoriaocupada por variables de tipos por referenciaes liberada por el garbage collector.

    Application domains

    Tanto los sistemas operativos como los entor-nos de ejecucin suelen proveer algn mecanis-mo para el aislamiento de las aplicaciones, ne-cesario para asegurar que el cdigo que correen una aplicacin no afecte al de otras. Los application domains, o fronteras de aplicacin,brindan una unidad de procesamiento seguraque el CLR puede usar para generar aislamien-to entre aplicaciones.Los application domains son creados por unproceso denominado CLR Host, que se ejecutaantes que el CLR y cuya funcin es cargar elCLR en un proceso del sistema operativo, crearlos application domains necesarios dentro deese proceso y ejecutar las aplicaciones dentrode los application domains. Esta forma de tra-bajo permite ejecutar varios application domains en un mismo proceso, pero con el ni-vel de aislamiento que existe entre procesos se-parados, sin incurrir en el costo que significacambiar la ejecucin de uno a otro o de hacerllamadas entre ellos. Adems, la capacidad decorrer varias aplicaciones dentro de un mismoproceso incrementa considerablemente la esca-labilidad en los servidores.El aislamiento deaplicaciones provisto por los application domains tiene algunos beneficios interesantes.

    FIGURA 012 | Cada lenguaje le da distintos nombres a cada tipo de dato, pero al momento

    de compilar, se traducen en los mismos tipos de datos, segn lo especifica el CTS.

    Interpretacin del CTS

    intC# CompiladorC#

    Integer

    System.Int32

    VB.NET CompiladorVB.NET

    MSIL

    Funcionamiento del CLR

    026a037.qxp 06/07/2008 10:46 p.m. Pgina 37

  • Las clases estn ordenadas de manera jerrquicaen espacios de nombres o namespaces, para queestn mejor organizadas y que resulte sencilloencontrar la que se busca. A continuacin, vere-mos algunos de los namespaces ms importan-tes, junto con una descripcin de su contenido.

    SystemEl espacio de nombres System es la raz de to-do el rbol de nombres. Toda clase provistapor el framework est en el namespace Systemo en alguna de las ramas que parten de l. Ade-ms, en l se encuentran los tipos por valor b-sicos (como Int32, Char, String, Boolean, etc.).

    System.CollectionsContiene clases que definen diversas coleccionesde objetos, como listas, tablas Hash, pilas, colas ylistas ordenadas. Tambin provee interfaces queestablecen las bases para la creacin de nuevasclases de tipo coleccin y listas de objetos sobrelas que se puede iterar elemento a elemento.Desde la versin 2.0 del framework, hay una ra-ma muy interesante de este namespace llamadaSystem.Collections.Generic, que contiene clasesque representan colecciones fuertemente tipadas.

    System.ConfigurationProporciona clases e interfaces para acceder ymanipular por cdigo los archivos de configu-racin de las aplicaciones (archivos .config).

    System.DiagnosticsProporciona clases que posibilitan interactuarcon procesos del sistema, registros de eventos

    y contadores de rendimiento. Este espacio denombres tambin provee clases que permitendepurar la aplicacin y realizar un seguimientode la ejecucin del cdigo. Por ejemplo, conclases de este namespace, podemos conocer lacarga de trabajo de la CPU, o agregar cdigode depuracin con las clases Debug y Trace.

    System.GlobalizationContiene clases tiles para escribir aplicacionescon soporte para ms de una cultura e idioma,lo que se conoce como internacionalizacin oglobalizacin. Las clases que incluye permitenmanipular formatos de fecha, de nmero y demonedas, como as tambin manejar los crite-rios para ordenar cadenas de textos con el finde adecuar la lgica de la aplicacin a la culturadel pas donde se la est usando.

    System.IOProporciona clases para trabajar con archivosy secuencias de datos. Mediante las clases deeste namespace, no slo podemos leer y es-cribir archivos, sino que tambin podemosmanipular directorios (por ejemplo, obtenerla lista de archivos). Contiene, adems, unconjunto de clases que permite abstraer elmedio fsico con el que se trabaja, para lograrmayor flexibilidad (por ejemplo, podemosmanipular una secuencia de datos sin impor-tar si se trata de un archivo o de los datos re-cibidos por la red).

    System.NetProporciona clases para acceder a recursos de re-des, sobre todo, de Internet. Las clases estn di-seadas de tal manera que logran independizar al

    Libreras de clases baseComo vimos anteriormente, el framework .NET brinda unconjunto de clases que podemos utilizar.Veamos cules son.

    3838

    1. EL LENGUAJE .NET

    038a047.qxp 06/07/2008 10:52 p.m. Pgina 38

  • 3939

    programador de los protocolos subyacentes (porejemplo, se pueden hacer invocaciones HTTPsin conocer los detalles del protocolo).

    System.RelectionEste interesante espacio de nombres contieneclases que permiten recuperar informacin so-bre los ensamblados, mdulos, parmetros ycualquier otro tipo de dato de cdigo adminis-trado, leyendo los metadatos de los ensambla-dos. Tambin provee clases para manipular ycargar tipos de datos en tiempo de ejecucin yhacer invocaciones a mtodos. La ramaSystem.Reflection.Emit permite generar cdigoen tiempo de ejecucin.

    System.ResourcesContiene clases e interfaces que permiten mani-pular recursos asociados a la referencia culturalde la aplicacin, tales como cadenas de texto oimgenes almacenadas dentro de un ensamblado.

    System.SecurityContiene clases relacionadas al subsistema deseguridad del CLR, que permiten conocer in-formacin del contexto de seguridad, comoas tambin especificar requerimientos de se-guridad para la ejecucin del cdigo.

    System.ServiceProcessProporciona clases que permiten a los desarrolla-dores crear e instalar servicios. Los servicios sonaplicaciones de larga duracin que corren en se-gundo plano y sin interfaz de usuario.

    System.TextIncluye clases para la manipulacin de cade-nas de texto en distintas codificaciones

    El espacio de nombres System es la raz de todo

    el rbol de nombres.

    FIGURA 013 | En el sitio

    de MSDN hay una

    descripcin detallada

    de cada uno de los

    espacios de nombres

    del framework .NET.

    Libreras de clases base

    038a047.qxp 06/07/2008 10:52 p.m. Pgina 39

  • (ASCII, Unicode, UTF-7 y UTF-8). Proveetambin clases para convertir bloques debytes en cadenas de texto, y viceversa.

    System.ThreadingEste espacio de nombres contiene las clasesnecesarias para crear aplicaciones con soportemultihilo, como as tambin para su manipula-cin y coordinacin. Incluye tambin una claseque permite ejecutar cdigo en intervalos detiempo determinados (la clase Timer).

    System.Runtime.InteropServicesProporciona clases para desarrollar aplicacionesque interacten con componentes COM y c-digo no administrado.

    System.Runtime.RemotingContiene clases e interfaces que permiten laconstruccin de aplicaciones distribuidas. Conellas se pueden crear objetos que se comuni-quen con otros objetos que no estn en el mis-mo application domain; incluso, que no estnen la misma computadora.

    System.Runtime.SerializationContiene clases para serializar y deserializar obje-tos. La serializacin es el proceso mediante elcual un objeto o un conjunto de objetos relacio-nados se convierten en una secuencia lineal debytes para su almacenamiento o transmisin aotra ubicacin. Por su parte, la deserializacinimplica recoger la informacin almacenada y vol-ver a crear objetos a partir de ella. La serializa-cin es muy utilizada en ambientes distribuidos,ya que para transmitir un objeto hacia otro application domain, es necesario serializarlo.

    ADO.NETADO.NET es la evolucin de la tecnologaADO (ActiveX Data Objects), tan popular en la

    poca de Visual Basic 6. Las clases deADO.NET brindan todo lo necesario para ac-ceder a datos desde las aplicaciones .NET. Elmodelo de acceso a datos de ADO.NET per-mite manipular datos independientemente de lafuente original y de manera desconectada. Estosignifica que podemos trabajar con los datossin necesidad de estar conectados a la base dedatos, lo cual es muy til en ambientes distri-buidos y desconectados (como el caso de servi-cios Web). Adems, ADO.NET fue diseadode manera tal de independizar las formas deacceso del tipo de fuente de datos. Por ejem-plo, una vez que aprendemos a trabajar conADO.NET contra un SQL Server, podremosempezar otra base de datos, como Oracle, sinningn problema. Cada conjunto de clases paraacceder a un motor de base de datos en parti-cular se denomina proveedor, y por eso se diceque ADO.NET es un modelo de acceso a da-tos basado en proveedores. El espacio de nom-bres System.Data conforma la raz de todos losespacios de nombres de las clases deADO.NET. Veamos qu contiene cada uno:

    System.DataEn este espacio de nombres se encuentran lasclases fundamentales de la arquitecturaADO.NET. Sin duda, la clase ms importante esDataSet, que puede contener informacin de di-ferentes orgenes, mediante una coleccin de ob-jetos DataTable. Cada DataTable contiene datosde un nico origen, y est formado por una

    4040

    De memoriaObviamente, no ser necesario conocer cada unade estas libreras, sus caractersticas y funciones.Podemos tener este material como una gua deconsulta permanente, hasta que nos vayamos fami-liarizando con cada uno de los componentes.

    1. EL LENGUAJE .NET

    038a047.qxp 06/07/2008 10:53 p.m. Pgina 40

  • 4141

    coleccin de objetos DataColumn y una colec-cin de objetos Constrain (UniqueConstrain yForeignKeyConstrain), que permiten definir unesquema en memoria tal como si fuera una basede datos. El DataSet tambin puede tener unacoleccin de objetos DataRelation para crear re-laciones entre columnas de distintas tablas.

    System.Data.CommonEste espacio de nombres contiene clases, en sumayora, abstractas, compartidas y heredadaspor todos los proveedores de acceso a datos. Laclase que ms se destaca es DataAdapter, que in-cluye un conjunto de comandos SQL para acce-der a la base de datos, tanto para recuperar co-mo para actualizar datos. Cada proveedor debeluego heredar de esta clase para implementar lasparticularidades del motor de base de datos.

    System.Data.SqlClientEste espacio de nombres contiene las clasesque componen el proveedor de acceso a da-tos utilizado por ADO.NET (el cual veremosms adelante con mayor detalle) para SQLServer de Microsoft.

    System.Data.OracleClientContiene las clases que implementan el provee-dor de acceso a datos de ADO.NET para tra-bajar con bases de datos Oracle. As como elproveedor para SQL Server implementa unSqlDataAdapter, ste implementa el Oracle-Adapter, tambin lo hereda de DataAdapter.

    System.Data.OleDbBrinda las clases necesarias para acceder a datosmediante el proveedor OLE DB, con el cual esposible conectarse a cualquier fuente de datos.

    System.Data.OdbcEste espacio de nombres otorga un proveedorde acceso a datos que permite trabajar prctica-mente con fuentes de datos que implementen undriver ODBC (Open DataBase Connection).

    System.Data.SqlTypesProporciona clases para los tipos de datos na-tivos de SQL Server. Estas clases ofrecen unaalternativa ms rpida y segura a otros tipos dedatos. Las clases de este espacio de nombressirven para evitar los errores de conversin

    FIGURA 014 | El modelo de acceso a datos de ADO.NET proporciona una forma desconectada

    de trabajar, lo cual permite manipular la informacin sin estar conectado a la base de datos.

    Modelo de acceso a datos ADO.NET

    Aplicacin

    Sin conexin

    1

    2

    3

    Datos

    1. La aplicacin se conecta a labase y pide un conjunto dedatos.

    2. La base de datos devuelvelos datos y la aplicacin sedesconecta.

    3. Despus de manipular losdatos, la aplicacin se vuelvea conectar a la base para vol-car las actualizaciones.

    Aplicacin

    Libreras de clases base

    038a047.qxp 06/07/2008 10:53 p.m. Pgina 41

  • de tipos que pueden ocasionar una prdidade precisin al recuperar informacin de labase de datos.

    System.XmlEl framework .NET tiene un extenso soportepara trabajar con documentos XML comofuente de informacin. Mediante las clases delespacio de nombres System.Xml y sus deriva-dos, es posible leer documentos XML, guar-darlos, hacer transformaciones complejas, na-vegarlos de manera orientada a objetos e, in-cluso, acceder a partes especficas del docu-mento a travs de consultas XPath.

    Windows FormsLas aplicaciones .NET que corren en ventanas tradicionales de Windows se deno-minan aplicaciones WinForms, y el frame-work .NET brinda un gran soporte para sucreacin. El namespace ms importante eneste aspecto es System.Windows.Forms, quecontiene clases para facilitar la creacin de

    ventanas y de controles; en resumen, incluyetodo lo necesario para la creacin de interfa-ces de usuario basadas en ventanas.

    System.Windows.FormsComo decamos, este espacio de nombrescontiene las clases bsicas para la creacin deaplicaciones basadas en ventanas. Sin dudas,la clase ms importante de este grupo esForm, que representa una ventana. Otra cla-se muy importante es Control, de la que he-redan todos los controles visuales que pode-mos colocar en un Form (botones, listas deseleccin, casillas de verificacin, etc.). sta,adems, sienta las bases para crear controlespropios. Tambin hay clases que permitenimprimir textos y documentos, y manipularlas propiedades de impresin (mrgenes uorientacin, por ejemplo).Adems, este namespace contiene clases ti-les para la comunicacin con el usuario a tra-vs de cuadros de dilogo. Por ejemplo, laclase OpenFileDialog permite mostrar unaventana para que el usuario seleccione el ar-chivo que desea abrir.

    4242

    FIGURA 015 |

    El namespace

    System.Windows.Forms

    contiene las clases

    necesarias para escribir

    aplicaciones basadas

    en ventanas.

    1. EL LENGUAJE .NET

    038a047.qxp 06/07/2008 10:53 p.m. Pgina 42

  • 4343

    te utilizar controles de usuario que, en cierta me-dida, abstraen al programador del cdigoHTML, que se genera automticamente cuandola pgina se ejecuta en el servidor.

    System.Web.UIEste espacio de nombres proporciona clases einterfaces que permiten crear los controles y laspginas que aparecern en las aplicaciones Webcomo elementos de interfaz de usuario. Incluyela clase Control, que proporciona todos loscontroles de servidor ya sean de servidorHTML, de servidor Web y de usuario, con unconjunto comn de funciones. Adems, se uti-liza como clase base para la creacin de nuevoscontroles de ASP.NET. Incluye tambin la cla-se Page, que representa la unidad bsica deconstruccin de pginas Web dinmicas.

    System.Web.ServicesASP.NET no slo permite crear aplicacionesinteractivas basadas en un navegador, sino quetambin da la posibilidad de crear serviciosWeb. Bsicamente, un servicio Web es un con-junto de funcionalidades (sin interfaz de usua-rio) a las que se puede acceder mediante losprotocolos normalmente utilizados para ingre-sar en la Web (HTTP y XML). Los serviciosWeb permiten conectar aplicaciones distribui-das de manera segura y sencilla, ya que al usarprotocolos estndar, pueden colocarse detrsde un firewall que slo permita acceso por elpuerto 80 (el usado por los servidores Web).Los servicios Web no son una tecnologa propie-taria de .NET ni de Microsoft, sino que son unestndar aprobado y regulado por organismos in-ternacionales. Esto es fundamental, porque gra-cias a esta caracterstica, representan una formade integracin de aplicaciones construidas conlas ms diversas herramientas. El espacio denombres System.Web.Services contiene las clasesbase que se pueden utilizar para crear serviciosWeb. La ms importante es WebService.

    System.DrawingEste namespace contiene clases que permitenacceder desde cdigo manejado a las APIs delsistema grfico de Windows (GDI+). Mediantelas clases de System.Drawing podemos dibujarfiguras y textos sobre las ventanas, pintar condistintas tramas y colores degradados, como astambin manipular imgenes.

    ASP.NETAdems de las aplicaciones basadas en ventanas,.NET permite construir otras basadas en explo-radores de Internet, denominadas aplicacionesWeb. El subconjunto de componentes del frame-work destinado a hacerlo se denomina ASP.NETy representa una evolucin con respecto a su an-tecesor ASP (Active Server Pages). MedianteADO.NET, es posible crear aplicaciones y sitiosWeb dinmicos (en el sentido de que el conteni-do puede cambiar en respuesta a las necesidadesy acciones del usuario).Un detalle interesante es que ASP.NET proveeun modelo de desarrollo similar al modelo decreacin de aplicaciones Windows, ya que brindaun conjunto de clases y controles tendientes a es-cribir las aplicaciones Web de una manera senci-lla y muy parecida a como se escriben las aplica-ciones para ventanas, aunque su funcionamientoen tiempo de ejecucin sea radicalmente diferen-te. Cuando desarrollamos una aplicacin Web, elobjetivo es siempre producir cdigo HTML paraque sea interpretado por el navegador del usua-rio. Sin embargo, el modelo de ASP.NET permi-

    Los servicios Web no son unatecnologa propietaria de

    Microsoft, sino un estndaraprobado internacionalmente.

    Libreras de clases base

    038a047.qxp 06/07/2008 10:53 p.m. Pgina 43

  • A lo largo de esta seccin, estudiaremos la sin-taxis de Visual Basic .NET, desde los cons-tructores fundamentales para cualquier progra-ma, hasta la creacin de clases para programasorientados a objetos.

    Sintaxis bsica

    Siempre que escribimos cdigo, nos encontra-mos ante la necesidad de dejar algn comenta-rio explicando alguna porcin o cualquier otracosa que debamos documentar. El compiladorno debe tener en cuenta estos textos, que sedenominan comentarios. En Visual Basic.NET, los comentarios se escriben comenzan-do con una comilla simple (), y se los puedecolocar tanto en una lnea independiente comoal final de una lnea de cdigo.Veamos algunos ejemplos:

    ' Este es un comentario de una lnea

    Console.WriteLine(Hola Mundo) 'Este es un

    comentario al final

    En la primera lnea del ejemplo, tenemos uncomentario que ocupa toda la lnea, mientrasque en la segunda, se ve una sentencia normal(que se ejecutar) seguida de un comentario.Hay que tener en cuenta que, luego de un co-mentario, en la misma lnea no se puede escri-bir una sentencia ejecutable.

    OperadoresLos operadores son elementos que nos permi-ten combinar variables, constantes o instruc-ciones para obtener un valor como resultado;es decir, nos permiten construir y evaluar ex-

    presiones. Una expresin est compuesta poroperadores y operandos. Por ejemplo, en2+3, 2 y 3 son los operandos, y + es eloperador. Visual Basic .NET provee un grannmero de operadores para construir expre-siones de distintos tipos. En la Tabla 4 vere-mos los ms importantes, y a lo largo del cur-so, iremos aprendiendo otros.

    VariablesEn Visual Basic .NET, las variables se declaranusando la palabra reservada Dim.Veamos un ejemplo:

    Dim variable1 As String

    En este caso, estamos declarando una varia-ble llamada variable1 de tipo String.Tanto la palabra clave Dim como la palabraclave As son obligatorias. sta es la mnimaexpresin para declarar una variable. Sin em-bargo, si queremos declarar ms de una va-riable del mismo tipo en una sola lnea, po-demos hacerlo separando los nombres concoma, antes de la palabra clave As. Del mis-mo modo, tambin podemos declarar varia-bles de otros tipos de datos usando la mismalnea de sentencia Dim, colocando el nombrey el tipo separados por coma, luego de cadatipo de dato.

    Visual Basic .NETEste lenguaje contina con la tradicin de su predecesor encuanto a su facilidad de uso. Veamos cmo utilizarlo.

    VB.NET no diferencia entremaysculas y minsculas; esdecir, no es case sensitive.

    4444

    1. EL LENGUAJE .NET

    038a047.qxp 06/07/2008 10:53 p.m. Pgina 44

  • 4545

    Veamos ambos casos en un ejemplo:

    ' Declaro dos variables del mismo tipo en

    la misma lnea

    Dim variable1, Variable2 As String

    ' Declaro dos variables de distinto tipo en

    la misma lnea

    Dim variable1 As String, Variable2 as Integer

    Para asignar valor a una variable, se utiliza eloperador de asignacin, representado por elsigno =. La sintaxis es la siguiente:

    Variable1 = 5

    En este caso, la variable con nombre Variable1queda asignada con el valor 5.

    Sentencia IfLa sentencia If representa la estructura de selec-cin ms simple en Visual Basic .NET, y permiteejecutar una porcin de cdigo slo si se cumpleuna determinada condicin. Se escribe comen-zando la lnea con la palabra clave If, seguida de

    la condicin por evaluar y, luego, la palabra claveThen. Despus debe ir la instruccin o grupo deinstrucciones que se van a ejecutar si la condi-cin es verdadera. Opcionalmente, podemos uti-lizar la palabra clave Else luego del bloque decdigo, para especificar una instruccin que seejecutar si la condicin es falsa.

    If a > 0 Then

    c = b / a

    a = 1

    Else

    c = 0

    End If

    En este caso, si el valor de la variable a es mayorque 0, a la variable c se le asignar el resultado dedividir el valor de la variable b por el de la varia-ble a; en caso contrario, se le asignar el valor 0.Si necesitamos ejecutar ms de una instruccinen cualquiera de las dos partes del If, deberemoscomenzar una nueva lnea luego de la palabraThen y, tambin, luego de Else en caso de queexista. Adems, en este caso, debemos cerrar laestructura con las palabras End If .

    OPERADOR NOMBRE DESCRIPCIN

    + Suma Suma dos nmeros.

    - Resta / Negacin Como operador binario, resta dos nmeros. Como operador unario, representa la negacin aritmtica.

    * Multiplicacin Multiplica dos nmeros.

    / Divisin real Divide dos nmeros reales y devuelve un nmero real (por ejemplo, 10/4 es 2,5).

    \ Divisin entera Divide dos nmeros enteros y devuelve un entero (por ejemplo, 10\4 es 2).

    Mod Resto Devuelve el resto de una divisin entera (por ejemplo, 10 Mod 4 es 2).

    ^ Potenciacin Devuelve un nmero elevado a otro como potencia (por ejemplo, 2^3 es 8).

    & Concatenacin Concatena dos cadenas de texto (Hola & Mundo devuelve Hola Mundo).

    > Mayor Devuelve verdadero si el valor de la izquierda es mayor que el de la derecha.

    < Menor Devuelve verdadero si el valor de la izquierda es menor que el de la derecha.

    Distinto Devuelve verdadero si los dos operandos son distintos.

    = Igualdad Devuelve verdadero si los dos operandos son iguales.

    Tabla 4 | Operadores utilizados por Visual Basic .NET

    Visual Basic .NET

    038a047.qxp 06/07/2008 10:53 p.m. Pgina 45

  • Observemos que en la parte de Else, si bien te-nemos una sola instruccin, no podemos escri-birla en la misma lnea que la palabra Else, yaque con Then iniciamos un bloque If comple-jo. Si no tenemos un bloque Else, igualmentedebemos cerrar con End If.

    Sentencia Select CaseLa sentencia Select Case puede verse como uncaso generalizado de If, aunque en vez de eje-cutar una porcin de cdigo dependiendo deuna condicin lgica, divide la ejecucin en ungrupo de casos disjuntos (es decir que slo seejecutar uno de ellos).Su sintaxis puede resumirse de esta manera:

    Select Case Expresin

    Case Caso1

    ' cdigo si se cumple el Caso1

    ' .....

    Case Caso2, Caso3, Caso4

    ' cdigo si se cumple el Caso2 el Caso3 o

    el Caso4

    ' .....

    Case Else

    ' cdigo si no se cumple ningn caso

    ' .....

    En