2010-05-06 13 views
23

Estoy buscando en Mono y .NET C# y necesitaremos ejecutar el código en servidores Linux en el futuro cuando se desarrolle el proyecto. En este punto, he estado mirando ASP.NET MVC y Mono.Diferencias en el desarrollo entre .NET y Mono

Ejecuto una distribución de Ubuntu y quiero hacer desarrollo para una aplicación web, algunos de los otros desarrolladores usan Windows y ejecutan otros elementos .NET con Visual Studio.

¿Qué no proporciona Mono que Visual Studio hace?

Si ejecuta esto en Linux más adelante, ¿no deberíamos usar MonoDevelop?

¿Existen herramientas de terceros o complementos que podrían ser un problema con Mono más adelante?

+8

Estoy confundido ¿Preguntas sobre Mono o MonoDevelop? Son dos cosas diferentes. La comparación de Mono con Visual Studio es de manzanas a naranjas. MonoDevelop y VisualStudio son IDE. Mientras que Mono y .NET son implementaciones de la CLI y las librerías de clases y compiladores relacionados. –

+0

Lo que estoy preguntando es ¿qué diferencias hay entre el IDE y el idioma? – Jason

+1

Eso es dos preguntas muy diferentes, entonces. Muchos de nosotros usamos .NET en Windows sin usar Visual Studio. – Ken

Respuesta

17

¿Qué no proporciona Mono que Visual Studio haga?
MonoDevelop es probablemente lo que quiere decir aquí. MonoDevelop ofrece desarrollo de plataforma cruzada en Linux, Mac OS X, Windows basado en GTK. Sin embargo, no está tan pulido como Visual Studio por razones obvias: lo hacen 3 personas, no cientos. Tiene algunas características agradables, especialmente su arquitectura de plugin de control de fuente. Sin embargo, como Visual Studio Express es gratuito, Windows no tiene muchas ventajas de usarlo.

Utiliza el mismo formato .csproj y .sln que Visual Studio; sin embargo, el formato de documento XML es diferente.

Si ejecuta esto en Linux más adelante, ¿no deberíamos usar MonoDevelop?
Como mencioné anteriormente, los formatos de proyecto son interoperables.

¿Existen herramientas de terceros o complementos que podrían ser un problema con Mono más adelante?
A diferencia de Visual Studio, no hay una gran cantidad de complementos para Monodevelop. Los que use en Monodevelop no afectarán en absoluto a sus archivos .csproj, ya que todo lo que Visual Studio no puede leer, generalmente lo ignora.


Como han dicho las personas, no confunda Mono para MonoDevelop. MonoDevelop es un IDE para Mono que originalmente vino de SharpDevelop (bifurcado).

Mono es el marco multiplataforma que 'simula' las bibliotecas Microsoft CLR y framework.

1

Tiene como objetivo siempre tener soporte, y/o usar principalmente el software en Linux, ¿correcto? Esta es en realidad una pregunta que hice hace poco a los desarrolladores de Mono en una conferencia, y básicamente se redujo a lo que quieres hacer con ella.

Si desea que siempre funcione en Linux, utilice Mono. Si solo te preocupa Windows, utiliza Visual Studio.

Si está utilizando Mono, utilice MonoDevelop en todos los desarrolladores. Hará la vida mucho más fácil más adelante y se asegurará de que todo lo que escriba en uno funcione para todos.

Desafortunadamente, no sé la respuesta a los límites/ventajas exactos de Mono vs. .NET, aparte de que .NET esté más adelante, y de que Mono esté al día, ni de los diferentes complementos.

5

no tengo mucha experiencia en esta área, pero ...

El Mono Project Roadmap tiene una visión general de las características que son nuevas, próxima, y ​​no está presente en Mono en comparación con MS.NET. Incluso cuando Mono tiene las mismas clases que .NET, tenga en cuenta que la compatibilidad no es del 100% (aunque ese suele ser su objetivo). No estoy seguro de si existe una lista completa de cosas que faltan en Mono.

