paso - Mono, asp.net c#y MVC Cómo y Tutoriales
tutorial asp net mvc (1)
Primero que nada, muy buenas preguntas.
No tengo experiencia en web con ASP.Net MVC, pero sí tengo experiencia con los formularios web ASP.Net y la migración de una aplicación comercial ASP.Net de Windows a Mono que se ejecuta en Linux.
Puedo responder algunas de tus preguntas.
1) ¿Es probable que obtenga más errores y fallas en lugar de limitarse a una implementación de Windows? Y si es así, ¿qué tan malos son algunos de los errores, has tenido proyectos en los que no funciona en absoluto?
Yo diría que sí, pero no muchos. Nuestra aplicación tiene más de 200.000 líneas de código y actualmente solo puedo pensar en un error Mono que existe con nuestro código, que es menor. El error está llamando al método Session.Abandon que bloquea Apache. Creo que encontrarás más errores en las nuevas .Net API, pero en general el framework es muy estable.
2) ¿Recomiendas programar en Visual Studio y luego implementarlo en una plataforma mono? ¿O hay un IDE mejor que recomiendas, como Mono (o Eclipse si es posible)? Actualmente utilizo Linux como mi sistema operativo y ejecuto Windows 7 con Visual Studio.
Creo que no hay mejor IDE que Visual Studio en términos de las características / estabilidad que ofrece. Sin embargo, al decir esto MonoDevelop es un IDE muy bueno que es muy similar a Visual Studio. Simplemente carece de muchas de las características adicionales que ofrece Visual Studio. Por ejemplo, un Diseñador visual para páginas web y adjuntarlo a la depuración de procesos. En la empresa para la que trabajo usamos MonoDevelop en Windows / Mac y Linux. Entonces, si está buscando una solución multiplataforma, entonces vaya con MonoDevelop, pero si no le importa usar Windows como su PC de desarrollo y pagar licencias VS, entonces VS está bien.
Editar: A partir de la redacción de Visual Studio Community Edition se ha lanzado y no requiere licencia. También existe la posibilidad de utilizar .NET Core junto con su editor favorito (o el Código de Visual Studio , también gratis). Este último es compatible con Windows, Linux y Mac OS X). También ahora hay Visual Studio para Mac .
3) Como tengo varias aplicaciones que se completan con .net 4.5 beta y mvc4 beta, ¿son compatibles con la versión actual de Mono? Si no, ¿cuáles son los marcos de tiempo promedio desde cuando se lanza oficialmente un marco hasta que Mono se vuelve compatible?
No sé si estas API todavía son compatibles. Una forma de averiguarlo es usar la herramienta Moma para analizar sus ensamblajes. La otra opción sería descargar la última versión de Mono + MonoDevelop e intentar construir su solución usándola. No sé de un marco de tiempo exacto para el lanzamiento de las API, pero creo que, en general, es muy poco después del lanzamiento de .Net y, a veces, incluso antes de que se publique Microsoft.
4) No conozco las bases de datos. Mis bases de datos son para SQL Server, tendría que cambiarlas para ejecutarlas en un servidor Linux. ¿Es esto un dolor o un error propenso? Mis bases de datos de servidor sql se crean usando código de entidad primero, ¿funciona esto si tengo que crear bases de datos MySQL (o lo que sea)?
-> la respuesta debería ser no en realidad. MS lanzó el Servidor MS-SQL para Linux. puede descargar MSSQL en ubuntu en cuestión de 2 comandos apt-get. No sé cómo editar esta parte de la respuesta. <- Sí, es una base de datos de intercambio de dolor. Incluso más de un dolor si está utilizando procedimientos almacenados. Existen programas comerciales que pueden convertir sus tablas de bases de datos y datos de MS SQL Server a MySQL o Postgresql. Usamos las herramientas de DBConvert para convertir nuestro esquema de base de datos a Postgresql. Convertir las tablas fue la parte fácil. La parte más difícil fue convertir nuestros procedimientos almacenados. Nuestra aplicación depende en gran medida de los procedimientos almacenados con más de 900 procedimientos almacenados en nuestra base de datos. Tuve que reescribir todos los procedimientos almacenados en Postgresql a mano. Si sus procedimientos almacenados son solo SQL directo, entonces no será tan difícil, pero si depende en gran medida de TSQL , tendrá que encontrar equivalentes a su código en el lenguaje de codificación utilizado por la base de datos que elija. Con Postgresql, el mejor equivalente es PL / pgSQL . No he tenido experiencia con la migración de datos utilizando las herramientas comerciales que DBConvert ofrece. Hicimos muchos cambios en nuestra base de datos al mismo tiempo que migramos a Mono, por lo que para la migración de datos escribimos nuestro propio código para realizar la migración.
5) Actualmente despliego mis sitios web de mvc a un servidor remoto Server 2008r2. ¿Hay alguna alternativa a IIS que usarías para Linux? ¿Puede proporcionarme un enlace a un tutorial sobre cómo configurarlo?
&&
7) ¿Puede darme una estimación de cuánto espacio en disco el mono + algún tipo de iis + framework etc. que esto tomaría? En una comparación de un sistema operativo Linux con un sistema operativo Windows, Windows ocupa un TON más de espacio; ¿también usaría esta TON de espacio de disco? (Entiendo que la comparación del tamaño del sistema operativo no es un buen ejemplo).
Apache2 con mod_mono se usa para alojar sitios web con Mono en Linux. Linux usa un espacio mínimo. Estamos alojando nuestra aplicación web con Amazon EC2. Una nueva instalación de nuestra pila que incluye básicamente Ubuntu, Mono, Apache2, Postgresql y Postfix solo ocupa 1.2 GB de espacio. Entonces, la respuesta es No Mono no ocupa una gran cantidad de espacio en el disco. Aquí hay un tutorial sobre cómo configurar Mono en Ubuntu. No conozco ningún tutorial que sea excepcionalmente bueno. Si necesita ayuda con esto, los mejores lugares para ir son el canal Mono IRC y las listas de correo Mono . Aquí puede hablar con la comunidad y los desarrolladores que trabajan en Xamarin .
8) ¿Hay algún inconveniente que pueda haber pasado por alto, que se te ocurra? Al igual que hay algún problema extraño con la exploración de directorios, la búsqueda de archivos de configuración, problemas de jquery / ajax, etc.
La sensibilidad del caso podría ser un problema. Linux es un SO sensible a las mayúsculas y minúsculas, por lo que debe asegurarse de que todas las llamadas al sistema de archivos distingan entre mayúsculas y minúsculas. Dependiendo de la base de datos que elija también podría ser sensible a mayúsculas y minúsculas. Postgresql es una base de datos sensible a mayúsculas y minúsculas, por lo que al ejecutar consultas, los nombres de las columnas deben ser sensibles a mayúsculas y minúsculas. Con las URL MVC no distingue entre mayúsculas y minúsculas, por lo que debería estar bien con eso. Los sitios web de ASP.Net distinguen entre mayúsculas y minúsculas, ya que los nombres de las páginas utilizan las URL. Si tiene problemas de sensibilidad de mayúsculas y minúsculas al ejecutar por primera vez sus aplicaciones en Mono con Linux, entonces puede usar Mono IOMap para ponerlo en funcionamiento. IOMap se ocupa de la insensibilidad de las mayúsculas y minúsculas pero le da a su aplicación un impacto en el rendimiento, por lo que no se recomienda su uso en un entorno de producción.
9) ¿Tiene alguna recomendación, tutorial, blog, etc.? ¿Hay algún sitio de Stack Exchange que trate este tipo de problemas mejor que este? (No pude encontrar uno, excepto tal vez el de Linux.
No puedo pensar en sitios web mejores para programación y administración de servidores que no sean stackoverflow y serverfault.
10) Aunque no es una necesidad para mí hacer esto, me gustaría configurarlo y hacerlo solo para tener la opción en el futuro, pero no perderé mi tiempo si es un desperdicio completo. Tengo un VPS de Linux y un VPS de Windows que alquilo ahora mismo, así que si lo hiciera, también me permitiría tener solo un servidor remoto Linux (posiblemente con menos espacio en el disco duro y ram), así potencialmente podría ahorrarme dinero. Entonces mi última pregunta es, ¿recomendarías hacer esto si tu situación fuera similar a la mía?
Lo recomendaría, pero debe tener en cuenta que hay una gran curva de aprendizaje para familiarizarse con los SO de Linux, los diferentes servidores de bases de datos y las aplicaciones de instalación / configuración para ejecutar en el marco de Mono. Probablemente descubrirá que muchas cosas no son tan intuitivas como lo son con las tecnologías de MS. No utilizará una implementación de GUI y configurará sus aplicaciones en el servidor, ya que SSH es la mejor manera de interactuar con servidores Linux.
Tengo algunas preguntas básicas para cualquiera que esté familiarizado con Mono o Mono Development (como se llame) cuando se trata de programar en .net y desplegar en Linux (y mac si usted también lo sabe). Un poco sobre mí, trabajo principalmente con MVC3 y MVC4, algunas formas de Windows y quizás en el futuro aplicaciones móviles. 98% del tiempo en c # y el resto c ++.
1) ¿Es probable que obtenga más errores y fallas en lugar de limitarse a una implementación de Windows? Y si es así, ¿qué tan malos son algunos de los errores, has tenido proyectos en los que no funciona en absoluto?
2) ¿Recomiendas programar en Visual Studio y luego implementarlo en una plataforma mono? ¿O hay un IDE mejor que recomiendas, como Mono (o Eclipse si es posible)? Actualmente utilizo Linux como mi sistema operativo y ejecuto Windows 7 con Visual Studio.
3) Como tengo varias aplicaciones que se completan con .net 4.5 beta y mvc4 beta, ¿son compatibles con la versión actual de Mono? Si no, ¿cuáles son los marcos de tiempo promedio desde cuando se lanza oficialmente un marco hasta que Mono se vuelve compatible?
4) No conozco las bases de datos. Mis bases de datos son para SQL Server, tendría que cambiarlas para ejecutarlas en un servidor Linux. ¿Es esto un dolor o un error propenso? Mis bases de datos de servidor sql se crean usando código de entidad primero, ¿funciona esto si tengo que crear bases de datos MySQL (o lo que sea)?
5) Actualmente despliego mis sitios web de mvc a un servidor remoto Server 2008r2. ¿Hay alguna alternativa a IIS que usarías para Linux? ¿Puede proporcionarme un enlace a un tutorial sobre cómo configurarlo?
6) Si la pregunta 4 es posible, ¿cuáles son las pérdidas con la implementación de un sitio web de MVC en Linux? Velocidad, fiabilidad, seguridad, etc.
7) ¿Puede darme una estimación de cuánto espacio en disco el mono + algún tipo de iis + framework etc. que esto tomaría? En una comparación de un sistema operativo Linux con un sistema operativo Windows, Windows ocupa un TON más de espacio; ¿también usaría esta TON de espacio de disco? (Entiendo que la comparación del tamaño del sistema operativo no es un buen ejemplo).
8) ¿Hay algún inconveniente que pueda haber pasado por alto, que se te ocurra? Al igual que hay algún problema extraño con la exploración de directorios, la búsqueda de archivos de configuración, problemas de jquery / ajax, etc.
9) ¿Tiene alguna recomendación, tutorial, blog, etc.? ¿Hay algún sitio de Stack Exchange que trate este tipo de problemas mejor que este? (No pude encontrar uno, excepto tal vez el de Linux.
10) Aunque no es una necesidad para mí hacer esto, me gustaría configurarlo y hacerlo solo para tener la opción en el futuro, pero no perderé mi tiempo si es un desperdicio completo. Tengo un VPS de Linux y un VPS de Windows que alquilo ahora mismo, así que si lo hiciera, también me permitiría tener solo un servidor remoto Linux (posiblemente con menos espacio en el disco duro y ram), así potencialmente podría ahorrarme dinero. Entonces mi última pregunta es, ¿recomendarías hacer esto si tu situación fuera similar a la mía?
Responda cualquiera de las preguntas que pueda, Gracias de antemano y lo siento por tantas preguntas, Garrett Fogerlie