Sunteți pe pagina 1din 16

INTRODUCCION A .

NET Esta presentacin est basada en una charla que di hace ya algn tiempo en la Navarparty, aunque actualizada sobretodo en lo que respecta al estado del proyecto Mono. Est basada en una introduccin a la plataforma .NET y una explicacin de las principales caractersticas del proyecto Mono, una implementacin libre de la tecnologa. Por ltimo se muestran tambin algunos ejemplos de aplicaciones sencillas, principalmente ASP.NET. Introduccin a .NET .NET es el nombre que ha dado Microsoft a su forma de ver el futuro de las aplicaciones. Esta visin se centra en un mundo en el cual las aplicaciones se ejecutan de modo distribuido, a lo largo de todo Internet, y son accesibles desde mltiples dispositivos. Esta visin no surge al azar, si no que tiene varias motivaciones. La primera motivacin, se debe a que al igual que la programacin orientada a objetos, la programacin distribuida fomenta la reutilizacin de software. De hecho, lo lleva un paso ms adelante, ya que no slo podemos reutilizar nuestro propio cdigo, o aquellas libreras de las que disponemos, sino que se pueden reutilizar recursos disponibles en distintas ubicaciones de Internet. Por otra parte, el poder acceder a las aplicaciones desde cualquier sitio y desde cualquier dispositivo, es una aspiracin de Microsoft, que con la tecnologa .NET puede llevarse a cabo de forma sencilla, mediante la utilizacin de servicios web. Microsoft divide su filosofa .NET en 3 apartados muy distintos:
y y y

El .NET Framework Servicios (MyServices, Passport) Otras cosas con la etiqueta .NET

En esta presentacin vamos a ceirnos al primero de ellos, que es sobre el cual se sustenta toda la tecnologa, y del que se est desarrollando su versin Open Source, mono. .NET puede considerarse en ciertos aspectos como la respuesta de Microsoft a Java, aunque tiene bastantes diferencias. Rene en una misma plataforma un conjunto interesante de caractersticas, como independencia de plataforma, independencia de lenguaje, soporte de bases de datos, soporte para XML, servicios Web y aplicaciones Web, entre otras. De entre todas estas, quizs una de las ms importantes sean las dos primeras, referentes a la independencia tanto del lenguaje como de la plataforma. Independencia del lenguaje Se puede desarrollar aplicaciones en mltiples lenguajes dentro de la plataforma .NET, pero lo ms interesante, es que una aplicacin puede tener diferentes partes desarrolladas en diferentes lenguajes, y todas estas pueden comunicarse entre s, transparentemente, sin tener que utilizar ningn tipo de capa intermedia que posibilite esta

comunicacin. Esto permite a su vez una gran reutilizacin de cdigo, ya que las clases desarrolladas para un proyecto en un lenguaje concreto, podrn ser reutilizadas en un nuevo proyecto, independientemente del lenguaje en el que se desarrolle ste. Independencia de plataforma Al igual que en Java, el cdigo .NET no se compila a cdigo mquina, sino a un cdigo en un formato intermedio, independiente de la plataforma. Esto permite llevar los binarios producidos de una plataforma a otra, tal como sucede en Java. Para que esto sea posible, as como en Java existe la mquina virtual (JVM), que es la encargada de interpretar o compilar JIT los bytecodes de una aplicacin, en la plataforma .NET existe el Common Language Runtime (CLR), que se encarga de ejecutar el cdigo intermedio o Common Intermediate Language (CIL) NET Framework Cuando se habla del .NET Framework, normalmente se hace referencia al conjunto de clases Framework Class Library (FCL). Ests libreras ofrecen un gran nmero de posibilidades y funcionalidades en el desarrollo de aplicaciones modernas. Para ello dispone de libreras orientadas al manejo de colecciones, XML, comunicaciones, IO, threading, bases de datos La FCL se sustenta sobre la pieza fundamental del .NET Framework, el entorno de ejecucin, o Common Language Runtime (CLR). ste es el encargado de realizar la ejecucin de las aplicaciones desarrolladas para .NET. En la siguiente ilustracin se muestran los componentes que forman la arquitectura del .NET Framework.

Common Language Runtime El CLR es el encargado de gestionar la ejecucin de las aplicaciones, proveyendo de servicios como compilacin JIT, gestin de memoria, gestin de excepciones, depuracin, seguridad o gestin de permisos.

