Libro para desarrolladores en Mono:Capítulo 9
De Mono Hispano
Contents |
Introducción
Como cualquier plataforma de desarrollo de las llamadas de ultima generación, es importante que haga uso de la conectividad de redes y comunicación con otras aplicaciones. En esta área tienen cabida :
- Conexiones con bases de datos
- Conexiones a nivel de TCP/IP
- Protocolos de Alto nivel como HTTP,SOAP y XML-RPC
Solo por dar algunas aplicaciones de ejemplo.
Con estas funcionalidades se pueden construir aplicaciones que en el ámbito comercial son llamadas "Aplicaciones Web Enable" y que representan un valor agregado importante en las aplicaciones, aun que no se descarta su uso en ambientes Cliente-Servidor dentro de una Intranet.
Configurando ASP.NET (xsp y mod_mono)
El uso de ASP.Net para desarrollar aplicaciónes web, es uno de los apartados mas importantes y usados de la plataforma .Net.
Hasta hace poco tiempo la única opciones para ejecutar las aplicaciones desarrolladas para ASP.Net era utilizando el servidor IIS (Internet Information Services) el cual solo es funcional en una máquina con el Sistema Operativo Windows 2000 o Superiores. Este requerimiento de entrada representa un costo en licencias que muchos no están dispuesto a asumir si esto no es su ambiente de trabajo nativo.
Lo anterior presentaba un inconveniente para los que deseaban hacer uso de las funcionalidad de la plataforma .Net pero sin dejar de lado su infraestructura instalada, como por ejemplo servidores con: Solaris, Linux, Mac OS X y otros.
Gracias a Mono se a desarrollado una alternativa al servidor IIS, llamado XSP con la ventaja de que se puede utilizar en las plataformas en la que Mono sea funcional, esto representa además de un ahorro en licencias la oportunidad de reusar las plataformas existentes atrayendo a nuevo adeptos.
Adicional al XSP existe un modulo para el apache llamado mod_mono el cual permite su integración al servidor Apache, haciendo accesible nuestras aplicaciones desde nuestro sitio web adicional servido por apache, eliminando el uso de puertos alternos que podría agregar complejidad no deseada a nuestros proyectos
Instalación del server XSP
XSP es un servidor simple, que puede ser usado para probar aplicaciones ASP con un esfuerzo mínimo. El código esta disponible desde el repositorio svn
La manera más sencilla de iniciar el servidor XSP es colocarse en el directorio raíz de tu aplicación, iniciar el servidor y este comenzará a recibir peticiones en el puerto 8080 por default, para modificarlo desde la consola ejecuta
xsp --port 8082
Al momento de instalarse XSP añade un conjunto de páginas, controles y web services que pueden ser usados para probar el servidor y ver como luce ASP .Net sobre linux.
Por ejemplo puedes ejecutar:
$ cd /usr/lib/xsp/test $ xsp Listening on port: 8080 Listening on address: 0.0.0.0 Root directory: /home/cvs/mcs/class/corlib/Microsoft.Win32 Hit Return to stop the server.
Y accesas http://localhost:8080 para ver las páginas de ejemplo
Instalación de mod_mono (opcional)
Mod_Mono es un modulo para Apache que permite utilizar este servidor para acceder a páginas ASP.
El modulo pasa las peticiones de las páginas ASP a un programa externo, mod-mono-server, que maneja las peticiones. La comunicación entre el modulo de Apache y mod-mono-server se establece a través de Unix socket o TCP socket.
Requerimientos
Para utilizar mod_mono necesitas tener instalado Apache 1.3/2.0/2.2 mono, xsp y mod_mono.
Configuración
En el archivo httpd.conf (generalmente esta en /usr/local/apache2/conf) necesitas añadir la siguiente configuración:
Include /etc/apache2/mod_mono.conf
Recuerda verificar que el archivo mod_mono.conf se encuentre en la ruta señalada en el archivo httpd.conf
Posteriormente debe ser reiniciado el servidor ejecutando
$ cd /usr/local/apache2/bin $ ./apachectl restart
ASP 2.0
Para utilizar mod_mono con páginas ASP 2.0 necesitas añadir la siguiente línea al archivo httpd.conf
MonoServerPath default /usr/bin/mod-mono-server2
Ya que por default mod_mono se encuentra direccionado hacia /usr/bin/mod-mono-server
Configuracion de Apache en windows
Para utilizar Apache en Windows necesitas instalar el modulo mod_aspdotnet que puede ser descargado desde este enlace y configurar el archivo httpd.conf que por default se instala en el directorio C:\Archivos de Programa\Apache Group\Apache2\conf\httpd.conf
LoadModule aspdotnet_module “modules/mod_aspdotnet.so”
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo
Ejemplo de una aplicación Web usando xsp + mod_mono
Después de instalar mod_mono, modificar el archivo httpd.conf y reiniciar el servicio de apache puedes copiar los ejemplos que vienen por default en XSP para comprar la correcta ejecución con apache y mod_mono
$ cd /usr/lib/xsp/test $ cp * -r /usr/local/apache2/htdocs
y desde el browser entra a la dirección
http://localhost/index.aspx
Ejecutando Applicaciones Web
Desarrollando Servicios Web
(FIXME: explicar que son servicios web, componentes, proxy, ...)
Los servicios web en se deben de escribir en ficheros con extensión .asmx para que XSP sea capaz de tratarlos como tal. Un ejemplo simple de servicio web podría ser el siguiente:
<%@ WebService Language="C#" Class="Educado" %>
using System.Web.Services;
[WebService(Namespace="http://www.monohispano.org/", Description="Educación.")]
public class Educado{
[WebMethod(Description="Saluda de forma educada.")]
public string Saluda()
{
return "Hola a todos.";
}
[WebMethod(Description="Se despide educadamente.")]
public string Despide()
{
return "Hasta luego.";
}
}
Este archivo podemos guardarlo como educacion.asmx, por ejemplo. Para probarlo solo debemos de ejecutar xsp en el mismo directorio en el que se encuentre nuestro fichero y acceder a través de un navegador. Por defecto xsp se lanza en el puerto 8080, así que lo normal será acceder a http://localhost:8080/educacion.asmx
Como veréis, el xsp ha creado una página con la descripción de los servicios web que hemos escrito, generación de código en linea para usar el proxy, e información de parámetros de los métodos exportados así como los valores que devuelven. Todo de forma automática.
A pesar de que dispongamos del código del proxy en esa web generada, muchas veces nos será mucho más cómodo obtenerlo directamente con el comando wsdl. Este comando lo que hace es convertir el XML correspondiente a la descripción de los métodos, como serializarlos, ... a código compilable.
$ wsdl http://localhost:8080/educacion.asmx Writing file 'Educado.cs'
Para compilarlo necesitaremos usar la librería de servicios web:
$ mcs -r:System.Web.Services Educado.cs -target:library
Esto nos habrá generado Educado.dll, que nos permitirá acceder a los métodos de forma remota. Vamos a probarlo escribiendo un sencillo programa que llame a los metodos Saluda() y Despide().
using System;
class Test{
public static void Main()
{
Educado e = new Educado();
string saludo = e.Saluda();
string despedida = e.Despide();
Console.WriteLine(saludo);
Console.WriteLine(despedida);
}
}
Este archivo Test.cs lo compilaremos asi:
$ mcs Test.cs -r:Educado.dll
y nos generará Test.exe, que si ejecutáis imprimirá lo siguiente en pantalla:
$ mono Test.exe Hola a todos. Hasta luego.

Powered by MediaWiki