MonoDevelop ahora está disponible tanto en Windows como en Linux, por lo que probablemente sea mejor que lo use. Sin embargo, parece que MonoDevelop utiliza el mismo formato de archivo de proyecto que Visual Studio y SharpDevelop, por lo que podría intentar mezclar IDEs.

Por supuesto, al utilizar bibliotecas .NET de terceros, tenga en cuenta que muchas de ellas no se han probado con mono y, en particular, todo lo que utiliza P/Invoke no funcionará en Mono para Linux. Sin embargo, la mayoría de las incompatibilidades con mono son menores, y si se queda con las bibliotecas de código abierto, siempre puede solucionar las incompatibilidades que encuentre.

5

También puede consultar Mono Tools for Visual Studio. Permite a los desarrolladores de su estudio visual enfocarse y probar con la plataforma mono.

+0

Eso está bien, pero ¿hay alguna versión de código abierto? Tengo una biblioteca de clases que cumple con los dos marcos y me gustaría tener un proyecto y poder tener objetivos de construcción para ambos – jlafay

1

Si puede evitarlo, recomendaría evitar la implementación Mono de Remoting. Parece que hay algunos contratiempos inesperados y la depuración no es directa.

Teníamos un producto pesado muy Remoting que intentamos portar a Mono para que pudiéramos soportar Linux. Debido a que no pudimos resolver los problemas de Remoting, finalmente tuvimos que abandonar nuestros intentos de apoyar a Linux por completo.

Advertencia: mis experiencias pueden estar desactualizadas. Consulte los comentarios a continuación

+0

Ok, esto es exactamente qué tipo de respuestas estaba buscando, experiencias reales en qué es Mono teniendo problemas con. – Jason

+0

¿Hace cuánto fue eso por casualidad? Soy curioso si se ha solucionado desde entonces, es decir, si fue hace unos años. – percent20

+0

@ percent20: hace 1-2 años. Si ve que mis experiencias están desactualizadas, comente aquí y actualizaré mi respuesta. – Dinah

1

Si ninguno de sus desarrolladores necesita desarrollar en Mono para ciertas características, le sugiero que todos utilicen Visual Studio en Windows. A continuación, probar las aplicaciones en Mono través

  1. Mono Tools para Visual Studio
  2. copiar manualmente los archivos binarios sobre
  3. a extraer el código en Linux y construir en MonoDevelop.

Personalmente experimenté muchos pequeños problemas cuando probé la tercera vía, pero afortunadamente soy capaz de encontrar soluciones.

Solo cuando toque Mono, sabrá qué parte de su aplicación necesita ser ajustada.

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

0

No es necesario MonoDevelop con el fin de ejecutar el programa de ASP.NET en Linux, hacer una carpeta compartida en el servidor de desarrollo (VMWare'd o uno real), prueba a menudo para que pueda trabajar con facilidad -sobre lo que falta en Mono

Ese es el mismo enfoque que estoy usando en mi programa .NET Remoting que tengo en el servidor Ubuntu. Pero hago lo contrario, ya que soy un programador en solitario, hago una carpeta compartida en mi máquina de desarrollo de Windows, luego accedo a esa carpeta compartida en mi servidor de prueba de Ubuntu (vmware'd). En materia de ASP.NET, si los cambios no se reflejan en el servidor de prueba de Ubuntu, en Terminal simplemente toque el archivo Web.Config en su servidor de prueba de Ubuntu. es decir, touch Web.Config, luego actualice la página

0

Mono tiene una implementación completamente funcional de ASP.NET. Esto incluye soporte completo para formularios web ASP.NET y servicios web. Esto esencialmente significa que más o menos cualquier aplicación ASP.NET que haya desarrollado usando .NET Framework funcionará con Mono. Obviamente, puede haber cambios necesarios, como cambios en el acceso a los datos, eliminación de cualquier dependencia de en los tipos BCL de .NET Framework. Mono- Oracle users-.Net Programming C# : ubuntu 11.04

Cuestiones relacionadas