Para entender cmo funciona el CLR conviene entender cmo funcionan los compiladores que generan cdigo para el .NET framework, a diferencia de los compiladores tradicionales. Los compiladores tradicionales, partiendo de los fuentes de una aplicacin en un lenguaje concreto, producen archivos binarios que contienen las instrucciones correspondientes a la plataforma en la que se quiera utilizar el programa compilado. Sin embargo, los compiladores para la plataforma .NET, partiendo de los fuentes de la aplicacin generan archivos binarios que contienen una representacin intermedia del cdigo compilado, formada por metadatos e instrucciones escritas en Common Intermediate Language CIL. Para que estos archivos binarios se puedan ejecutar es necesaria la presencia del CLR en la mquina en la que se quiera ejecutar la aplicacin. Cuando estos binarios se ejecutan se carga el CLR y toma el control de la ejecucin. Desde un punto de vista de eficiencia se podra considerar que el tener la aplicacin en cdigo intermedio y ejecutarlo dentro de un entorno de ejecucin virtual es una desventaja, sin embargo, esto nos permite poder utilizar las aplicaciones en diversas plataformas para las cuales se disponga del CLR. As mismo, a la hora de la ejecucin el CLR tiene la opcin de realizar optimizaciones especficas para la plataforma en la que se est ejecutando, por lo que las aplicaciones se podran aprovechar automticamente de determinados avances en materia de procesadores. La representacin de los metadatos y el cdigo en un lenguaje intermedio posibilita el que se puedan desarrollar mdulos de una aplicacin en diferentes lenguajes y que estos mdulos se puedan comunicar entre s transparentemente.

Para que esto sea posible el CLR necesita conocer bien el cdigo gestionado que est ejecutando, para ello el CLR define un sistema compartido de tipos denominado Common Type System (CTS). El CTS est diseado para ser suficientemente flexible y potente como para permitir la integracin de un amplio nmero de lenguajes de programacin. Para que esta integracin sea posible es necesario tambin que todos los lenguajes que generen cdigo para el CLR dispongan del mismo conjunto de construcciones. Imaginmonos la situacin en la que tenemos un lenguaje A que soporta tipos sin signo y otro lenguaje B que no lo hace. Cmo haramos para llamar desde un mtodo escrito en el lenguaje B a otro escrito en el lenguaje A, el cual necesita un parmetro unsigned? La solucin a este problema la trae el Common Language Specification (CLS). El CLS define un subconjunto del CTS que debera ser suficiente para soportar la integracin entre lenguajes y el cual evita reas conflictivas como sobrecarga de operadores, unsigneds, y otros. De esta forma, cada lenguaje que quiera generar cdigo para la plataforma .NET decide qu parte del CTS acepta.
y y

Common Language Specification Common Type System Overview

Framework Class Library (FCL) Las necesidades de los desarrolladores han evolucionado mucho en los ltimos tiempos debido al continuo incremento en la complejidad de las aplicaciones, esto hace necesario la utilizacin de marcos de trabajo o frameworks, que permitan a los desarrolladores simplificar el desarrollo de las aplicaciones. La Framework Class Library es un enorme conjunto de clases y estructuras, muy bien estructuradas, que ofrecen a los desarrolladores una API muy diversa y completa. ECMA En Noviembre de 2000, Microsoft junto a Intel y HP, enviaron a la European Computer Manufacturers Association (ECMA) la especificacin del lenguaje C#, junto a un subconjunto del FCL (297 clases de las ms de 3.500 existentes) y el entorno de ejecucin. En el proceso de estandarizacin participaron otras empresas incluidas HP, IBM, Fujitsu, Sun, Netscape, entre otras. Se crearon dos grupos de trabajo, uno orientado a la estandarizacin del lenguaje C# y otro a la estandarizacin del Common Language Infraestructure (CLI), que incluye el CLR y las FCL. Tras un ao de trabajo se present el trabajo en la asamblea general de ECMA, y el 13 de diciembre de 2001, se ratificaron como estndares internacionales con los nmeros ECMA-334 (C#) y ECMA-335 (CLI). Proyecto Mono Mono es un proyecto de implementacin del Framework .NET de Microsoft utilizando cdigo libre (open source), gestionado por Ximian y basado en las especificaciones definidas en ECMA. Actualmente el proyecto puede considerarse bastante maduro en muchos aspectos, dispone de una versin compatible con la versin 1.1 del Framework y tiene muy avanzadas caractersticas de la versin 2. Aparte se estn desarrollando partes que no son especficamente de la plataforma, como ADO.NET, WinForms y ASP.NET.

