introduccion punto net

16
  INTRODUCCION A .NET Esta presentación está basada en una charla que di hace ya algún tiempo en la Navarparty, aunque actualizada sobretodo en lo que respecta al estado del proyecto Mono. Está basada en una introducción a la plataforma .NET y una explicación de las principales características del proyecto Mono, una implementación libre de la tecnología. Por último se muestran también algunos ejemplos de aplicaciones sencillas, principalmente ASP.NET. Introducción a .NET .NET es el nombre que ha dado Microsoft a su forma de ver el futuro de las aplicaciones. Esta visión 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 múltiples dispositivos. Esta visión no surge al azar, si no que tiene varias motivaciones. La primera motivación, se debe a que al igual que la programación orientada a objetos, la programación distribuida fomenta la reutilización de software. De hecho, lo lleva un paso más adelante, ya que no sólo podemos reutilizar nuestro propio código, o aquellas librerías 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 aspiración de Microsoft, que con la tecnología .NET puede llevarse a cabo de forma sencilla, mediante la utilización de servicios web. Microsoft divide su filosofía .NET en 3 apartados muy distintos: y El .NET Framework y Servicios (MyServices, Passport) y Otras cosas con la etiqueta ³.NET´ En esta presentación vamos a ceñirnos al primero de ellos, que es sobre el cual se sustenta toda la tecnología, y del que se está desarrollando su versión Open Source, mono. .NET puede considerarse en ciertos aspectos como la respuesta de Microsoft a Java, aunque tiene bastantes diferencias. Reúne en una misma plataforma un conjunto interesante de características, 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, quizás una de las más importantes sean las dos primeras, referentes a la independencia tanto del lenguaje como de la plataforma. Independencia del lenguaje Se puede desarrollar aplicaciones en múltiples lenguajes dentro de la plataforma .NET, pero lo más interesante, es que una aplicación puede tener diferentes partes desarrolladas en diferentes lenguajes, y todas estas pueden comunicarse entre sí, transparentemente, sin tener que utilizar ningún tipo de capa intermedia que posibilite esta

Upload: nelson-augusto-beltran-garzon

Post on 13-Jul-2015

284 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 1/16

 

 

INTRODUCCION A .NET

Esta presentación está basada en una charla que di hace ya algún tiempo en laNavarparty, aunque actualizada sobretodo en lo que respecta al estado del proyectoMono. Está basada en una introducción a la plataforma .NET y una explicación de lasprincipales características del proyecto Mono, una implementación libre de la tecnología.Por último se muestran también algunos ejemplos de aplicaciones sencillas,principalmente ASP.NET.

Introducción a .NET

.NET es el nombre que ha dado Microsoft a su forma de ver el futuro de las aplicaciones.Esta visión se centra en un mundo en el cual las aplicaciones se ejecutan de mododistribuido, a lo largo de todo Internet, y son accesibles desde múltiples dispositivos.

Esta visión no surge al azar, si no que tiene varias motivaciones. La primera motivación,se debe a que al igual que la programación orientada a objetos, la programacióndistribuida fomenta la reutilización de software. De hecho, lo lleva un paso más adelante,ya que no sólo podemos reutilizar nuestro propio código, o aquellas librerías de las quedisponemos, sino que se pueden reutilizar recursos disponibles en distintas ubicacionesde Internet.

Por otra parte, el poder acceder a las aplicaciones desde cualquier sitio y desde cualquier dispositivo, es una aspiración de Microsoft, que con la tecnología .NET puede llevarse acabo de forma sencilla, mediante la utilización de servicios web.

Microsoft divide su filosofía .NET en 3 apartados muy distintos:

y  El .NET Frameworky  Servicios (MyServices, Passport)y  Otras cosas con la etiqueta ³.NET´

En esta presentación vamos a ceñirnos al primero de ellos, que es sobre el cual sesustenta toda la tecnología, y del que se está desarrollando su versión Open Source,mono.

.NET puede considerarse en ciertos aspectos como la respuesta de Microsoft a Java,aunque tiene bastantes diferencias. Reúne en una misma plataforma un conjuntointeresante de características, como independencia de plataforma, independencia de

lenguaje, soporte de bases de datos, soporte para XML, servicios Web y aplicacionesWeb, entre otras. De entre todas estas, quizás una de las más importantes sean las dosprimeras, referentes a la independencia tanto del lenguaje como de la plataforma.

Independencia del lenguaje

