2009-06-12 18 views
12

Soy un usuario de larga data de .NET Framework en plataformas Windows, pero también tengo mucha programación en Linux. Me gustaría aprovechar el Mono para algunos proyectos en particular, pero la última vez que lo intenté (¿tal vez hace 2 años?), Mono simplemente no estaba a la altura. Además, fue particularmente difícil obtener información realmente buena sobre el estado de Mono desde su sitio o Google.¿Estado actual de Mono en Linux?

¿Hay gurus Mono que puedan simplificar el estado actual del proyecto para alguien acostumbrado a usar .NET 3.0 en Windows? Aproximadamente, ¿qué cantidad de bibliotecas de la clase base se pueden usar y cuánto de WinForms?

¡Gracias de antemano!

+1

esto podría ser bueno como una wiki pública o como se llame. – wprl

Respuesta

14

un estado de alto nivel: mono-project.com/Plans

estado de API: go-mono.com/status

En caso de que desee migrar una aplicación existente para Linux: MoMA

También creo que sería una mejor idea de ...

  • pensar en ciertos casos de uso que podría tener para Mono ... tu pregunta actual es demasiado general
  • hacen preguntas concretas sobre las listas de correo, ya que muchas personas inteligentes y bien informados que son activos que probablemente don' t leer Stackoverflow: mono-project.com/Mailing_Lists

Un resumen de mi corta experiencia:

  • Asp.net 2.0 se aplique plenamente, y pude conseguir Asp.net MVC para trabajar
  • Windows Forms es compatible, pero nunca será de alta calidad porque no es una prioridad. Ahórrese el dolor y simplemente cree una interfaz Gtk # para su puerto Linux
  • las bibliotecas base están implementadas, y Linq DB está casi allí, pero no tendrá suerte con las API específicas de Windows, como WPF y WCF, aunque Silverlight se implementa en Moonlight
  • Mono está teniendo éxito en los últimos juegos que necesitan un poderoso entorno de scripting. Ver empresas usando Mono: mono-project.com/Companies_Using_Mono

Para noticias y cosas así, siga el blog de Miguel en tirania.org/blog/

+0

¡gran información sobre ese blog de tirania.org! thx Alexandru – Mike

4

Diría que ha recorrido un largo camino si puede apoyar el desarrollo de un motor de creación de juegos como Unity, que se usó para desarrollar Sims 3, entre otras cosas. Además, el equipo de Mono está de alguna manera superando a Microsoft en su propio juego, creando cosas como un enlazador estático para que el código .NET pueda ejecutarse de forma nativa en el iPhone, y una consola C# REPL.

Por lo que vale, he estado jugando con eso en el lado de ASP.NET, y aunque hubo algunos baches, ha sido una experiencia muy positiva. Pude ejecutar una aplicación ASP.NET MVC utilizando NHibernate y MySQL.

3

El mono website establece que los siguientes C# 3.0 características son compatibles:

  • métodos anónimos
  • iteradores
  • clases parciales
  • Generics
  • Tipos anulables
  • conjuntos amigo
  • classe estático s
  • covarianza y contravarianza
  • de acceso de propiedad de accesibilidad
  • tampones fijos
  • montaje externo alias
  • espacio de nombres alias calificador
  • inline control de advertencia
  • métodos de extensión
  • sintaxis LINQ
  • Expresión árboles
  • Propiedades automáticas
  • Expresiones lambda
  • Tipos anónimos.
+1

No estoy seguro de quién votó a favor ... personalmente, creo que una lista de cosas que no están implementadas es más importante, pero una lista de cosas que todavía es útil. – Powerlord

+0

Estoy de acuerdo, R. Bemrose: esta lista realmente alivia un poco mis temores, solo para ver qué puedo usar. muy útil. Gracias, SoloBold, por la información! – Mike

4

La aplicación mono actual (2.4) es bastante bueno en términos de .NET 2.0 compilance (y algunas de las bibliotecas de 3.5, como ASP.NET MVC o LINQ), pero aún está lejos de .NET 3.0/3.5 genérico. Si su aplicación está diseñada con winforms y no usa mucho de .NET 3.0/3.5, entonces tiene buenas posibilidades de que funcione con mono. Por supuesto, habrá algunas partes del framework .NET 3.5 que probablemente nunca serán compatibles, como WPF.

Hay un Migration Analyzer en la página mono que le puede indicar si su aplicación se ejecutará probablemente bien, o no debajo de mono 2.4.

2

En mi experiencia con el área de Window Forms, las piezas .NET 2.0 parecen funcionar bien. Cuanto más complicado sea el software, más problemas tendrás. Hay cosas que deben cambiarse para que las cosas funcionen. Cosas como separadores de ruta. Además, algunos controles de Win Forms se comportan de manera diferente, cosas pequeñas como la orden de activación de eventos se arrastran hacia ti. Debe probar todo, encontrará problemas, al igual que en Java. Encontrará problemas en todas las permutaciones Win/Mono y Linux/Mono, también Mono tiene errores que no se solucionan, que podría ser un tope de la demostración.

Puede utilizar la herramienta MOMMA para encontrar problemas conocidos, pero no capta todo. http://www.mono-project.com/MoMA

problemas de depuración es muy lento, y la configuración de un entorno de depuración es difícil.

Creo que para .NET 3.0 es demasiado pronto, a menos que lo haga por diversión.

+0

+1 Punto muy interesante sobre el entorno de depuración. Ese es uno de los beneficios reales del desarrollo de .net en el lado de las ventanas: ¡será una píldora difícil de tragar! – Mike

+0

Sí, especialmente si usa VS, tienden a usar el mono IDE. Luego están los diversos reemplazos de lib y los administradores de ventanas. – eschneider

2

Los controles especiales como datagridview han recorrido un largo camino, en mi experiencia. Están llegando allí, pero aún no están completamente allí.

Desarrollo una pequeña aplicación OpenGL usando la biblioteca OpenTK. Esta aplicación, cuando se ejecuta en Windows y Mono, es prácticamente la misma, pero cosas como una vista de cuadro de datos parece ser un poco aleatorio en la implementación. Elija la versión más reciente de mono, y debería estar en su mayoría bien.

En mi opinión, las diferencias son ahora marginales, sin ningún tipo de ruptura (tal vez el depurador). Sin embargo, Monodesarrollo carece de las buenas herramientas de refactorización VS.