Contexto del proyecto Uno de los objetivos del proyecto GNOME de Ximian, ha sido el poder disponer en entornos Unix de herramientas comparables y competitivas con las existentes en el mercado de aplicaciones de escritorio. Al desarrollar GNOME se pudo comprobar cmo era importante disponer de una independencia respecto a los lenguajes de programacin, para lo cual se disearon las GNOME API de forma que fueran fcilmente utilizables desde diferentes lenguajes, mediante la utilizacin sencilla de wrappers. Actualmente la API de GNOME est disponible para mltiples lenguajes de programacin como Perl, Python, Escheme, C++, Objetive-C, Ada. Algo ms tarde, se comenz a usar CORBA con el objetivo de definir interfaces para los distintos componentes y encapsular las APIs. Est trabajo deriv en la creacin de Bonobo, del que actualmente existen interfaces desde C, Perl, Python y Java. La plataforma .NET, busca unos objetivos muy similares a los buscados por GNOME, ofrecer una independencia de lenguaje a los programadores, as mismo es tambin ms madura, documentada, ms amplia en su mbito de actuacin y tiene un diseo consistente. Cualquier API que se escriba utilizando un lenguaje que genere cdigo para el CLR puede usarse desde cualquier otro lenguaje que genere cdigo para esta plataforma. La plataforma creada por Microsoft tiene una serie de puntos muy interesantes para el proyecto, como son:
y y y y

Un entorno virtual de ejecucin (CLR o VES), que provee recoleccin de basura, threading Una librera de clases potente y comprensible Un nuevo lenguaje muy similar a C++ o Java, C#. Una especificacin de lenguaje que pueden seguir los compiladores, con el fin de generar cdigo que pueda interactuar con otros lenguajes de programacin (CLS)

Implementacin de Mono La iniciativa .NET de Microsoft es un proyecto de toda la compaa bastante difuso, una parte del cual es el framework de .NET. Mono es una implementacin de este framework, pero de nada ms relacionado con .NET, como Passport o software como servicios. Los objetivos iniciales del proyecto Mono eran implementar en un entorno de software libre para el mundo Unix la especificaciones ECMA, para lo cual se incluye un compilador para C#, un entorno de ejecucin CLR y un conjunto de libreras de clase que incluyen las FCL, as como otras aadidas. Ximian (actualmente Novell) no tena el tamao ni los recursos suficientes como para abordar un proyecto de esta envergadura por si sola, por lo que cuando el proyecto alcanz cierto nivel de realizacin se abri a la comunidad para buscar nuevos colaboradores. El inters que suscit el proyecto desde un comienzo fue muy grande, lo que hizo que multitud de desarrolladores se involucrarn en el proyecto fue muy grande. Este inters provoc tambin que partes de la tecnologa, como ADO.NET, ASP.NET o WinForms, que inicialmente no estaban contempladas, o no eran prioritarias, se comenzasen a implementar.

En los puntos siguientes se comentan algunas de las partes de las que consta el proyecto: Mono Runtime Sera el equivalente al Common Language Runtime o entorno virtual de ejecucin. Implementa un compilador JIT para el CIL de la mquina virtual, un compilador Ahead-ofTime (AOT), un cargador de clases, un recolector de basura, el sistema de thereadings y las libreras de acceso a los metadatos. En estos momentos existen dos entornos de ejecucin:
y y

Mono: compilador JIT y AOT. nicamente soporta mquinas x86 por el momento. Mint: intrprete de mono. Es un entorno fcil de migrar a nuevas plataformas.

El entorno de ejecucin se puede utilizar tambin embebido dentro de otra aplicacin, de forma que se pueden extender aplicaciones C y C++ mediante C#. En comparacin con la solucin ofrecida por Microsoft Mono incluye un intrprete y la opcin de utilizar el runtime de forma embebida en una aplicacin. Mono funciona tanto sobre plataformas de 32 bits como de 64 bits: s390, SPARC, SPARCv9 (64 bits), PowerPC, x86, x86-64 (64 bits), as como sobre diversos sistemas operativos: Linux, MacOS X, BSD, SUN SOLARIS y Microsoft Windows. Aparte el intrprete puede ejecutarse sobre otras plataformas como HP-UX. Hay ms informacin al respecto en la pgina de informacin del Mono runtime en el web del proyecto. El runtime es completamente operativo, aunque es posible que siga evolucionando en sentidos como optimizaciones para el compilador Just In Time o el recolector de basura. Dentro del runtime se soportan tambin mecanismos que permiten a las aplicaciones hechas en mono comunicarse con otras aplicaciones, o utilizar libreras externas.
y

