Ejecutar ASP.Net en un servidor basado en Linux

Para un desarrollador con un fondo Java, estoy interesado en explorar el desarrollo de software usando las herramientas / plataforma ASP.NET también.

Las aplicaciones web Java (.jsp y servlets) se pueden ejecutar en muchas plataformas de servidores.

Pregunta : ¿una aplicación web .NET podrá ejecutarse en un servidor basado en Linux? Teniendo en cuenta el escenario de no poder usar un servidor de Windows para alojar una aplicación web.

Depende de qué tecnologías .NET específicas está utilizando. El Proyecto Mono proporciona un módulo Apache (mod_mono) para ejecutar sitios ASP.NET, y por lo que veo funciona bien.

Sin embargo, Mono no admite todas las API de .NET, especialmente WPF (y posiblemente también WCF, no lo recuerdo), pero proporciona un buen soporte para mucho más del framework.

Si está empezando desde cero y desea centrarse especialmente en servidores que no sean de Windows, entonces, asegurarse de que su proyecto funcione con Mono sería un buen objective. Sin embargo, si necesita APIs particulares o funciones de idioma que no son compatibles con Mono, necesitará usar un servidor de Windows para la implementación. Es una elección arquitectónica / de tiempo de diseño que debe tener prioridad.

Entonces sé que esta es una pregunta anterior, pero creo que podría soportar una respuesta actualizada.

Microsoft lanzó oficialmente asp.net vnext y es de código abierto e implementable tanto para Linux como para Mac. Todavía es bastante nuevo, pero se basa en las últimas versiones de mono y, por lo tanto, actualmente necesita que compile el mono-framework pero con el tiempo sospecho que será más fácil acceder a él, ya que varias distribuciones de Linux lanzan versiones actualizadas de mono. Esta es una guía de configuración

Esta información puede ser algo volátil y con actualizaciones debido a cambios.

Actualizar ASP.NET CORE 10/11/2017

  • asp.net vnext ahora se conoce como asp.net core .
  • asp.net core está siendo tratado como una alta prioridad en Microsoft debido en parte a su uso con architecture de microservicio y tecnologías de contenedor y contenedor
  • Se ha vuelto mucho más compatible con las bibliotecas .net existentes debido al estándar .net 2.0 .
  • Funciona bien en comparación con otras stacks de tecnología como go y node.js

Es posible que desee considerar esta guía que ayuda a los desarrolladores de Windows a transferir su código a Mono / Linux:

Guía: Portado de aplicaciones ASP.NET – Mono

Puedo hablar por experiencia. Incluso si su sitio web ASP.net solo usa bibliotecas .NET soportadas por Mono, tendrá dificultades para ejecutarlo si está más allá de Hello World.

No tendrá que volver a escribir mucho código, pero pasará horas / días / semanas lidiando con pequeños problemas con la configuración de mod_mono / xsp / apache y los permisos de archivos y manejo de errores y todas las pequeñas cosas que entran en un sitio web grande. (Prepárese para pasar mucho tiempo haciendo preguntas sobre serverfault :))

El problema es que muchas personas no usan Mono para los sitios web de ASP.net, por lo que no hay tantas personas que informan errores, por lo que muchas cosas que son errores menores no se corrigen durante mucho tiempo.

Ahora puede publicar la aplicación ASP.NET 5 en Docker en Linux con Visual Studio. Vea la publicación de Scott Haselman a continuación

http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx

Dado que las tecnologías evolucionan y esta pregunta está clasificada en primer lugar en Google, debemos incluir más allá del mono el nuevo núcleo asp.net, que es una reescritura completa de asp.net para ejecutar para producción en Linux y Windows y para desarrollo para Linux. , Windows y Mac :

Puede desarrollar y ejecutar sus aplicaciones ASP.NET Core multiplataforma en Windows, Mac y Linux. ASP.NET Core es de código abierto en GitHub.

Si podemos. familiarícese con Mono Project y lea este artículo para comenzar.

Para ASP.NET en Linux, echa un vistazo a Mono .

Dicho esto, miles de sitios se ejecutan en Windows Server sin problemas. Un servidor mal configurado con cualquier sistema operativo será vulnerable; Linux no lo salvará de un administrador deficiente.

Así que supongo que mi “mejor práctica” para destackr una aplicación ASP.NET sería usar Windows Server 2008 (probablemente una edición web). Y contrata a un buen administrador.

Puede usar Mono para ejecutar aplicaciones ASP.NET en Apache / Linux, sin embargo, tiene un subconjunto limitado de lo que puede hacer en Windows. En cuanto a “ellos” diciendo que Windows es más vulnerable al ataque, no es cierto. IIS ha tenido menos problemas de seguridad en los últimos años que Apache, pero en cualquier caso todo se debe a la administración de las cajas: ambos SO se pueden asegurar fácilmente. En estos días, los puntos de ataque no son el SO o el software del servidor web, sino las aplicaciones mismas.

dotnet es el hogar oficial de .NET en GitHub. Es un excelente punto de partida para encontrar muchos proyectos .NET OSS de Microsoft y la comunidad, incluidos muchos que forman parte de .NET Foundation.

Este puede ser un gran comienzo para soportar Linux.

Hoy en día, .Net se ejecuta en múltiples plataformas, como Linux, Mac OS, etc. pero Mono no es completamente independiente de la plataforma, porque implementar .NET en otro sistema operativo requiere un software de terceros. De modo que no es independiente de la plataforma Java.

Mono se está ejecutando en una plataforma diferente, porque JIT está en diferentes sistemas operativos.

Mono no es totalmente exitoso en la luz de la luna (luz plateada en .NET). No solo está en curso la investigación.

Mono usa el servidor XSP2 o apache. algunas de las grandes compañías están utilizando este proyecto. Algunos proyectos robóticos también se ejecutan en mono.

Para más detalles http://www.mono-project.com/Main_Page .

Existe el Proyecto Mono de Novell que le permitirá ejecutar ASP.Net en Apache.

http://www.mono-project.com/Main_Page

El proyecto Mono es tu mejor opción. Sin embargo, tiene muchos inconvenientes (como compatibilidad API incompleta en algunas áreas), y es legalmente gris (personas como Richard Stallman se han burlado del uso de Mono debido a la posibilidad de que Microsoft caiga en Mono al usar sus derechos de patente, pero esa es otra historia).

De todos modos, Apache es compatible con .NET / Mono a través de un módulo, pero la última vez que revisé la versión provista con Debian, solo dio soporte al idioma de Perl; No puedo decir si ha cambiado desde entonces, tal vez alguien más puede corregirme allí.