Usando Mono con WebMatrix y ASP.Net MVC3

Bueno SQLeros, como ven el titulo del post vamos a hacer un pequeño ejercicio con WebMatrix, ASP.Net MVC3 y Mono. Usando un servidor ubuntu corriendo apache junto con mono 2.10. Para servir las páginas .cshtml, no perdamos tiempo y empezemos, lo primero que tenemos que hacer es crear un nuevo proyecto en WebMatrix como podemos observar en la imagen:



1. Seleccionamos la opción sitio a partir de plantilla




2. Seleccionamos la plantilla, sitio vació le escribimos un nombre y damos clic en aceptar.



3. Ya que nos presente la interfaz principal en la sección Archivos, damos clic derecho sobre la carpeta y seleccionamos la opción del menú desplegable Nuevo archivo...



4. Seleccionamos el tipo de archivo CSHTML, que es que nos interesa para este caso... :), hasta ahora muy fácil


5. En la linea número 2 vamos a agregar cierta lógica, es decir, lo que va a hacer nuestra página.

@{
    string frase = "";
    if(IsPost){
        frase = Request["frase"];
        frase = frase.Replace("a","afa").Replace("e","efe").Replace("i","ifi").Replace("o","ofo").Replace("u","ufu");
    }
}
6. ahora en la linea número 9 agregaremos un formulario, un fieldset, una label y dos inputs. Quedando el código html de la siguiente manera.
<form method="post">
    <fieldset>
        <label for="frase">Escribe una frase para traducirla a lenguaje F</label>
        <input type="text" id="frase" name="frase"/>
        <input type="submit" value="Enviar">
    </fieldset>
</form>
7. después de copiar el código agregaremos, las siguientes lineas de código de servidor, esto para terminar la lógica de la página.
8. ahora damos clic en ejecutar y vemos que efectivamente la aplicación corre sobre windows.

9. Llenamos el campo de texto, damos clic en enviar y lo que resulta es el procesamiento del texto. 
10. Para este caso funciona perfectamente, ahora vamos a hacer que funcione para GNU/Linux usando mono. =) ahora antes de configurar WebMatrix para usar un FTP y guardar los archivos en el servidor GNU/Linux. Necesitamos:
  • Instalar Mono 2.10 (Este enlace muestra una forma de instalación menos dolorosa, si pudiera dar un adjetivo diría huevona)
  • Instalar Apache y configurarlo para usarlo con mono... =)
Ya con estas herramientas configuradas y andando, configuraremos WebMatrix...
11. Ahora en la aplicación damos clic en publicar/configuración nos lanzara una pantalla similar a esta.
Donde configuramos los datos del FTP, para mi caso selecciono la opción FTP y lleno los datos que me pide.
Ingresamos los datos y validamos la configuración para ver si es correcta.
Como pueden apreciar no tengo archivos para esta carpeta que esta configurada en el FTP, aqui es donde WebMatrix pondrá los archivos para trabajar.
Cuando termina de checar los las configuraciones me dice que archivos son los que se van a mover a la carpeta del FTP ahora, para fines de practicidad y tiempo le decimos que si a todos... =)
Vamos a verificar si la publicación se realizo de manera correcta, vamos a probar el sitio web en el servidor que tenemos en GNU/Linux. Entrando a la url con el navegador. Ahora cuando entro a la url que le he dado la cual es: http://rammstein/Page.cshtml, salta un cuadro de dialogo de guardar... es decir el servidor web encuentra la página pero no la puede procesar, con el mono... Que lastima hasta aqui todo era muy fácil, pero no se preocupen.
Lo que tenemos que hacer es simplemente borrar del directorio bin/ el ensamblado llamado: "Microsoft.Web.Infraestructure.dll" usando el comando rm.
ya borrado este ensamblado. Como podemos apreciar en la siguiente imagen.

Ahora lo que nos resta es es simplemente ir a la url donde esta nuestra página o aplicación web. Y listo!
Así de rupestre! Espero les sirva este ejemplo. Les dejo el código acá, y también quedo al pendiente de los comentarios. Saludos, SQLeros!


2 comentarios:

  1. Interesante... gracias por compartirlo.
    Slds.
    Fernando

    ResponderEliminar
  2. Gracias, es muy interesante la aplicación de tecnologías .Net en entornos *NIX y Linux.

    ResponderEliminar