Se puede desarrollar aplicaciones en múltiples lenguajes dentro de la plataforma .NET,pero lo más interesante, es que una aplicación puede tener diferentes partesdesarrolladas en diferentes lenguajes, y todas estas pueden comunicarse entre sí,transparentemente, sin tener que utilizar ningún tipo de capa intermedia que posibilite esta

Page 2: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 2/16

 

comunicación. Esto permite a su vez una gran reutilización de código, ya que las clasesdesarrolladas para un proyecto en un lenguaje concreto, podrán ser reutilizadas en unnuevo proyecto, independientemente del lenguaje en el que se desarrolle éste.

Independencia de plataforma

 Al igual que en Java, el código .NET no se compila a código máquina, sino a un código enun formato intermedio, independiente de la plataforma. Esto permite llevar los binariosproducidos de una plataforma a otra, tal como sucede en Java. Para que esto sea posible,así como en Java existe la máquina virtual (JVM), que es la encargada de interpretar ocompilar JIT los bytecodes de una aplicación, en la plataforma .NET existe el CommonLanguage Runtime (CLR), que se encarga de ejecutar el código intermedio o CommonIntermediate Language (CIL)

NET Framework

Cuando se habla del .NET Framework, normalmente se hace referencia al conjunto declases Framework Class Library (FCL). Estás librerías ofrecen un gran número deposibilidades y funcionalidades en el desarrollo de aplicaciones modernas. Para ellodispone de librerías 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 deejecución, o Common Language Runtime (CLR). Éste es el encargado de realizar laejecución de las aplicaciones desarrolladas para .NET. En la siguiente ilustración semuestran los componentes que forman la arquitectura del .NET Framework.

Page 3: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 3/16

 

Common Language Runtime

El CLR es el encargado de gestionar la ejecución de las aplicaciones, proveyendo deservicios como compilación JIT, gestión de memoria, gestión de excepciones, depuración,seguridad o gestión de permisos.

Para entender cómo funciona el CLR conviene entender cómo funcionan los compiladoresque generan código para el .NET framework, a diferencia de los compiladorestradicionales. Los compiladores tradicionales, partiendo de los fuentes de una aplicaciónen un lenguaje concreto, producen archivos binarios que contienen las instruccionescorrespondientes a la plataforma en la que se quiera utilizar el programa compilado. Sinembargo, los compiladores para la plataforma .NET, partiendo de los fuentes de laaplicación generan archivos binarios que contienen una representación intermedia delcódigo compilado, formada por metadatos e instrucciones escritas en CommonIntermediate Language CIL. Para que estos archivos binarios se puedan ejecutar esnecesaria la presencia del CLR en la máquina en la que se quiera ejecutar la aplicación.Cuando estos binarios se ejecutan se carga el CLR y toma el control de la ejecución.

Desde un punto de vista de eficiencia se podría considerar que el tener la aplicación encódigo intermedio y ejecutarlo dentro de un entorno de ejecución virtual es unadesventaja, sin embargo, esto nos permite poder utilizar las aplicaciones en diversasplataformas para las cuales se disponga del CLR. Así mismo, a la hora de la ejecución elCLR tiene la opción de realizar optimizaciones específicas para la plataforma en la que seestá ejecutando, por lo que las aplicaciones se podrían aprovechar automáticamente dedeterminados avances en materia de procesadores.

La representación de los metadatos y el código en un lenguaje intermedio posibilita el quese puedan desarrollar módulos de una aplicación en diferentes lenguajes y que estosmódulos se puedan comunicar entre sí transparentemente.

Page 4: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 4/16

 

Para que esto sea posible el CLR necesita conocer bien el código gestionado que estáejecutando, para ello el CLR define un sistema compartido de tipos denominado CommonType System (CTS). El CTS está diseñado para ser suficientemente flexible y potentecomo para permitir la integración de un amplio número de lenguajes de programación.Para que esta integración sea posible es necesario también que todos los lenguajes quegeneren código para el CLR dispongan del mismo conjunto de construcciones.

Imaginémonos la situación en la que tenemos un lenguaje A que soporta tipos sin signo yotro lenguaje B que no lo hace. ¿Cómo haríamos para llamar desde un método escrito enel lenguaje B a otro escrito en el lenguaje A, el cual necesita un parámetro unsigned?

La solución a este problema la trae el Common Language Specification (CLS). El CLSdefine un subconjunto del CTS que debería ser suficiente para soportar la integraciónentre lenguajes y el cual evita áreas conflictivas como sobrecarga de operadores,unsigneds, y otros. De esta forma, cada lenguaje que quiera generar código para laplataforma .NET decide qué parte del CTS acepta.

y  Common Language Specification y  Common Type System Overview 

Framework Class Library (FCL)

