2009-07-23 20 views
66

Me pregunto cuáles son las mejores prácticas para desarrollar aplicaciones ASP.NET MVC con una opción para implementar en Linux. Si está creando este tipo de aplicaciones MVC,Implementar ASP.NET MVC en Linux: Mejores prácticas, herramientas y sorpresas

  • ¿A qué plataforma Linux/Mono se dirige?
  • ¿Cuánto del desarrollo estás haciendo en Windows y cuánto en Linux?
  • ¿Está usando un ORM para abstraer la base de datos? ¿Cúal?
  • ¿Está ejecutando un motor de compilación en Linux? ¿Qué hay de las pruebas?
  • ¿Qué otras herramientas estás usando?
  • ¿Cuánto trabajo adicional ha sido apuntar a Linux además de a Windows?
  • ¿Qué sorpresas desagradables o agradables ha encontrado?
+0

Parece que esta pregunta debería ser una wiki de la comunidad. No va a haber una respuesta correcta. – mkchandler

+2

De acuerdo, puede que no haya una sola respuesta correcta, pero como la implementación en Linux requiere que ensamblemos más componentes en un entorno no nativo, vale la pena saber de los desarrolladores que lo han hecho o están en proceso de hacerlo. – keithm

+0

Estuve tentado de decir "¡Sorpresa! ¡No funcionará!" pero solo tengo mis propios problemas para implementar un proyecto más grande. Mono es honestamente espectacular. Solo pensé que eso daría algunas risas a aquellos que aún están tratando de entender los crípticos errores que a veces Mono puede vomitar :) – Chazt3n

Respuesta

34

La empresa para la que trabajo apunta a Mono en Linux como nuestro entorno de implementación principal. Por lo tanto, no hay un trabajo "adicional": proporcionamos toda la pila, desde el hardware, hasta el sistema operativo (personalizado y recortado) a las aplicaciones. El uso de Open Source ofrece grandes ahorros para nosotros y nuestros clientes (y sí, contribuimos de nuevo a los proyectos de SO en los que confiamos).

Lo importante es probar constantemente con su objetivo real (lo siento, Mono en Windows no cuenta). Claro, los desarrolladores usan Visual Studio, pero la integración continua (utilizando CruiseControl.Net, necesitará 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 (obtuvo mucho más estable recientemente, pero aún así, las regresiones ocurren entre lanzamientos). Es bastante fácil ejecutar parallel Mono versions en un sistema * nix, incluso puede incluir una compilación instantánea svn si prefiere detectar las regresiones iniciales antes de tiempo. Si no despliega su propia distribución, recuerde que la mayoría de los proveedores de Linux envían Mono con parches personalizados, esto nos ha causado problemas anteriormente. Además, muchas distribuciones tienen mucha demora para actualizar Mono, y este es un proyecto que avanza rápidamente.

Para la capa de base de datos usamos principalmente ADO.NET "simple" - Oracle (con dotConnect for Oracle, admiten Mono) y SQLite (Mono se envía con un conector de trabajo). También he usado el ADO.NET Driver for MySQL (Connector/NET) oficial y también funciona bien. Las asignaciones de ORM son más complicadas, pero se puede utilizar NHibernate (tenga en cuenta que no admiten Mono oficialmente).

En cuanto al motor de compilación y las pruebas, NAnt y NUnit son bien conocidos y probados. Con la versión más reciente de Mono xbuild (clon de MSBuild) realmente se puede usar, pero prepárate para contribuir con muchos parches si decides usarlo para escenarios más complejos.

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

+0

Gracias por una gran respuesta. ¿Cuál es su base de datos y el software de acceso a datos? – keithm

+0

Actualizado mi respuesta :-) – skolima

+0

Gracias por la información. ¿Sigues trabajando de esta manera? De ser así, ¿ha actualizado las versiones más recientes de .NET y MVC? Además, ¿está utilizando con éxito cualquier software ORM como Entity Framework? Han pasado algunos años desde tu respuesta, por lo que me gustaría saber que todavía eres tan positivo sobre la tecnología ahora como entonces. ¿Todavía recomendaría CC.NET, NAnt, NUnit, etc ...? Gracias :) –

1

Eche un vistazo a Mono project. 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 desde mi entendimiento no hay muchas diferencias.

4

Nathan de Bridgewater tiene algunos artículos agradables que muestran, entre otras cosas:

  • ejecutan MVC3 con maquinilla de afeitar en mono
  • migrar desde Windows ASP.NET MVC/SQL Server para Linux/MySQL
  • instalación y funcionando MonoDevelop
  • instalación de mono de la fuente

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

+0

el enlace está muerto – aclave1

+1

@clave1, gracias, actualizado. –

Cuestiones relacionadas