Introducción a la plataforma .NET y Mono
May 11th, 2005Ejemplos 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:
- 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.
- 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:
|
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
delicious
menéame
fresqui

May 12th, 2005 a las 3:56 pm
!!muy interesante!! gracias !!!
me lo leeré más tranquilamente, pero a primera vista, para los que venimos del mundillo de Java exclusivamente, me parece una introducción muy buena.
(solo por decir algo)
Aunque, la comparativa de Java con C# quizás debería estar más actualizada con el JDK 1.5, que tiene enumerados, bucles foreach sobre las colecciones…
July 2nd, 2005 a las 9:13 pm
esta muy interesante!!!!!!!!!!!
creo que es super intersante la informacion detallada, para quienes quieren ponerse al dia en la tecnologia, pero deberian actualizar mucho mas!!!
=oD
July 19th, 2005 a las 8:55 pm
Me gusto yo boje mono pero no se como se instala me gustaria saber instalar mono en mac os x tambien quiero instalar el mod_mono para apache y xsp. gracias esta pag. es muy buena
July 20th, 2005 a las 11:15 am
Está mono ya terminado para soportar web services?
July 23rd, 2005 a las 12:20 pm
Mono soporta web services de forma completa en este momento. Yo he hecho algunas pruebas consumiendo servicios generados desde aplicaciones .NET de microsoft, así como servicios web buscados por internet y funciona a la perfección. En cuanto a la parte de ofrecer servicios web sobre mono, lo he probado poco pero me ha funcionado correctamente, aparte sí que hay gente que lo está utilizando bastante.
July 27th, 2005 a las 10:20 pm
Es buen articulo.
Sabes quisiera saber los pasos para correr un ejemplo de ASP.net con apache en linux fedora:
me descargue el mono 1.1 para fedora y los servidores web mon_mono y xsp que hago ??????????
July 28th, 2005 a las 10:39 am
Lo que te recomiendo es que antes de ponerte a configurar apache con mod_mono, pruebes directamente a ejecutar una página de test hecha en ASP.NET, utilizando directamente xsp.exe
Para ello créate una carpeta con el archivo ASP.NET que vayas a utilizar y desde una consola ejecuta “mono xsp.exe”, para que se lance el servidor. Puedes utilizar “mono xsp.exe –help” para obtener las distintas opciones soportadas. Asegúrate de utilizar un puerto distinto al 80 si tienes apache corriendo, por ejemplo el 8080.
Ahora ya podrías abrir el navegador y acceder a la página ASP.NET de prueba, utilizando por ejemplo: http://localhost:8080/test.aspx
August 4th, 2005 a las 3:41 pm
Hola, sabes, no entiendo porque tendría que probar una pagina asp.net con xsp.exe si al final quiero pobrar mi pagina asp.net en LINUX con apache y para apache necesito saber instalar el mod_mono. Me podrias explicar porque tendría que hacer lo anterior.
Gracias.
August 4th, 2005 a las 10:36 pm
Basicamente es para acotar posibles errores. Apache utiliza mod_mono para servir páginas asp.net y éste se comunica por debajo con xsp.exe para procesar la petición. Por eso lo que te recomiendo es que si haciendo la instalación normal de apache, mono y mod_mono te encuentras con algún problema, pruebes que xsp.exe funciona correctamente y una vez probado utilices mod_mono para comunicarlo con apache. Si lo pruebas todo a la vez vas a tener más difícil saber si no te funciona porque esté mal configurado apache, mod_mono, xsp o mono.
August 8th, 2005 a las 4:32 pm
De donde consigo el instalador de CLR (Runtime)
Tengo que realizar un instalador para eso necesito un CLR
donde cvonsigo o viene con los instaladores de Visual Studio 7.0
Pronto
August 8th, 2005 a las 9:13 pm
El instalador del .NET Framework de Microsoft lo puedes obtenerlo en http://www.microsoft.com/downloads/details.aspx?displaylang=es&FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3 y el de Mono en http://www.mono-project.com/Downloads
August 16th, 2005 a las 12:00 am
Hola, me gustaria saber si se pueden correr las paginas asp.net desde el dreamweaver, es decir, en lugar de utilizar el IIS utilizar apache con el mod_mono.
August 25th, 2005 a las 8:02 am
Hola, quisiera que me dieran una direccion web para descargar el compilador mas actual de C#.Net o algo relacionado gracias
September 19th, 2005 a las 4:19 pm
Comence a migrar un proyecto realizado en .net con C#. Descargue el mono 1.1.8.3 que viene con el servidor para asp.net XSP. Pero no se cómo ejecutar la aplicacion. Aguien me puede decir cómo?
November 15th, 2005 a las 7:29 pm
Hola,
estoy haciendo mi proyecto Fin de Carrera sobre la plataforma .NET y los webservices, y de todas las páginas y foros que he leído éste es el mejor.
A Fernix no le entiendo bien la pregunta, la aplicación de mono se lanza escribiendo en la consola “mono nombre_del_ejecutable” y para conseguir el ejecutable escribes el código y lo compilas escribiendo “mcs nombre_del_programa”. mcs es el compilador de mono.
Un saludo.
November 15th, 2005 a las 7:30 pm
que se me había olvidado!
Felicidades por la página Patxi!
November 15th, 2005 a las 8:08 pm
Hola NETXO, Fernix se refiere a cómo ejecutar una aplicación web. Mediante el comando “mono ejecutable” lanzas una aplicación digamos de consola o escritorio, pero si lo que has preparado es un conjunto de páginas web realizadas con ASP.NET, hay que lanzar antes un servidor al que pedirle estas páginas. De esto se encarga xsp.exe, puedes ejecutarlo y lo que crea en un demonio que escucha en el puerto seleccionado las peticiones que se le vayan realizando. Aparte de esta opción, que es recomendable únicamente para pruebas o desarrollo, lo conveniente es utilizar como servidor web apache y conectarlo con mono mediante el módulo mod_mono.
November 17th, 2005 a las 7:37 pm
Hola,
quiero hacer unas pruebas con xsp y al escribir “mono xsp.exe ” en la consola , me sale lo siguiente:
cannot open assembly xsp.exe
¿estoy haciendo algo mal?
gracias.
November 17th, 2005 a las 8:21 pm
Parece que ya va todo ok, con poner “xsp” ya se me ha lanzado el servidor.
November 18th, 2005 a las 11:32 am
la introduccion de la plataforma.net y mono es muy buena
November 22nd, 2005 a las 7:36 pm
Hola,
tengo una duda sobre los servicios web; quiero hacer un servicio web y he encontrado información sobre servicios web de ASP.NET (.asmx), todo los servicios web son de ASP.NET o ASP.NET es un tipo de servicios web…?
Gracias.
November 23rd, 2005 a las 1:27 pm
ASP.NET es el nombre que dio Microsoft a la parte del Framework encargada de servir páginas web. Las páginas basadas en ASP.NET tendrán normalmente la extensión .aspx. Una parte de ASP.NET son los servicios web, que suelen tener la extendión .asmx.
De todas formas ten en cuenta, que así como es posible hacer páginas web con otras tecnologías diferentes a ASP.NET, también es posible desarrollar servicios web con otras tecnologías, es suficiente que éstas entiendan el protocolo SOAP y se encarguen de la gestión de los mensajes XML que se intercambian. Esto permite la interconexión de sistemas que utilizan distintas tecnologías o plataformas, utilizando para ello los servicios web como “lingua franca” en su comunicación.
November 24th, 2005 a las 9:29 pm
Hola,
estoy pensando en hacer un servicio web que pueda ser accedido desde un móvil. En ese caso tendría que añadir algún módulo escrito en WAP? o se intercala WAP en el código C# del servicio WEB?… vaya que tengo un poco de lío con todo esto, creo que algo se me está escapando.
Si alguien me puede echar una mano…
Gracias.
December 5th, 2005 a las 8:56 pm
Hola,
Necesito correr un sistema hecho en asp.net en visual studio en un servidor linux q tengo q hacer???
espero y me puedan ayudar.
December 15th, 2005 a las 9:10 pm
Excelente para alguien que no utilzo, ni sabe programar java
December 29th, 2005 a las 7:25 pm
Hola,
estoy programando en mono con c#. He hecho un programa de con variables funciona, pero cuando cambio estas variables por propiedades al ejecutar el programa me da una excepción de “violación de segmento mono –debug (y el path del archivo)” alguien sabe a qué se debe esto?
gracias y felices fiestas para tod@s!
January 4th, 2006 a las 12:22 am
Cuales serian las ventajas que ofrece .net para trabajar con graficos que no proporciona java. Alguien podria aclararmelo.
Gracias
January 6th, 2006 a las 7:30 pm
Hola a todos, quiero entrar al mundo de mono, estoy trabajando sobre suse 10 y al momento de cargar el mono me sale un error en esta parte
initialize… Main Windows
estoy utilizando la ultima version de mono, sinceramente ya no se que mas hacer instale todos los paquetes de mono para suse 10
Alguien puede ayudarme con esto
January 21st, 2006 a las 10:42 pm
Hola a todos, estoy haciendo un proyecto en .NET y necesito crear una grafica y no se como hacerla.
Si alguien sabe por favor espero que me ayude.
Muchas Gracias
January 25th, 2006 a las 6:57 pm
Hola amigos, quisiera saber como puedo instalar la extension de mono para php, (PHP Mono Extension), ya que me descarge el tar.gz de php.net y me dice que tengo que ejecutar un archivo llamdo buildconf, pero no esta este por ningun lado. alguine me podri ayudar por favor?, saludos.
pd: tengo suse 10.0 y php 5
January 25th, 2006 a las 7:30 pm
Hola,
tengo un programa escrito en c# y quisiera saber qué pasos tengo que seguir para convertirlo a aspx, me podéis decir dónde puedo encontrar esta información?
gracias!
March 8th, 2006 a las 7:05 pm
Hola a todos, en www.monohispano.es tenéis muchas de estas cuestiones resueltas con ayudas y tutoriales. También hay una lista de correo al respecto.
También he tenido problemas con la instalación de la última versión de mono en SUSE 10
March 16th, 2006 a las 3:28 am
Esta bien chida esta pagina yo soy alumno de la ut en santa catarina n el area de infomatica me gusta mucho el diseño de paginas en ASP.net nomas me gustaria q en el area de descargas pusieran al alcanse punteros ,iconos nuevos y por que no gif’s con movimiento para mejor desempeño de la informatica y asi contagiarse todos bueno grasias si tienen alguna novedad para la novatada en .NET aganla saber al correo mio
es lalo_anaid@hotmail.com
April 5th, 2006 a las 8:59 am
Hola!!!
Pues gracias por leer esto primero que nada. Apenas estoy aprendiendo a usar todo esto de .net y necesito el compilador de C#pero no lo encuentro en Internet ¿Alguien podría ayudarme???
Gracias!
April 5th, 2006 a las 9:41 am
Hola Wendy, puedes obtener el compilador con el SDK de microsoft si estás en entornos windows, o bajándote Mono si quieres probar con este proyecto opensource, que te funcionará tanto en windows como en linux.
May 15th, 2006 a las 2:38 am
Hola. soy Yami, estudio programación y estoy dando PHP y Visual.Net. mi problema es que el Apache simplemente no corre aun cuando le cambie el puerto. Me han dicho que existe un “semaforo” que permite a ambos programas trabajar, pero todavia no me han sabido decir como se llama el programa. Alguno de ustedes conoce cual es el nombre de ese “semaforo”.
Me gustaría obtener la información pues trabajo ambos lenguajes y no puedo trabajar bien con php por culpa de eso
Les agradezco de antemano su ayuda
June 10th, 2006 a las 1:21 am
ola, estuve leyendo sobre mono y me parece muy interesante. Quisiera que me dieran mas informacion sobre mono, cuales son sus utilidades y bueno exactamnete todo lo que puedan enviar a mi correo seria bienvenido…
July 12th, 2006 a las 8:16 pm
hola mil disculpoas por esta pregunta pero estuve buscando una repuesta a mis preguntas pero no las encontre y quisiera que me ayuden porfa:
mis preguntas son las sigueintes:
1¿se puede actualizar un proyecto de visual basic 6.0 en visual basic.net?
2¿se puede instalar el visual basic.net en un sistema operativo linux?con respecto a esta pregunta solo se que si se puede mediante el proyecto mono pero no se porque o de que modo.
3¿cuando fue lanzado la primera version del visual estudio.net y con cuantos lenguajes?
porfavor quisiera que ayeden con estas preguntas se los agradecere bastante..
July 24th, 2006 a las 7:40 am
Para el que preguntó por el “semaforo” ese programa se llama EasyPHP solo haz una consulta en google y ya esta!
July 28th, 2006 a las 5:20 pm
interesante…..Falta informacion
September 1st, 2006 a las 7:47 pm
Hola
Mi nombre es rodrigo lacalle y tengo el siguiente problema,
Al cargar una pagina con mono en apche me abre sin problemas pero siempre sean extencion aspx , el problema que la pagina esta entera con extencion asp y esta extencion en ves de abrirla me la trata de descargar.
Alguien me podria ayudar
October 31st, 2006 a las 4:37 pm
Hola si alguien le interesa visitar como instalar mono en Fedora 5
http://marcoachs.blogspot.com/2006/10/instalar-mono-en-fedora-core-5.html
November 11th, 2006 a las 7:56 am
Hola, estoy desarrolando un Web Service en .NET y necesito migrarlo a Mono sobre Linux Red Hat para consumirlo desde PHP. Alguien me puede dar algunos consejos?? Gracias de antemano.
PD: El foro buenisimo
November 13th, 2006 a las 1:01 am
Pues es muy posible que no tengas que hacer nada, aunque dependerá del servicio web que hayas desarrollado. Si ya tienes hecha la instalación de Mono en Linux, seguramente te valdrá con copiar y pegar el servicio web.
un saludo
January 17th, 2007 a las 6:52 pm
Hola, estoy trabajando con Mono, con xsp. Tengo el siguiente problema, creé un proyecto en visualstudio 2005 bastante sencillo, sumar dos números, y el proceso invoca a un dll que se encarga de hacer la suma y retornar el resultado a la página .apsx . Mi problema es que quiero ejecutar ese mismo código en mono, pero no me resulta y creo que el problema es debido a que no puede dar con la librería, pues me arroja este error:
error CS0246: The type or namespace name “libreria” could not be found. Are you missing using a directive or an assembly reference?
Agradecería tu ayuda, gracias !!!
January 18th, 2007 a las 10:09 am
Hola rommel, prueba a copiar la librería dentro de la carpeta bin de la aplicación web. Es en esa ruta donde en una aplicación web se buscan por defecto las librerías. Si eso te funciona, luego ya puedes buscar otras alternativas como guardarla en el GAC si la necesitas para más webs.
January 25th, 2007 a las 5:06 am
hola, podrias publicar esta informacion en un solo archivo para bajarla?
gracias
January 25th, 2007 a las 10:06 am
Puedes utilizar el botón de versión para imprimir, para obtener una página con todos los contenidos del artículo, incluidos los comentarios. Luego puedes guardar la página como html, pdf o cómo quieras
May 2nd, 2007 a las 9:15 pm
Hola a todos, porfavor necesito que me colaboren explicando que es una plataforma y una tecnologia y hacer un comparativo entre una plataforma java y .net pero como plataformas. Muchas Gracias
May 22nd, 2007 a las 1:07 am
Hola a todos, apenas estoy trabajando en un sistema, que debo realizalo en Asp.net (aspx), en Mono, utilizando c#. he instalado el compilador de mono, y utiliso xsp, como servidor, mi pregunta es: ¿el servidor xsp, compila las paginas aspx, o solo las interpreta?, pregunto esto debido a: que tengo una aplicacion en VS.net con c#, y asp.net, me marca un error, pero esta parte del codigo ya la quite, y me sige marcando el mismo problema….
agradezco su tiempo y si alguien sabe algo, favor de enviarme un correo, gracias. apenas estoy empezando en el mundo de asp.net
June 9th, 2007 a las 10:23 pm
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.
June 29th, 2007 a las 8:02 pm
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
December 4th, 2007 a las 9:03 am
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…
December 7th, 2007 a las 4:25 pm
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…