Las necesidades de los desarrolladores han evolucionado mucho en los últimos tiemposdebido al continuo incremento en la complejidad de las aplicaciones, esto hace necesariola utilización de marcos de trabajo o frameworks, que permitan a los desarrolladoressimplificar el desarrollo de las aplicaciones. La Framework Class Library es un enormeconjunto de clases y estructuras, muy bien estructuradas, que ofrecen a losdesarrolladores 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 especificación del lenguaje C#, junto a unsubconjunto del FCL (297 clases de las más de 3.500 existentes) y el entorno deejecución. En el proceso de estandarización participaron otras empresas incluidas HP,IBM, Fujitsu, Sun, Netscape, entre otras. Se crearon dos grupos de trabajo, uno orientadoa la estandarización del lenguaje C# y otro a la estandarización del Common LanguageInfraestructure (CLI), que incluye el CLR y las FCL. Tras un año de trabajo se presentó eltrabajo en la asamblea general de ECMA, y el 13 de diciembre de 2001, se ratificaroncomo estándares internacionales con los números ECMA-334 (C#) y ECMA-335 (CLI).

Proyecto Mono

Mono es un proyecto de implementación del Framework .NET de Microsoft utilizandocódigo libre (open source), gestionado por Ximian y basado en las especificacionesdefinidas en ECMA.

  Actualmente el proyecto puede considerarse bastante maduro en muchos aspectos,dispone de una versión compatible con la versión 1.1 del Framework y tiene muyavanzadas características de la versión 2. Aparte se están desarrollando partes que noson específicamente de la plataforma, como ADO.NET, WinForms y ASP.NET.

Page 5: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 5/16

 

Contexto del proyecto

Uno de los objetivos del proyecto GNOME de Ximian, ha sido el poder disponer enentornos Unix de herramientas comparables y competitivas con las existentes en elmercado de aplicaciones de escritorio. Al desarrollar GNOME se pudo comprobar cómoera importante disponer de una independencia respecto a los lenguajes de programación,para lo cual se diseñaron las GNOME API de forma que fueran fácilmente utilizablesdesde diferentes lenguajes, mediante la utilización sencilla de wrappers. Actualmente la

  API de GNOME está disponible para múltiples lenguajes de programación como Perl,Python, Escheme, C++, Objetive-C, Ada.

 Algo más tarde, se comenzó a usar CORBA con el objetivo de definir interfaces para losdistintos componentes y encapsular las APIs. Esté trabajo derivó en la creación deBonobo, 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 también másmadura, documentada, más amplia en su ámbito de actuación y tiene un diseñoconsistente. Cualquier API que se escriba utilizando un lenguaje que genere código parael CLR puede usarse desde cualquier otro lenguaje que genere código para estaplataforma.

La plataforma creada por Microsoft tiene una serie de puntos muy interesantes para elproyecto, como son:

y  Un entorno virtual de ejecución (CLR o VES), que provee recolección de basura,threading«

y  Una librería de clases potente y comprensibley  Un nuevo lenguaje muy similar a C++ o Java, C#.y

 U

na especificación de lenguaje que pueden seguir los compiladores, con el fin degenerar código que pueda interactuar con otros lenguajes de programación (CLS)

Implementación de Mono

La iniciativa .NET de Microsoft es un proyecto de toda la compañía bastante difuso, unaparte del cual es el framework de .NET. Mono es una implementación de este framework,pero de nada más relacionado con .NET, como Passport o software como servicios.

Los objetivos iniciales del proyecto Mono eran implementar en un entorno de softwarelibre para el mundo Unix la especificaciones ECMA, para lo cual se incluye un compilador para C#, un entorno de ejecución CLR y un conjunto de librerías de clase que incluyen las

FCL, así como otras añadidas.

Ximian (actualmente Novell) no tenía el tamaño ni los recursos suficientes como paraabordar un proyecto de esta envergadura por si sola, por lo que cuando el proyectoalcanzó cierto nivel de realización se abrió a la comunidad para buscar nuevoscolaboradores. El interés que suscitó el proyecto desde un comienzo fue muy grande, loque hizo que multitud de desarrolladores se involucrarán en el proyecto fue muy grande.Este interés provocó también que partes de la tecnología, como ADO.NET, ASP.NET oWinForms, que inicialmente no estaban contempladas, o no eran prioritarias, secomenzasen a implementar.

Page 6: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 6/16

 

En los puntos siguientes se comentan algunas de las partes de las que consta elproyecto:

Mono Runtime

