RareGaZz19:(rgz_06):27/03/2002 << Back To RareGaZz19


: :.:..:...:....:.....:......:.......:........:.........:..........: : : :::: : : : : RGZ_06 Hasta donde quieres llegar hoy? .NET Colaborador : :.:..:...:....:.....:......:.......:........:.........:..........: : : :::: Hola a todos los lectores de RareGaZz... esta es la 1ra vez que escribo en la revista como colaborador. Aunque esta revista es mas una revista de seguridad, en esta oportunidad les hablare un poco sobre desarrollo, especificamente de lo que se trata la plataforma .NET de Microsoft. Este es un articulo especialmente dirigido a los developers con nuevas tecnologias Microsoft. Aca vamos: Porque .NET? La Vision de Microsoft Interoperabilidad con XML Que es .NET Framework Componentes basicos de NET NET Classes Web Services Common Language Runtime (CLR) Assemblies Arquitectura del .NET Framework Grafico de la arquiectura Web Services y B2B Como se intrega con .NET Biztalk Server Cambios en el Lenguaje Entorno de VStudio.NET De VB6 a VB.NET Despedida Porque .NET? ============ La vision de MS --------------- El porque Microsoft realizo un cambio radical en sus tecnologias de desarrollo, y en general en su vision acerca de ver el software es debido a que internet es cada vez mas comun...por esto Microsoft se debio "actualizar" en lo que se refiere a sus herramientas de desarrollo. "Informacion en cualquier momento, en cualquier lugar desde cualquier dispositivo".. esa es la vision que Microsoft quiere alcanzar con su nueva tendencia hacia el software y con la plataforma .NET. Interoperabilidad con XML ------------------------- Los estandares usados para el intercambio de datos, sobre todo en internet y las transmisiones ha sido una de las caracteristicas mas importantes ahora disponibles en .NET. Digamos que ahora las nuevas aplicaciones de escritorio o web podran comunicarse con aplicaciones basadas em Linux, Unix, Mac, etc. Porque? pues porque ahora la base de las tecnologias de desarrollo de Microsoft (.NET framework) usan estos estandares de internet, ya no mas se usa COM, COM+, DCOM, entre otras tecnologias propietarias. Como ejemplo, digamos que una aplicacion web o de escritorio (bajo windows) de una tienda desea pasar una orden de pedido al sistema del distribuidor (bajo Linux)...pues si por ejemplo pasara esta informacion mediante un objeto recordset, seria imposible la comunicacion (o muy dificil). Esto se debe a que los objetos recordset al ser transmitido lo hace como datos binarios bajo un formato que solo Microsoft sabe, osea un formato o tecnologia Propietaria. Ahora, si usaramos el .NET Framework, se usaria un objeto DataSet, recordset. Este dataset es un tipo de dato propio del Framework, creado para funcionar con .NET. Este tipo de datos esta basado en estandares (XML). Esto permite que al ser transmitido de aplicacion en aplicacion, lo que haga sea tramitir XML... y como todos sabemos XML es aceptado por todas las plataformas. Esto es lo genial de .NET...! multiplataforma, multilenguaje, multithreading, entre otras. Que es .NET Framework ===================== Componentes basicos de .NET --------------------------- .NET se basa en 3 cosas: el CLR, .NET classes y los Web Services (estos ultimos son el futuro!!) .NET classes ------------ el .NET framework ofrece una cantidad increible de librerias con las cuales se puede comenzar a trabajar comodamente sin dificultades. Estas librerias van desde poner un caja de dialogo de saludo al usuario hasta acceder a los configuraciones de red y conexiones del servidor. Ahora las librerias son comunes para todos los lenguajes de programacion... Por ejemplo antes, con Visual Studio 6, si se programaba en Visual Basic, se debia usar los controles que alli se ofrecian, si se queria hacer algo mas avanzado como trabajar con puertos de comuncaciones, de red etc, se debia usar controles ActiveX personalizados, etc. Si se programaba en Visual C++, se debia usar el MFC (las clases del fundation Class para VC++). Si se programa en J++, igualmente se debia programar como las clases disponible que Microsoft brindaba para este lenguaje. En conclusion se debia de aprender a usar un conjunto de librerias para programar en cada lenguaje. Las librerias o clases .NET ahora son las mismas y son usadas en todos los lenguajes que ofrece Visual Studio.NET. Esto hace que los lenguajes como visual Basic, Visual C++ y otros, tengan todos el mismo potencial o "poder" para desarrollar aplicaciones. Era comun escuchar: "En VB no se puede, debes usar VC++". Con el .NET framework y sus librerias comunes todos los lenguajes tienen el mismo potencial. La eleccion del lenguaje ahora sera por comodidad del desarrollador. Web Services ------------ Los web services se definen como un conjunto de funciones que estan disponibles en la web para cualquier usuario, mediante protocolos estandares. En otras palabras, como si llamaramos a un metodo, por ejemplo: Sumar, cuya implementacion esta disponible en cualquier parte del mundo. Con los componenes COM y MTS se podia acceder a funciones pero dentro de una LAN, con los Web services, se puede acceder a funciones desde cualquier lugar del mundo. Al ser llamadas estas funciones (web services) desde una aplicacion, Lo que estas funciones hacen es transmitir una definicion XML de la funcion, como si la funcion hubiera sido programada en XML...osea se convierte el codigo fuente de la funcion a su equivalente en XML...esta trama que se transmite viaja a traves de HTTP en un paquete llamado SOAP, que contiene la trama. CLR (Common Language RunTime) ----------------------------- Bajo la plataforma .NET el CLR viene a ser una pieza clave....el motor central de funcionamiento. El CLR es el equivalente a la maquina virtual de Java (JVM).. es decir es el motor que compila y ejecuta las aplicaciones .NET. El CLR compila y ejecuta codigo MSIL segun la plataforma. El codigo MSIL (Microsoft Intermediate Language) es un lenguaje intermedio que se ejecuta segun la plataforma.. la misma estrategia que Java tiene con sus byte-codes. La diferencia es que Java solo interpreta los bytes-codes, mientras que el CLR compila, genera un executable especifico para la plataforma. De esta manera se podra tener un sin numero de lenguajes de programacion que se ejecuten bajo el CLR. Lo unico que se requiere para que un lenguaje corra bajo el entorno .NET y el CLR es que cumpla con los especificaciones del .NET llamado CLS (Common Language Specification) que son un conjunto de requerimientos y caracteristicas que debe cumplir un lengujae para que sea compatible con .NET y pueda ejecutarse bajo el CLR, esta caracteristicas incluyen: tipos de datos soportados, manejo de memoria, etc. Debido a esto, todos los lenguajes de programacion tendran lo mismos tipos de datos, lo que simplifica la tarea de un programador. A esta especificacion comun de tipos se le denomina: CTS (Common Type Specification). Por todo esto se dice que .NET es independiente del lenguaje, dejando esto a criterio del programador Assemblies ---------- Los assemblies vienen a ser los componentes .NET, es decir los DLLs que corren como codigo manejado en el entorno del CLR. Un assembly, a diferencia de un componente COM, es autodescriptivo, en otras palabras, contiene metadata que describe completamente al componente .NET. De esta manera, ya no es necesario registrar en componente en el Registro de windows. Esto que quiere decir, que sera poco probable quebrar una aplicacion que usa DLLs registrados en el Registry. Suponganse que se instala una aplicacion que usa el DLL llamado A.DLL y que luego se instala otra aplicacion que usa otro DLL con el mismo nombre, pero que contiene otra funcionalidad. Entonces luego de instalar ambas aplicaciones, la primera es muy probable que no funciona correctamente. Las dependencias de las aplicaciones con los componentes DLL registrados en el registry de windows siempre ha sido un problema que Microsoft le ha llamado: El infierno de las DLLs". La estrategia para resolver este problema en .NET son los assemblies, que contiene como metadata toda la informacion que antes se almacenaba en el registry. De esta manera no se necesita registrar un assembly, simplemente se copia y nada mas! Esto hace mas facil la distribucion. A esto se le llama distribucion XCOPY . Entonces, lo que contiene un assembly en su core es: Metadata (lo que antes estaba en el registry), MSIL (codigo intermedio que contiene la funcionalidad), recursos (archivos de image y otros assemblies que el componente utilice) Arquitectura del .NET Framework =============================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | .NET Framework | | --------------- ------------- ------------- | | ASP+/WebForms | | Web Classes | | WinForms | | --------------- ------------- ------------- | | ---------------------------------------------------- | | Services Framework | | | ------------------------------------------------ | | | | System | Data | Debug | and more... | | | | ------------------------------------------------ | | ---------------------------------------------------- | | ---------------------------------------------------- | | Common Language Runtime | | ---------------------------------------------------- | ==================================================== | | System Services | | ==================================================== | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - El grafico anterior, hecho por el amigo ReYDeS, muestra como .NET se estructura. Vemos que las partes claves son el CLR, los base classes (Services Framework) y los web services, basados en ASP.NET. La forma en que el CLR ejecuta el codigo es la sgte: Compilacion --------- | | ------------ | Code | ====> | Compiler | | ..../ ------------ .../ | | V -------- -------- | | | | | IL | |Metadata| | .../ | .../ .../ .../ | | V -------------- | JIT Compilar | -------------- | V -------------- | Execution | -------------- - El codigo fuente es transformado a un assembly que servira de base para la ejecucion por parte del CLR. - El CLR toma el aseembly, lo analiza, coge la metadata para resolver alguna referencia y con el MSIL encapsulado en el assembly, compila y ejecuta un ejecutable segun la plataforma. Source --------- --------- --------- code | VB | | C# | | C++ | --------- --------- --------- --------- --------- --------- ----------- | Compiler| | Compiler| | Compiler| ----->| Unmanaged | --------- --------- --------- | Component | V V V ----------- --------- --------- --------- | Managed |Assembly | |Assembly | |Assembly | code |IL code | |IL code | |IL code | | --------- --------- --------- | | | | V V V ----------------------------------- | | Common Language Runtime | | ----------------- | | | | JIT Compiler | | | ----------------- | | ----------------------------------- | | V -------------------- | | Native Code | -------------------- V ------------------------------------------------------- | Operating System Services | ------------------------------------------------------- Web Services y B2B ================== Los Web Services son lo que para muchos mas les atrae de la arquitectura .NET. Tecnicamente un Web Service se define como un conjunto de funcionalidades disponibles a traves de protocolos estandares de internet (HTTP.SOAP) y en un formato entendible por todos (XML). La idea de los web services es brindar el software como un servicio. Por ejm: el servicio Passport de validacion de usuarios. Passport es un web services disponible en uno de los servidores de Microsoft, que es usado por Hotmail y por otros sites para mantener una "base de datos" global de usuarios. Esta idea de software como servicios, es como dije antes, integrar sites, aplicaciones web para de esta manera entrar al llamado B2B (Businness To Bussiness). El B2B tiene el beneficio de integrar aplicaciones para internet para generar una era de comercio electronico mucho mas confiable y poderosa. Los web services hacen esto posible, poniendo "componentes web" disponibles en la web para ser accesados mediante protocolos de descubrimiento o interfaces UDDI (como un buscador de web services programable con VS.NET). Supongamos que se tiene un supemarket cuyo proveedores le brinda mercaderia. Si el supermarket se queda sin stock en uno de sus productos, normalmente la persona encargada del sistema hara una orden de pedido, la imprimira o se la enviara por email al proveedor. La persona encargada en el proveedor recibira esta peticion, la ingresara al sistema y se procesara la orden. Como ven este pedido se proceso separadamente en el supermarket y en el proveedor, no hay integracion. Si usamos web services basados en XML, el supermarket invocaria a una funcion del sistema del proveedor para hacer el pedido, sin necesidad de interaccion humana. El sistema podria verificar el stock minimo y segun eso invocar al web service del proveedor. Incluso, si se quiere tener un entorno mas empresarial, se puede usar Biztalk Server, el cual engloba en una sola transaccion "multi-site" el pedido y el proceso del pedido en el proveedor, como un MTS pero atraves de internet. Biztalk server puede entonces integrar procesos de negocio a traves de multiples organizaciones. Con Biztalk server y sus herramientas podemos mapear documentos XML desde un cliente (supermarket) a un proveedor, podemos dise~ar un diagrama UML (diagrama de secuencia) sobre el cual se puede incorporar funcionalidad a cada proceso representado en el diagrama. A estos diagramas se le llaman XLANG Schedule. Estos diagramas se compilan y se ejecutan como un proceso global multi-organizaciones. Entonces, como vemos, con Biztalk , hacemos nuestro modelo de proceso con diagramas UML, espeficamos que en tal o cual subproceso se ejecute determinada funcionalidad que tenemos (Activex Control, Windows Scripting, DLL, Web services, etc). Luego se compila y luego se ejecuta, y ya esta. El mapeo de documentos se realiza para hacer entendibles los diferentes formatos entre organizaciones. Por ejemplo, si el supermarket envia su orden de pedido a traves de un web service en un documento XML con una determinada estructura. Como es que esta estructura XML sera entendido por el proveedor? Pues no podra, al menos que se mapee y transforme de una estructura XML a otra. Esto mediante XLST. Cambios en el lenguaje ====================== Mejoras en IDE: --------------- Entre las principales mejoras en el IDE de Visual Studio.NET tenemos: - Ahora es integrado: un solo IDE para todos los lenguajes. - Puede mostrar codigo assembler de modulos. - Puede mostrar mapa hexadecimal de memoria de la aplicacion. - Server explorer (donde puede navegar en todos los servidores de tu intranet, como el MMC: Microsoft Management Console). - Class view: donde se puede ver en una estructura de objetos jerarquica los elementos que conforman tu aplicacion. - Ventana de codigo desplegable. - Asistente para creacion de DataSets. - Asistente para creacion de DatAdapters. - Asistente para creacion de Connections. - Manejo de errores a nivel del IDE. - Editor Macro. - Database diagram. - Editor de imagenes. - Entre muchas otras. De VB6 as Vb.NET ---------------- Tambien tenemos las mejoras en el lenguaje Visual Basic: * Todos los tipos de datos son objetos, debido a esto no existe mas el tipo Variant. Si se quiere declarar una variable generica se debe declarar como objeto generico: tipo Object. * No existe mas el tipo Currency. El tipo a usar en vez de este es Decimal. * Existen mas tipos de datos numericos: int16, int32, int64. * No se pueden declarar Strings de longitud fija. Ejm: En VB 6: Dim Cad as String * 40 En VB.NET debe ser: Dim Cad as New String (" ",40) Esto debido a que, como se dijo en un principio todos los tipos de datos son objetos. * Manejo de errores estructurado: ya no mas uso On Error GOTO... la forma estructurado y correcta de manejar errores en .NET es con las instruccion Try..Catch ...Finally. Para los conocedores de Java esto les sonara familiar. * Para disparar errores a un nivel superior de la aplicacion ya no se usa err.Raise; se usa Throw. * Todos los parametros de una function o procedimiento son ahora por defecto ByVal y no ByRef como antes. * Para instanciar objetos no es necesario usar SET. * Se puede usar la palabra Return para devolver un valor de una function. Tambien se puede usar el nombre de la funcion (como en VB 6). * Soporte de constructores multiples parametrizados. * Herencia multilenguaje: Inherits, MustInherits. * Herencia multiple a nivel de interfaces. * Sobrecarga de funciones. * La forma de declarar propiedades de un componente ahora es: Property [ReadOnly|WriteOnly] <nombre_de_propiedad> Get .... End Get Set .... End Set End Property Ya no hay Let. * Muchos nuevos controles: NotifyIcon, NumericUpDown, DomainupDown, etc. * Controles para WebForms: CompareValidator, DomainValidator, etc. * Soporte de funciones de Delegates en reemplazo de CallBacks. * Funciones Friend, Private, Shared, Protected, Public. * Soporte de Threads. * Documentacion XML (solo pra C#). * Configuracion de aplicaciones web via el archivo Web.Config (que reemplaza al metabase de IIS). * Y muchas otras mas. Despedida ========= Bueno, esto ha sido una breve rese~a de la estrategia .NET, que Microsoft ha lanzado para el soporte de aplicaciones de ultima generacion, y de seguro seguira promocionando. Espero les haya dado una idea de lo que es .NET. NOTA: 'ascii art' by ReYDeS. " ReYDeS: Y la seguridad donde queda se~or? Colaborador: Hay que confiar en la gente... ReYDeS: >:) Colaborador 8-) " <<::RareGaZz::>>