y y

PInvoke: es el mecanismo que se utiliza desde el cdigo gestionado para acceder a libreras externas. Se est utilizando en mono para acceder a llamadas de la API de Unix, as como para comunicarse con libreras del sistema. Remoting: Mono tiene soporte para Remoting y objetos Proxy. El entorno de ejecucin facilita este tipo de servicios. COM and XPCOM: no se prev aadir soporte para XPCOM en Unix y COM en Windows.

Class Library Se ha buscado una compatibilidad total con la implementacin .Net de Microsoft. La librera de clases se est desarrollando en C# y puede ser utilizada por cualquier lenguaje, gracias al Common Language Specification. Hay ya desarrollada una gran parte de las clases pertenecientes al Framework Class Library, lo que sumado a la madurez del runtime, hace que sea posible realizar gran cantidad de aplicaciones, aunque sin olvidar que actualmente se va por la versin 0.26, por lo que es posible que encontremos algn bug. El proyecto dispone de una pgina en la que se informa del estado exacto de desarrollo de cada parte de la plataforma.

Compilador C# El compilador de C# (MCS) de mono en estos momentos se considera que cumple la especificacin, por lo que es un producto relativamente maduro. MCS est escrito en C# y es capaz de compilarse a si mismo desde enero de 2002, as como a otros muchos programas. Otras tecnologas En los siguientes puntos se comentan algunas tecnologas que estn siendo desarrolladas, pero que no forman parte de la especificacin ECMA.
y

VisualBasic: Mono incluye un compilador para MonoBasic (mbas). Gracias a la independencia de lenguaje, el cdigo escrito en MonoBasic puede ser utilizado desde C# y viceversa. Est actualmente en fase de desarrollo y queda bastante trabajo pendiente. ADO.NET: se dispone de providers para un buen nmero de bases de datos, superior de hecho al ofrecido por Microsoft. Todava queda bastante trabajo por realizar, sobretodo en lo referente a completar los providers, realizar herramientas necesarias como xsd.exe, y terminar la librera de clases. ASP.NET: es una tecnologa muy potente para la creacin de sitios web y servicios web. Al igual que el resto, es independiente del lenguaje, por lo que podemos tener pginas escritas en Pascal, Logo, Basic, C#, C++, dentro de la misma aplicacin. Las pginas son compiladas, por lo que su ejecucin es muy rpida. Ofrece tambin un modelo de acceso a los elementos de la pgina mediante objetos, un manejo de los mismos a travs de eventos, o un control del estado de la pgina, entre otras caractersticas interesantes. La implementacin se divide en dos partes, Web Forms y Web Services. Ambas son funcionales en este momento. Pese a ser funcinal, queda bastante trabajo para hacer la implementacin compatible con la solucin de Microsoft. ASP.NET puede funcionar tanto con el servidor xsp.exe o con el mdulo mod_mono de apache. o XSP: es un pequeo servidor web que se utiliza para ejecutar aplicaciones ASP.NET. o mod_mono: es el mdulo de conexin de apache con ASP.NET, de forma que se pueda utilizar apache para servir pginas ASP.NET. El proyecto est en curso y aunque funciona queda bastante trabajo pendiente. GTK#: es un conjunto de clases realizadas en C# que permiten el acceso a GTK+ y otras libreras que forman parte de GNOME. Funciona tanto sobre Linux como sobre Windows. Hay ya aplicaciones desarrolladas sobre esta tecnologa, aunque an queda trabajo. La versin actual es la 0.10.

Licencias Mono usa tres tipos de licencia:


y

Las libreras de clases estn bajo una licencia X11. Este tipo de licencia permite prcticamente cualquier uso del cdigo, incluido copiarlo y usarlo en una aplicacin propia. El nico requisito es que se mantenga la informacin de copyright de los archivos. No es necesario siquiera indicar que se est utilizando software bajo licencia X11.