Sería el equivalente al Common Language Runtime o entorno virtual de ejecución.Implementa un compilador JIT para el CIL de la máquina virtual, un compilador Ahead-of-Time (AOT), un cargador de clases, un recolector de basura, el sistema de thereadings ylas librerías de acceso a los metadatos.

En estos momentos existen dos entornos de ejecución:

y  Mono: compilador JIT y AOT. Únicamente soporta máquinas x86 por el momento.y  Mint: intérprete de mono. Es un entorno fácil de migrar a nuevas plataformas.

El entorno de ejecución se puede utilizar también embebido dentro de otra aplicación, deforma que se pueden extender aplicaciones C y C++ mediante C#.

En comparación con la solución ofrecida por Microsoft Mono incluye un intérprete y laopción de utilizar el runtime de forma embebida en una aplicación.

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 sistemasoperativos: Linux, MacOS X, BSD, SUN SOLARIS y Microsoft Windows. Aparte elintérprete puede ejecutarse sobre otras plataformas como HP-UX. Hay más información alrespecto en la página de información del Mono runtime en el web del proyecto.

El runtime es completamente operativo, aunque es posible que siga evolucionando ensentidos como optimizaciones para el compilador Just In Time o el recolector de basura.

Dentro del runtime se soportan también mecanismos que permiten a las aplicacioneshechas en mono comunicarse con otras aplicaciones, o utilizar librerías externas.

y  PInvoke: es el mecanismo que se utiliza desde el código gestionado para acceder a librerías externas. Se está utilizando en mono para acceder a llamadas de la APIde Unix, así como para comunicarse con librerías del sistema.

y  Remoting: Mono tiene soporte para Remoting y objetos Proxy. El entorno deejecución facilita este tipo de servicios.

y  COM and XPCOM: no se prevé añadir soporte para XPCOM en Unix y COM enWindows.

Class Library

Se ha buscado una compatibilidad total con la implementación .Net de Microsoft. Lalibrería de clases se está desarrollando en C# y puede ser utilizada por cualquier lenguaje, gracias al Common Language Specification. Hay ya desarrollada una gran partede las clases pertenecientes al Framework Class Library, lo que sumado a la madurez delruntime, hace que sea posible realizar gran cantidad de aplicaciones, aunque sin olvidar que actualmente se va por la versión 0.26, por lo que es posible que encontremos algúnbug. El proyecto dispone de una página en la que se informa del estado exacto dedesarrollo de cada parte de la plataforma.

Page 7: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 7/16

 

Compilador C#

El compilador de C# (MCS) de mono en estos momentos se considera que cumple laespecificación, por lo que es un producto relativamente maduro. MCS está escrito en C# yes capaz de compilarse a si mismo desde enero de 2002, así como a otros muchosprogramas.

Otras tecnologías

En los siguientes puntos se comentan algunas tecnologías que están siendodesarrolladas, pero que no forman parte de la especificación ECMA.

y  VisualBasic: Mono incluye un compilador para MonoBasic (mbas). Gracias a laindependencia de lenguaje, el código escrito en MonoBasic puede ser utilizadodesde C# y viceversa. Está actualmente en fase de desarrollo y queda bastantetrabajo pendiente.

y    ADO.NET: se dispone de providers para un buen número de bases de datos,superior de hecho al ofrecido por Microsoft. Todavía queda bastante trabajo por realizar, sobretodo en lo referente a completar los providers, realizar herramientasnecesarias como xsd.exe, y terminar la librería de clases.

y    ASP.NET: es una tecnología muy potente para la creación de sitios web yservicios web. Al igual que el resto, es independiente del lenguaje, por lo quepodemos tener páginas escritas en Pascal, Logo, Basic, C#, C++,« dentro de lamisma aplicación. Las páginas son compiladas, por lo que su ejecución es muyrápida. Ofrece también un modelo de acceso a los elementos de la páginamediante objetos, un manejo de los mismos a través de eventos, o un control delestado de la página, entre otras características interesantes. La implementación sedivide en dos partes, Web Forms y Web Services. Ambas son funcionales en estemomento. Pese a ser funcinal, queda bastante trabajo para hacer laimplementación compatible con la solución de Microsoft. ASP.NET puedefuncionar tanto con el servidor xsp.exe o con el módulo mod_mono de apache.

o  XSP: es un pequeño servidor web que se utiliza para ejecutar aplicaciones ASP.NET.

o  mod_mono: es el módulo de conexión de apache con ASP.NET, de formaque se pueda utilizar apache para servir páginas ASP.NET. El proyectoestá en curso y aunque funciona queda bastante trabajo pendiente.

