Introducción a la plataforma .NET y Mono

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");   
      }
   }
}

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.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 características que lo hacen novedoso:

  1. Programación basada en eventos: la mayoría de los lenguajes con los que se realizan aplicaciones Web, son lenguajes cuyo flujo de ejecución es lineal, es decir, se ejecuta una acción tras otra, siguiendo un flujo establecido. Desde la aparición de los sistemas operativos gráficos, el desarrollo de aplicaciones se ha basado en una programación orientada en eventos, en la cual la ejecución del código 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 programació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 el código html de la página, nos permiten controlar el contenido de la misma. De esta forma 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 que se capture en el servidor. Para ello, cuando el evento se produce en el cliente la página se envía por POST al servidor, el cual identifica el evento que se ha generado y realiza la acción asociada. Debido a que este tipo de funcionamiento obliga a enviar información al servidor y pedir una nueva página ante cada evento, no se pueden gestionar todos los eventos que se podrían producir en el cliente. Así por ejemplo no tiene sentido capturar en el 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 la presentació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 atributo runat="server". Con este atributo se le informa al parseador que deberá crear una 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:

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

Los controles más 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 migración de aplicaciones existentes. Tienen como desventaja que pese a poder acceder a ellos desde la lógica, su interfaz de acceso no es homogéneo 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 más homogéneo, a la vez que no están limitados a los controles 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
  • Facilitan la transición desde páginas html o asp
  • Modo de acceso similar al existente en html
  • Se pueden utilizar con entornos de diseño de html directamente
  • Más fácil interactuar con scripts en la parte cliente
Controles WEB
  • Permiten programar basado en eventos
  • Controles más potentes
  • Se reduce el riesgo de errores, al disponer de un interfaz más homogéneo
  • Soporta «event bubbling» en controles anidados
  • 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 formas distintas:

  • 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 genéricamente Custom Controls, existe un último grupo llamado User Controls. Este tipo de controles permite reutilizar bloques de páginas en diferentes páginas, 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 lógica asociada 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ás funcionalidades que facilitan en gran medida la programación de aplicaciones web. Entre ellas destacan:

  • Caching de páginas y controles: permite indicar que una página o control no se genere bajo cada petición, sino que su resultado html se mantenga en caché y sea devuelto en sucesivas peticiones.
  • Mantenimiento del estado en páginas: se realiza mediante un control oculto en el formulario html de la página (__VIEWSTATE). En este control se guarda en forma encriptada 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. Esta característica se muestra especialmente interesante por ejemplo, cuando se utiliza para cargar en un paso inicial los datos de un formulario con información de una base de datos y en siguientes peticiones este estado se mantiene transparentemente. Aparte de la información de los controles de la página es posible guardar otros tipos de información que hagan referencia a la página en proceso, en vez de utilizar la sesión del usuario. La conveniencia de utilizar un mecanismo u otro, dependerá de la situación.
  • 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 con otros elementos de la caché o con archivos externos, para producir actualizaciones en cascada.
  • Las páginas se compilan, con lo que el rendimiento es mayor.
  • 3 tipos de páginas:
    • Code in page: la lógica y la presentación están en un mismo archivo aspx.
    • 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ágina por primera vez, se realiza la compilación del cs.
    • Code behind compilado: la lógica de las páginas reside en archivos separados, al igual que en el caso anterior, pero el código ha sido precompilado en librerías, por lo que no es necesario distribuir los fuentes.

Ejemplos

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

  • 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 código en un archivo independiente compilado on the fly descargar
  • Repeater con información de la base de datos y código precompilado descargar
  • Formulario de registro y código precompilado descargar

Páginas: 1 2 3 4 5 6

Twitter Digg Delicious Stumbleupon Technorati Facebook Email

60 Respuestas para “Introducción a la plataforma .NET y Mono”

  1. hola Patxi sabes me piden que haga un trabajo todos sobre mono ventajas, y modos de intalarse en diversas plataformas kisiera saber si tienes algunos documentos ke me puedan ayudar a realizarlo poara poder hacer un tutorial te lo agradeceria muchisimo saludos desde tabasco.

  2. Hola:
    me parece muy interesante el articulo. Yo tambien estoy iniciandome en este mundo y como deben saber tengo muchas dudas, por el momento quisiera que trataran de ayudarme con esta:

    si voy a migrar un sitio donde los .aspx estan en una carpeta y los .ascx estan en otra y asi, como resolver los problemas que da mod_mono con los caminos ?

    les agradeceria mucho que alguien me ayudara o me diera alguna idea.Cualquier comentario es valido.
    Si no es mucha molestia quisiera que me escribieran a bricelno@gmail.com

    Muchas gracias a todos

  3. Hola.. to2
    Muy interesante articulo ademas de completo.. me acabo de solucionar dudas de concepto que tenia..

    Una pregunta: La plataforma .net es solo para redes ?.. es decir soy programador y estoy buscando alternativas a VisualBasic, Vfox, las tipicas de siempre.. me encontre son SharpDevelop. que dice que permite programa en C# pero quiero hacer aplicativos normales ,, esta herramienta de programacion me sirve o la orientacion es diferente…

  4. Hola Jose, en efecto, con .NET puedes desarrollar cualquier tipo de aplicativo, desde aplicaciones de escritorio hasta aplicaciones web empresariales. Para ello puedes utilizar multitud de entornos de desarrollo, como Visual Studio, SharpDevelop, o incluso simplemente el editor de notas y el compilador del SDK. Además también puedes programar en diferentes lenguajes, como C#, Visual Basic, Delphi, etc…

  5. Hola Mi Nombre es Rafael.

    He leido algo sobre el proyecto mono y pienso que el proyecto es muy interesante, y precisamente por esto quiero ver si puedo migrar una aplicacion web desarrollada en VB .net a CENTOS 5, mi aplicacion consta con web services y conexiones a bases de datos SQL Server 2005, ya baje los programas de instalacion de MONO para Windows y tambien para CENTOS 5, pero el problema esque no se como instalar la parte de CENTOS 5, si alguien me puediese decir que tan bueno es el proyecto en este momento para intenetar migrar mi aplicacion para que funcione sobre Linux se los agradeceria.

    Aparte no se si alguien tenga documentacion acerca de como instalar mono sobre CENTOS 5 paso a paso y como probar mi aplicacion, se los agradeceria infinitamente.

    Saludos y felicidades por esta pagina.

  6. Disculpa, pero podrias ayudarme para instalar mono sobre fedra core 8?, recien estoy empezando con el desarrollo sobre linux, porque antes utilice SharpDevelop pero para windows y ahora quiero intentarlo con linux, porfaa

  7. Hola compañeros de eslomas.com:
    Quisiera saber dentro de la plataforma .net, refiriéndome no solo a .net Framework sino también a el paquete de Visual Studio.net y todo lo que compone la tecnología .net.,por donde inicio mi capacitación para comprenderla mejor y poder aplicarla adecuadamente.

    Gracias

  8. ay no c que es eso ocupo q me digan es d tarea tengo examen porfas alludenme plis jejje bye

  9. hola quisiera saber si MONO es un framewor o es una plataforma

Trackbacks/Pingbacks

  1. Links Interesantes (IV) : alfredo hernández - 09. Oct, 2008

    […] Mono 2.0: No es un standar nuevo, para aquellos que no tienen idea de que es mono, es una implementacion del Framework .NET desarrollada por Miguel de Icaza y unos cuantos mas, si quieres mas informacion en este enlace lo obtendrás. […]