Las libreras del runtime, como el JIT, se distribuyen bajo licencia LGPL. De esta forma si se realiza un programa que linke con ellas, se puede mantener bajo cdigo propietario. Sin embargo es necesario permitir que se pueda enlazar con versiones ms recientes de las libreras. La forma ms fcil de hacer esto sera linkando dinmicamente con ellas. Esto obligara al usuario a descargar e instalar mono por separado. El resto de aplicaciones, como mono o mcs, usan una licencia GPL. Por lo tanto cualquier aplicacin que estn basadas en ella, debern mantener esta licencia.

En lo que respecta al cumplimiento de las patentes de software, las partes contempladas en el estndar ECMA no tienen ningn problema ya que se permite a cualquiera implementar esos componentes gratuitamente y para cualquier propsito. Sin embargo, cuestiones referentes a ADO.NET, ASP.NET y WinForms, son bastante diferentes. La estrategia de Mono ante estas tecnologas es la siguiente: 1. Evitar la patente utilizando otros mecanismos para implementar la misma funcionalidad 2. Eliminar las porciones de cdigo bajo patente 3. Encontrar algo ms novedoso que deje en sin uso a la patente. A continuacin se muestra un grfico que representa algunos de los diferentes tipos de tecnologas que se estn implementando en Mono. Los elementos sealados en azul, son los correspondientes a ECMA y que no estn bajo ningn tipo de patente.

Ejemplos de aplicaciones Consola El ejemplo ms sencillo y tpico cuando se comienza a aprender un nuevo lenguaje, es el hello world. using System.IO; Namespace MonoDemo{ public class HelloWorld{ static public void Main(){ Console.WriteLine("Hello world");

} } } Para compilar y ejecutar, habra que guardar el archivo con el nombre hello.cs por ejemplo, y ejecutar lo siguiente: $ mcs hello.cs $ mono hello.exe Hello world ASP.NET ASP.NET es un gran salto cualitativo desde el modo de realizar aplicaciones con el ASP tradicional o lenguajes como PHP o JSP. Dispone de dos caractersticas que lo hacen novedoso: 1. Programacin basada en eventos: la mayora de los lenguajes con los que se realizan aplicaciones Web, son lenguajes cuyo flujo de ejecucin es lineal, es decir, se ejecuta una accin tras otra, siguiendo un flujo establecido. Desde la aparicin de los sistemas operativos grficos, el desarrollo de aplicaciones se ha basado en una programacin orientada en eventos, en la cual la ejecucin del cdigo no es lineal, si no que depende de los eventos que se vayan recibiendo desde el sistema. En ASP.NET, es posible programar utilizando un modo de programacin lineal, pero nos ofrece tambin la posibilidad de programar utilizando un modo basado en eventos. 2. Controles: ASP.NET dispone de un conjunto de controles, que insertados en el cdigo html de la pgina, nos permiten controlar el contenido de la misma. De esta forma se consigue separar en gran medida el diseo de la lgica de programacin, un caballo de batalla muy frecuente en el desarrollo de aplicaciones web. Programacin basada en eventos Mediante ASP.NET se puede indicar que determinados controles generen un evento que se capture en el servidor. Para ello, cuando el evento se produce en el cliente la pgina se enva por POST al servidor, el cual identifica el evento que se ha generado y realiza la accin asociada. Debido a que este tipo de funcionamiento obliga a enviar informacin al servidor y pedir una nueva pgina ante cada evento, no se pueden gestionar todos los eventos que se podran producir en el cliente. As por ejemplo no tiene sentido capturar en el servidor el evento mouseover, sin embargo s sera lgico capturar el pulsar sobre un botn. Controles Web Como se ha comentado el objetivo de los controles web es permitir separar la lgica de la presentacin. Para ello hay diversos tipos de controles que se detallarn a continuacin. Estos controles se incluyen en la pgina web mediante tags que incluyen el atributo runat="server". Con este atributo se le informa al parseador que deber crear una

instancia del control correspondiente para poder acceder a su informacin desde la lgica. En concreto se consiguen las siguientes ventajas utilizando controles de servidor:
y y y y

Acceder a l desde la lgica. Mantener el estado entre accesos al servidor Generar eventos que pueden ser capturados en el servidor Generar cdigo especfico para cada navegador