y  GTK#: es un conjunto de clases realizadas en C# que permiten el acceso a GTK+y otras librerías que forman parte de GNOME. Funciona tanto sobre Linux comosobre Windows. Hay ya aplicaciones desarrolladas sobre esta tecnología, aunqueaún queda trabajo. La versión actual es la 0.10.

Licencias

Mono usa tres tipos de licencia:

y  Las librerías de clases están bajo una licencia X11. Este tipo de licencia permiteprácticamente cualquier uso del código, incluido copiarlo y usarlo en unaaplicación propia. El único requisito es que se mantenga la información decopyright de los archivos. No es necesario siquiera indicar que se está utilizandosoftware bajo licencia X11.

Page 8: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 8/16

 

y  Las librerías del runtime, como el JIT, se distribuyen bajo licencia LGPL. De estaforma si se realiza un programa que linke con ellas, se puede mantener bajocódigo propietario. Sin embargo es necesario permitir que se pueda enlazar conversiones más recientes de las librerías. La forma más fácil de hacer esto seríalinkando dinámicamente con ellas. Esto obligaría al usuario a descargar e instalar mono por separado.

y  El resto de aplicaciones, como mono o mcs, usan una licencia GPL. Por lo tantocualquier aplicación que estén basadas en ella, deberán mantener esta licencia.

En lo que respecta al cumplimiento de las patentes de software, las partes contempladasen el estándar ECMA no tienen ningún problema ya que se permite a cualquieraimplementar esos componentes gratuitamente y para cualquier propósito. Sin embargo,cuestiones referentes a ADO.NET, ASP.NET y WinForms, son bastante diferentes. Laestrategia de Mono ante estas tecnologías es la siguiente:

1. Evitar la patente utilizando otros mecanismos para implementar la mismafuncionalidad

2. Eliminar las porciones de código bajo patente

3. Encontrar algo más novedoso que deje en sin uso a la patente.

 A continuación se muestra un gráfico que representa algunos de los diferentes tipos detecnologías que se están implementando en Mono. Los elementos señalados en azul, sonlos correspondientes a ECMA y que no están bajo ningún tipo de patente.

Ejemplos de aplicaciones

Consola

El ejemplo más sencillo y típico 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");

Page 9: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 9/16

 

}}

}

Para compilar y ejecutar, habría que guardar el archivo con el nombre hello.cs por ejemplo, y ejecutar lo siguiente:

$ mcs hello.cs$ mono hello.exeHello world

ASP.NET

 ASP.NET es un gran salto cualitativo desde el modo de realizar aplicaciones con el ASPtradicional o lenguajes como PHP o JSP.

Dispone de dos características que lo hacen novedoso:

1. Programación basada en eventos: la mayoría de los lenguajes con los que serealizan aplicaciones Web, son lenguajes cuyo flujo de ejecución es lineal, esdecir, se ejecuta una acción tras otra, siguiendo un flujo establecido. Desde laaparición de los sistemas operativos gráficos, el desarrollo de aplicaciones se habasado en una programación orientada en eventos, en la cual la ejecución delcódigo no es lineal, si no que depende de los eventos que se vayan recibiendodesde el sistema. En ASP.NET, es posible programar utilizando un modo deprogramación lineal, pero nos ofrece también la posibilidad de programar utilizando un modo basado en eventos.

2. Controles: ASP.NET dispone de un conjunto de controles, que insertados en elcódigo html de la página, nos permiten controlar el contenido de la misma. De estaforma se consigue separar en gran medida el diseño de la lógica de programación,un caballo de batalla muy frecuente en el desarrollo de aplicaciones web.

Programación basada en eventos

Mediante ASP.NET se puede indicar que determinados controles generen un evento quese capture en el servidor. Para ello, cuando el evento se produce en el cliente la página seenvía por POST al servidor, el cual identifica el evento que se ha generado y realiza laacción asociada. Debido a que este tipo de funcionamiento obliga a enviar información alservidor y pedir una nueva página ante cada evento, no se pueden gestionar todos loseventos que se podrían producir en el cliente. Así por ejemplo no tiene sentido capturar enel servidor el evento mouseover, sin embargo sí sería lógico capturar el pulsar sobre un

botón.

Controles Web

Como se ha comentado el objetivo de los controles web es permitir separar la lógica de lapresentación. Para ello hay diversos tipos de controles que se detallarán a continuación.

Estos controles se incluyen en la página web mediante tags que incluyen el atributorunat="server". Con este atributo se le informa al parseador que deberá crear una

Page 10: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 10/16

 

instancia del control correspondiente para poder acceder a su información desde la lógica.En concreto se consiguen las siguientes ventajas utilizando controles de servidor:

y   Acceder a él desde la lógica.y  Mantener el estado entre accesos al servidor y  Generar eventos que pueden ser capturados en el servidor y  Generar código específico para cada navegador 

Los controles más sencillos son los controles HTML de servidor, que heredan deSystem.Web.UI.Control.HtmlControl en el namespace System.Web.UI.HtmlControls.Estos controles son los equivalentes a los controles Html tradicionales. Su principalutilidad es facilitar la migración de aplicaciones existentes. Tienen como desventaja quepese a poder acceder a ellos desde la lógica, su interfaz de acceso no es homogéneo conel resto de componentes y que no pueden responder a eventos.

Un segundo tipo de controles son los denominados Web Controls, que heredan deSystem.Web.UI.Control en el namespace System.Web.UI.WebControls. Estos controlesofrecen un modo de acceso más homogéneo, a la vez que no están limitados a loscontroles existentes en html, sino que se dispone de controles más complejos como:paneles, repeaters, datagrids, listas de opciones«

 A continuación se muestra una comparativa entre los controles html y los controles web:

Controles HTML

y  Facilitan la transición desde páginas html o aspy  Modo de acceso similar al existente en htmly  Se pueden utilizar con entornos de diseño de html

directamentey  Más fácil interactuar con scripts en la parte cliente

Controles WEB

y  Permiten programar basado en eventosy  Controles más potentesy  Se reduce el riesgo de errores, al disponer de un

interfaz más homogéneoy  Soporta ³event bubbling´ en controles anidadosy  Generación específica de html para navegadores

uplevel (html 4.0) y downlevel (html 3.2)

  Aparte de los controles Web existentes se pueden crear nuevos controles de 3 formasdistintas:

y  Derivando directamente de la clase base System.Web.UI.Control. Se les denominafull custom controls.

y  Derivando de un control ya existente. Se les denomina derived custom control.y  Uniendo varios controles existentes. Se les denomina composite custom controls.

 Aparte de estos controles denominados genéricamente Custom Controls, existe un últimogrupo llamado User Controls. Este tipo de controles permite reutilizar bloques de páginas

Page 11: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 11/16

 

en diferentes páginas, son el equivalente a los includes en lenguajes como PHP o JSP. Laventaja de estos controles es que se puede acceder a ellos desde la parte de la lógicaasociada al control y disponen también de la opción de responder a eventos.

Otras características

  Aparte de estas dos características comentadas ASP.NET incluye muchas másfuncionalidades que facilitan en gran medida la programación de aplicaciones web. Entreellas destacan:

y  Caching de páginas y controles: permite indicar que una página o control no segenere bajo cada petición, sino que su resultado html se mantenga en caché y seadevuelto en sucesivas peticiones.

y  Mantenimiento del estado en páginas: se realiza mediante un control oculto en elformulario html de la página (__VIEWSTATE). En este control se guarda en formaencriptada el estado de los controles de la página, de forma que al realizar peticiones de la página al servidor, no sea necesario regenerar todo el html. Estacaracterística se muestra especialmente interesante por ejemplo, cuando se utilizapara cargar en un paso inicial los datos de un formulario con información de unabase de datos y en siguientes peticiones este estado se mantienetransparentemente. Aparte de la información de los controles de la página esposible guardar otros tipos de información que hagan referencia a la página enproceso, en vez de utilizar la sesión del usuario. La conveniencia de utilizar unmecanismo u otro, dependerá de la situación.

y  Caching de información: se disponde de una cache en la cual se puede almacenar cualquier tipo de información. Los elementos de esta cache pueden asociarse conotros elementos de la caché o con archivos externos, para producir actualizaciones en cascada.

y  Las páginas se compilan, con lo que el rendimiento es mayor.y  3 tipos de páginas:

o  Code in page: la lógica y la presentación están en un mismo archivo aspx.o  Code behind con src: la lógica y la presentación están en archivos

independientes, aspx y aspx.cs, por ejemplo. Cuando se solicita la páginapor primera vez, se realiza la compilación del cs.

o  Code behind compilado: la lógica de las páginas reside en archivosseparados, al igual que en el caso anterior, pero el código ha sidoprecompilado en librerías, por lo que no es necesario distribuir los fuentes.

Ejemplos

 A continuación se muestran varios ejemplos de código:

y  hola mundo en ASP.NET con C# embebido descargar  y  hola mundo en ASP.NET con control HTML descargar  y  hola mundo en ASP.NET con control Web descargar  y  hola mundo en ASP.NET con evento de servidor descargar  y  Hola mundo en ASP.NET con evento de servidor, y código en un archivo

