Logged in as 38.107.191.99 : Discusión para esta IP Registrarse/Entrar
Views:
Herramientas:

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.


Imagen:Overview-asmx.png


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.

Comunicarse con otros sistemas en la red

Acceder a objetos remotos

Invocar procedimientos remotos con XML

Datos seguro usando "Prying Eyes"