Los controles ms sencillos son los controles HTML de servidor, que heredan de System.Web.UI.Control.HtmlControl en el namespace System.Web.UI.HtmlControls. Estos controles son los equivalentes a los controles Html tradicionales. Su principal utilidad es facilitar la migracin de aplicaciones existentes. Tienen como desventaja que pese a poder acceder a ellos desde la lgica, su interfaz de acceso no es homogneo con el resto de componentes y que no pueden responder a eventos. Un segundo tipo de controles son los denominados Web Controls, que heredan de System.Web.UI.Control en el namespace System.Web.UI.WebControls. Estos controles ofrecen un modo de acceso ms homogneo, a la vez que no estn limitados a los controles existentes en html, sino que se dispone de controles ms complejos como: paneles, repeaters, datagrids, listas de opciones A continuacin se muestra una comparativa entre los controles html y los controles web: Facilitan la transicin desde pginas html o asp Modo de acceso similar al existente en html Se pueden utilizar con entornos de diseo de html directamente Ms fcil interactuar con scripts en la parte cliente Permiten programar basado en eventos Controles ms potentes Se reduce el riesgo de errores, al disponer de un interfaz ms homogneo Soporta event bubbling en controles anidados Generacin especfica de html para navegadores uplevel (html 4.0) y downlevel (html 3.2)

Controles HTML

y y y y y y y

Controles WEB
y y

Aparte de los controles Web existentes se pueden crear nuevos controles de 3 formas distintas:
y y y

Derivando directamente de la clase base System.Web.UI.Control. Se les denomina full custom controls. Derivando de un control ya existente. Se les denomina derived custom control. Uniendo varios controles existentes. Se les denomina composite custom controls.

Aparte de estos controles denominados genricamente Custom Controls, existe un ltimo grupo llamado User Controls. Este tipo de controles permite reutilizar bloques de pginas

en diferentes pginas, son el equivalente a los includes en lenguajes como PHP o JSP. La ventaja de estos controles es que se puede acceder a ellos desde la parte de la lgica asociada al control y disponen tambin de la opcin de responder a eventos. Otras caractersticas Aparte de estas dos caractersticas comentadas ASP.NET incluye muchas ms funcionalidades que facilitan en gran medida la programacin de aplicaciones web. Entre ellas destacan:
y

y y

Caching de pginas y controles: permite indicar que una pgina o control no se genere bajo cada peticin, sino que su resultado html se mantenga en cach y sea devuelto en sucesivas peticiones. Mantenimiento del estado en pginas: se realiza mediante un control oculto en el formulario html de la pgina (__VIEWSTATE). En este control se guarda en forma encriptada el estado de los controles de la pgina, de forma que al realizar peticiones de la pgina al servidor, no sea necesario regenerar todo el html. Esta caracterstica se muestra especialmente interesante por ejemplo, cuando se utiliza para cargar en un paso inicial los datos de un formulario con informacin de una base de datos y en siguientes peticiones este estado se mantiene transparentemente. Aparte de la informacin de los controles de la pgina es posible guardar otros tipos de informacin que hagan referencia a la pgina en proceso, en vez de utilizar la sesin del usuario. La conveniencia de utilizar un mecanismo u otro, depender de la situacin. Caching de informacin: se disponde de una cache en la cual se puede almacenar cualquier tipo de informacin. Los elementos de esta cache pueden asociarse con otros elementos de la cach o con archivos externos, para producir actualizaciones en cascada. Las pginas se compilan, con lo que el rendimiento es mayor. 3 tipos de pginas: o Code in page: la lgica y la presentacin estn en un mismo archivo aspx. o Code behind con src: la lgica y la presentacin estn en archivos independientes, aspx y aspx.cs, por ejemplo. Cuando se solicita la pgina por primera vez, se realiza la compilacin del cs. o Code behind compilado: la lgica de las pginas reside en archivos separados, al igual que en el caso anterior, pero el cdigo ha sido precompilado en libreras, por lo que no es necesario distribuir los fuentes.

Ejemplos A continuacin se muestran varios ejemplos de cdigo:


y y y y y y y

hola mundo en ASP.NET con C# embebido descargar hola mundo en ASP.NET con control HTML descargar hola mundo en ASP.NET con control Web descargar hola mundo en ASP.NET con evento de servidor descargar Hola mundo en ASP.NET con evento de servidor, y cdigo en un archivo independiente compilado on the fly descargar Repeater con informacin de la base de datos y cdigo precompilado descargar Formulario de registro y cdigo precompilado descargar