independiente compilado on the fly descargar  y  Repeater con información de la base de datos y código precompilado descargar  y  Formulario de registro y código precompilado descargar  

Page 12: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 12/16

 

Servicios Web

El principal objetivo de los servicios web es permitir interconectar aplicaciones realizadasen cualquier tipo de lenguaje, plataforma y sistema operativo, de una manera fácil ycompletamente transparente. Los servicios web permiten la reutilización de software ocompartición de información, utilizando piezas de código generadas y gestionadas por terceros. Tradicionalmente esta forma de trabajo pasaba por la utilización de herramientasy procesos a medida, que estaban completamente ligados a los dos extremos de lacomunicación, es decir al cliente y al servidor. Esto provocaba que hubiera situaciones enla había que rescribir el mismo proceso múltiples veces para diferentes cliente o queaparecieran problemas por la interconexión de diferentes plataformas, por ejemplo.

Mediante la utilización de los servicios web es posible reutilizar y compartir información deuna forma estándar. Esto simplifica los procesos de implementación ya que se utiliza unainfraestructura común para todos ellos y permite reutilizar los servicios desarrollados conun número ilimitado de clientes que cumplan con el estándar.

Para ello los servicios web están basados en el siguiente conjunto de tecnologías:

y  XML: la base de los servicios web es el lenguaje XML. Mediante él se estructura lainformación que intercambian los clientes y el proveedor de un servicio.

y  Web Service Description Language (WSDL): permite especificar en formato XML,las características y el funcionamiento de un servicio web. Esto facilita en granmedida la utilización de un servicio por diferentes clientes.

y  Simple Object Access Protocol (SOAP): basado también en XML, permite lacomunicación entre los clientes del servicio y el propio servicio. Define el formatoXML que deberá utilizarse en las comunicaciones entre clientes y proveedor.Normalmente funciona sobre http, aunque puede hacerlo sobre sobre SMTP,MSMQ«

y

 U

niversal Description Discovery and Integration (U

DDI): permite la publicación delos servicios web, de forma que sean accesibles a otros clientes. Básicamente sondirectorios 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 elque se realiza una petición a Google para obtener los resultados de una búsquedasolicitada por el usuario. El ejemplo funciona bajo ASP.NET y requiere de una clave deutilización para el servicio. Estas claves son gratuitas, con el código viene una pero si fallase puede obtener una nueva desde la página de   APIs de Google. Con la petición del

usuario se realiza una petición al servicio web de Google utilizando un Proxy que vienecon la API, tras lo cual Google nos devuelve la información resultante estructurada, deforma que se rellena un repeater con los datos obtenidos y utilizando una hoja de estilossimilar a la utilizada por Google.

.NET vs Java

Por último, para terminar con esta introducción a la plataforma .NET, una comparaciónrecurrente cuando se habla de .NET, ya sea hablando de la implementación de Microsoft,

Page 13: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 13/16

 

o de Mono. Muchos desarrolladores preguntan la necesidad de definir una nuevatecnología o incluso un nuevo lenguaje, cuando en definitiva Java realiza cosas similares.

  A continuación se intenta explicar estas diferencias pero partiendo de la base de queambas tecnologías son compatibles. .NET es una tecnología más en el mundo dedesarrollo, que ofrece nuevas posibilidades a los desarrolladores, pero cuyo objetivo no

es eliminar a Java, lo cual por otra parte, sería imposible debido a la gran cantidad decódigo escrito para esta plataforma.

Es importante tener en cuenta que .NET no es algo 100% novedoso, es básicamente unareunión de tecnologías muy interesantes, e integradas de forma eficaz, eficiente yelegante. La mayoría de estas tecnologías existían ya, al igual que también existían desdehacía mucho tiempo las tecnologías implementadas en Java.

Plataformas

Java .NET

Java funciona sobre un gran número deplataformas

.NET funciona en Windows con laimplementación de .NET de Microsoft yen Linux, FreeBSD y Windows con laimplementación de Mono, aunque seprevé dar soporte a más plataformas

J2EEJ2EE y .NET ofrecen básicamente lasmismas funcionalidades, aunque dediferente forma.

Java no permite la interoperabilidad demúltiples lenguajes. Es posible compilar abytecode desde múltiples lenguajes, perono es posible alcanzar el nivel deinteracción que se da en .NET

.NET permite desarrollar en diferenteslenguajes y que el código generado seacompletamente utilizable desde otrasaplicaciones en otros lenguajes.

Java no permite la intercomunicaciónentre aplicaciones de una forma tansencilla como en .NET

