Desplegar ASP.NET MVC en Linux: Mejores Prácticas, Herramientas y Sorpresas


Me pregunto sobre las mejores prácticas para desarrollar ASP.NET Aplicaciones MVC con opción de implementación en Linux. Si está creando este tipo de aplicaciones MVC,

  • ¿A qué plataforma Linux / Mono se dirige?
  • ¿Cuánto del desarrollo está haciendo en Windows y cuánto en Linux?
  • ¿Está utilizando un OR para abstraer la base de datos? ¿Cuál?
  • ¿Está ejecutando un motor de compilación en Linux? ¿Y las pruebas?
  • ¿Qué otras herramientas está utilizando?
  • cuánto trabajo adicional ¿ha sido apuntar a Linux además de Windows?
  • ¿Qué sorpresas feas o agradables has encontrado?
Author: Cœur, 2009-07-23

3 answers

La compañía para la que trabajo se dirige a Mono en Linux como nuestro entorno de implementación principal. Por lo tanto, no hay trabajo" adicional": proporcionamos toda la pila, desde el hardware, pasando por el sistema operativo (personalizado y recortado) hasta las aplicaciones. El uso de Código abierto ofrece un gran ahorro para nosotros y nuestros clientes (y sí, contribuimos a los Proyectos de SO en los que confiamos).

Lo importante es probar constantemente usando su objetivo real (lo sentimos, Mono en Windows no cuenta). Claro, los desarrolladores usan Visual Studio, pero la integración continua (usando CruiseControl.Net , necesitarás Mono 2.4.2 para ejecutarlo en Linux) se realiza tanto en Windows como en Linux, probando todas las versiones Mono en las que esperamos trabajar (se ha vuelto mucho más estable recientemente, pero aún así, las regresiones ocurren entre versiones). Es bastante fácil ejecutar versiones Mono paralelas en un sistema *nix, incluso puede incluir una compilación de instantáneas svn si prefiere capturar las regresiones de upstream antes. Si no lanzas los tuyos distribución, entonces recuerde que la mayoría de los proveedores de Linux envían Mono con parches personalizados-esto nos ha causado problemas antes. Además, muchas distribuciones tienen mucho retraso en la actualización Mono, y este es un proyecto que avanza rápidamente.

Para la capa de base de datos utilizamos principalmente "plain" ADO.NET -Oracle (con dotConnect para Oracle , soportan Mono) y SQLite (naves Mono con un conector de trabajo). También he utilizado el oficial ADO.NET Driver para MySQL (Connector/NET) y también, funciona bien. Las asignaciones OR son más difíciles, pero NHibernate es utilizable (tenga en cuenta que no soportan Mono oficialmente).

En cuanto al motor de construcción y pruebas - NAnt y NUnit son bien conocidos y bien probados. Con las versiones más recientes de Mono xbuild (clon de MSBuild) realmente se puede usar, pero prepárese para contribuir con muchos parches si decide usarlo para escenarios más complejos.

Escribir pruebas. Muchos de ellos. Esté preparado para contribuya con parches e informes de errores, y si usa componentes comerciales, asegúrese de que el proveedor soporte oficialmente Mono.

 34
Author: skolima,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-24 07:48:47

El blog de Nathan Bridgewater tiene algunos buenos artículos que muestran, entre otras cosas:

  • ejecutando MVC3 con razor en mono
  • migración ASP.NET MVC de Windows / SQL Server a Linux / MySQL
  • instalación y ejecución de MonoDevelop
  • instalando mono desde la fuente

Http://iws.io/get-mvc3-razor-running-on-mono /

 4
Author: Drew Noakes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-01 00:51:38

Echa un vistazo al proyecto Mono . Parece que eso es lo que estás buscando. Si no recuerdo mal, tienen ASP.NET MVC integrado en él ahora.

Nunca he trabajado con Mono, pero a mi entender no hay muchas diferencias.

 1
Author: mkchandler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-07-23 15:33:06