Servicios Web El principal objetivo de los servicios web es permitir interconectar aplicaciones realizadas en cualquier tipo de lenguaje, plataforma y sistema operativo, de una manera fcil y completamente transparente. Los servicios web permiten la reutilizacin de software o comparticin de informacin, utilizando piezas de cdigo generadas y gestionadas por terceros. Tradicionalmente esta forma de trabajo pasaba por la utilizacin de herramientas y procesos a medida, que estaban completamente ligados a los dos extremos de la comunicacin, es decir al cliente y al servidor. Esto provocaba que hubiera situaciones en la haba que rescribir el mismo proceso mltiples veces para diferentes cliente o que aparecieran problemas por la interconexin de diferentes plataformas, por ejemplo. Mediante la utilizacin de los servicios web es posible reutilizar y compartir informacin de una forma estndar. Esto simplifica los procesos de implementacin ya que se utiliza una infraestructura comn para todos ellos y permite reutilizar los servicios desarrollados con un nmero ilimitado de clientes que cumplan con el estndar. Para ello los servicios web estn basados en el siguiente conjunto de tecnologas:
y y

XML: la base de los servicios web es el lenguaje XML. Mediante l se estructura la informacin que intercambian los clientes y el proveedor de un servicio. Web Service Description Language (WSDL): permite especificar en formato XML, las caractersticas y el funcionamiento de un servicio web. Esto facilita en gran medida la utilizacin de un servicio por diferentes clientes. Simple Object Access Protocol (SOAP): basado tambin en XML, permite la comunicacin entre los clientes del servicio y el propio servicio. Define el formato XML que deber utilizarse en las comunicaciones entre clientes y proveedor. Normalmente funciona sobre http, aunque puede hacerlo sobre sobre SMTP, MSMQ Universal Description Discovery and Integration (UDDI): permite la publicacin de los servicios web, de forma que sean accesibles a otros clientes. Bsicamente son directorios de servicios web, en los que los proveedores dan de alta sus servicios, y los clientes buscan servicios adecuados a sus necesidades.

Ejemplos Consumir servicio google: Puedes descargar un zip con los fuentes de un ejemplo en el que se realiza una peticin a Google para obtener los resultados de una bsqueda solicitada por el usuario. El ejemplo funciona bajo ASP.NET y requiere de una clave de utilizacin para el servicio. Estas claves son gratuitas, con el cdigo viene una pero si falla se puede obtener una nueva desde la pgina de APIs de Google. Con la peticin del usuario se realiza una peticin al servicio web de Google utilizando un Proxy que viene con la API, tras lo cual Google nos devuelve la informacin resultante estructurada, de forma que se rellena un repeater con los datos obtenidos y utilizando una hoja de estilos similar a la utilizada por Google. .NET vs Java Por ltimo, para terminar con esta introduccin a la plataforma .NET, una comparacin recurrente cuando se habla de .NET, ya sea hablando de la implementacin de Microsoft,

o de Mono. Muchos desarrolladores preguntan la necesidad de definir una nueva tecnologa o incluso un nuevo lenguaje, cuando en definitiva Java realiza cosas similares. A continuacin se intenta explicar estas diferencias pero partiendo de la base de que ambas tecnologas son compatibles. .NET es una tecnologa ms en el mundo de desarrollo, que ofrece nuevas posibilidades a los desarrolladores, pero cuyo objetivo no es eliminar a Java, lo cual por otra parte, sera imposible debido a la gran cantidad de cdigo escrito para esta plataforma. Es importante tener en cuenta que .NET no es algo 100% novedoso, es bsicamente una reunin de tecnologas muy interesantes, e integradas de forma eficaz, eficiente y elegante. La mayora de estas tecnologas existan ya, al igual que tambin existan desde haca mucho tiempo las tecnologas implementadas en Java. Plataformas Java .NET

.NET funciona en Windows con la implementacin de .NET de Microsoft y Java funciona sobre un gran nmero de en Linux, FreeBSD y Windows con la plataformas implementacin de Mono, aunque se prev dar soporte a ms plataformas J2EE y .NET ofrecen bsicamente las mismas funcionalidades, aunque de diferente forma. .NET permite desarrollar en diferentes lenguajes y que el cdigo generado sea completamente utilizable desde otras aplicaciones en otros lenguajes.

J2EE

Java no permite la interoperabilidad de mltiples lenguajes. Es posible compilar a bytecode desde mltiples lenguajes, pero no es posible alcanzar el nivel de interaccin que se da en .NET