.NET utiliza SOAP (XML+http) paracomunicar aplicaciones. Esto permitecomunicar aplicaciones hechas encualquier tecnología o plataforma con

otras.

C# vs Java

En lo que respecta a las diferencias entre estos lenguajes, hay que decir queprácticamente todo lo que se puede hacer en C# se puede hacer en Java. C# ofrece unconjunto de construcciones que permiten facilitar la vida al desarrollador, aunque estosconstructores se pueden simular también en Java. Sin embargo la forma de hacer este

Page 14: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 14/16

 

tipo de cosas es más consistente y sencillo en C#, aunque con el ³incoveniente´ de tener que tener que conocer un número mayor de contructores que en Java.

Java utiliza una filosofía, de si algo se puede hacer con clases, no es necesario crear unconstructor específico. Java mejoró en muchos aspectos C++, como por ejemplo con laeliminación de punteros, archivos header, o la existencia de una clase base común. Una

característica de estas simplificaciones es que hacen el desarrollo más sencillo, pero el noutilizar algunos de los constructores que se ven a continuación, puede provocar que eldesarrollo sea más complejo y el código menos claro.

Java 1.4 C# 1.0

Java no dispone de un constructor depropiedades. Los atributos de las clasesse modifican mediante métodos set* yget*, aunque el lenguaje no obliga e ello.

C# dispone de propiedades, un patrónmuy utilizado sobretodo en entornosRAD.

Java no dispone de IndexersEn C# se permite el manejo de una clasecomo si fuera un array.

Java no dispone de delegados

Un delegado en .NET se puede ver comouna manera segura de utilizar punteros afunciones. Un delegado puede contener también llamadas a más de un método,de forma que es muy sencilloimplementar el patrón observer, el cual

se utiliza con profusión en laprogramación basada en eventos por ejemplo.

Java no soporta eventos

C# da soporte al uso directo de eventos.  Aunque la utilización de eventos en laprogramación actual es algo muyhabitual, no se ha realizado demasiadoesfuerzo en simplificar su manejo. C#utiliza delegados y la palabra clave eventpara ofrecer un modo sencillo de

gestionar eventos.

Java no soporta enumerados. Para ellose utilizan clases con constantesnuméricas (final static). Esto puede ser una fuente de problemas en el sentido enque no se garantiza del todo la seguridad

C# soporta enumerados. Losenumerados permiten especificar gruposde elementos de una forma sencilla ysegura, por ejemplo, los días de la

Page 15: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 15/16

 

de tipos. semana.

Java no contempla el constructor foreach

para recorrer colecciones.

C# permite la utilización del constructor foreach para recorrer todas aquellas

colecciones de elementos que cumplanun determinado interfaz.

Por defecto en Java todos los métodosson virtuales.

En C# hay que indicar qué métodos sedesea que sean virtuales con la palabrareservada virtual, e indicar los métodossobrecargados con la palabra override.

Java tiene información de los datos en elcódigo, pero a un nivel muy inferior al deC#. Utiliza /** */ y @tag para incluir información sobre el código, aunque estainformación no se pasa al bytecode.

C# utiliza atributos para cualificar métodos, atributos, clases« con el fin depasar información al runtime y que esté

disponible en tiempo de ejecución. Hayun conjunto de atributos disponibles,aunque se pueden crear específicos.Podemos utilizar atributos paraespecificar cómo se debe serializar unaclase en XML, o qué evento de uncomponente es al que una herramientaRAD debería asociar una acción por defecto, al hacer el usuario doble clic enel componente.

En Java una aplicación se divide enpaquetes, cuya estructura jerárquicadebe coincidir con la estructura decarpetas que forman el proyecto.

En C# el código se organiza en archivos,namespaces y assemblies. Losnamespaces permiten agrupar clases deforma que se eviten conflictos denombres. Los assemblies son los .dll o.exe que se generan al compilar unconjunto de archivos. Un assembly puedecontener un número indeterminado denamespaces, y un namespace puedeestar repartido entre varios assemblies.

Los archivos que forman un assembly oun namespace, no tienen ningunalimitación en cuanto a su ubicación encarpetas, ya que los namespaces en unconcepto únicamente lógico.

Page 16: Introduccion Punto Net

5/12/2018 Introduccion Punto Net - slidepdf.com

http://slidepdf.com/reader/full/introduccion-punto-net 16/16

 

Java no permite trabajar con punteros

C# permite trabajar con punteros. Paraello es necesario marcar la zona dóndese manejan dentro de una construcciónunsafe, y compilar el código con el flagunsafe.