.NET utiliza SOAP (XML+http) para Java no permite la intercomunicacin comunicar aplicaciones. Esto permite entre aplicaciones de una forma tan comunicar aplicaciones hechas en sencilla como en .NET cualquier tecnologa o plataforma con otras.

C# vs Java En lo que respecta a las diferencias entre estos lenguajes, hay que decir que prcticamente todo lo que se puede hacer en C# se puede hacer en Java. C# ofrece un conjunto de construcciones que permiten facilitar la vida al desarrollador, aunque estos constructores se pueden simular tambin en Java. Sin embargo la forma de hacer este

tipo de cosas es ms consistente y sencillo en C#, aunque con el incoveniente de tener que tener que conocer un nmero mayor de contructores que en Java. Java utiliza una filosofa, de si algo se puede hacer con clases, no es necesario crear un constructor especfico. Java mejor en muchos aspectos C++, como por ejemplo con la eliminacin de punteros, archivos header, o la existencia de una clase base comn. Una caracterstica de estas simplificaciones es que hacen el desarrollo ms sencillo, pero el no utilizar algunos de los constructores que se ven a continuacin, puede provocar que el desarrollo sea ms complejo y el cdigo menos claro. Java 1.4 C# 1.0

Java no dispone de un constructor de C# dispone de propiedades, un patrn propiedades. Los atributos de las clases muy utilizado sobretodo en entornos se modifican mediante mtodos set* y RAD. get*, aunque el lenguaje no obliga e ello. Java no dispone de Indexers En C# se permite el manejo de una clase como si fuera un array. Un delegado en .NET se puede ver como una manera segura de utilizar punteros a funciones. Un delegado puede contener tambin llamadas a ms de un mtodo, de forma que es muy sencillo implementar el patrn observer, el cual se utiliza con profusin en la programacin basada en eventos por ejemplo. C# da soporte al uso directo de eventos. Aunque la utilizacin de eventos en la programacin actual es algo muy habitual, no se ha realizado demasiado esfuerzo en simplificar su manejo. C# utiliza delegados y la palabra clave event para ofrecer un modo sencillo de gestionar eventos. C# soporta enumerados. Los enumerados permiten especificar grupos de elementos de una forma sencilla y segura, por ejemplo, los das de la

Java no dispone de delegados

Java no soporta eventos

Java no soporta enumerados. Para ello se utilizan clases con constantes numricas (final static). Esto puede ser una fuente de problemas en el sentido en que no se garantiza del todo la seguridad

de tipos.

semana.

C# permite la utilizacin del constructor Java no contempla el constructor foreach foreach para recorrer todas aquellas para recorrer colecciones. colecciones de elementos que cumplan un determinado interfaz. En C# hay que indicar qu mtodos se Por defecto en Java todos los mtodos desea que sean virtuales con la palabra son virtuales. reservada virtual, e indicar los mtodos sobrecargados con la palabra override. C# utiliza atributos para cualificar mtodos, atributos, clases con el fin de pasar informacin al runtime y que est disponible en tiempo de ejecucin. Hay un conjunto de atributos disponibles, aunque se pueden crear especficos. Podemos utilizar atributos para especificar cmo se debe serializar una clase en XML, o qu evento de un componente es al que una herramienta RAD debera asociar una accin por defecto, al hacer el usuario doble clic en el componente.

Java tiene informacin de los datos en el cdigo, pero a un nivel muy inferior al de C#. Utiliza /** */ y @tag para incluir informacin sobre el cdigo, aunque esta informacin no se pasa al bytecode.

En C# el cdigo se organiza en archivos, namespaces y assemblies. Los namespaces permiten agrupar clases de forma que se eviten conflictos de nombres. Los assemblies son los .dll o .exe que se generan al compilar un En Java una aplicacin se divide en conjunto de archivos. Un assembly puede paquetes, cuya estructura jerrquica contener un nmero indeterminado de debe coincidir con la estructura de namespaces, y un namespace puede carpetas que forman el proyecto. estar repartido entre varios assemblies. Los archivos que forman un assembly o un namespace, no tienen ninguna limitacin en cuanto a su ubicacin en carpetas, ya que los namespaces en un concepto nicamente lgico.

Java no permite trabajar con punteros

C# permite trabajar con punteros. Para ello es necesario marcar la zona dnde se manejan dentro de una construccin unsafe, y compilar el cdigo con el flag unsafe.

S-ar putea să vă placă și