No he usado mono comercialmente, pero lo uso en privado, porque trabajo en una empresa de Windows, pero en privado soy un usuario de Linux (por lo que puedo reutilizar lo que hago en el trabajo).
En general, estoy de acuerdo con Miguel de Icaza quien dice:
- El 25% de las aplicaciones .NET funcionan de fábrica con mono
- otro 25% puede hacerse trabajar en un día o menos
- más del 25% se puede hacer trabajar en una semana
- El último 25% requiere una reescritura completa de la aplicación (WinForms / COM)
Mono funciona bastante bien, pero hay algunos problemas:
- Soporte VB.NET solo para .NET <= 2.0
- Autenticación de Windows no implementada
- WPF no implementado
- Soporte WCF incompleto
- Entity Framework no implementado y no hay planes para implementar
- "Elementos web ASP.NET" no implementado
- Sin compatibilidad con interoperabilidad COM
- La conexión de Sybase para la versión 15.5 (última) no funciona
- Errores e incompletos en la biblioteca de clase C # (por ejemplo, XML tenía errores en mono <2.6)
- El control del navegador web Linux requiere GTK #
Luego los problemas menores:
- Los formularios de Windows funcionan, pero no siempre se representan correctamente
- MonoDevelop no puede diseñar formularios de Windows
- La depuración 'paso a paso' de MonoDevelop realmente no funciona
- El mono servicio se bloquea después de 5 horas ...
Forma lo que puedo decir:
- Los servicios web funcionan excelentemente
- Si ejecuta una aplicación web, funciona bastante bien (si no utiliza WebParts).
- Si ejecuta WindowsForms, no siempre se verá muy bien (por decir lo menos).
- No existe un equivalente funcional para el Servicio de informes de Microsoft (el informe del año fiscal es lo más parecido, pero es lento, tiene errores y está muy incompleto, además de ninguna actividad desde hace más de un año)
- Experimentará problemas si necesita crear documentos de Word o Excel.
Si quieres desarrollar .NET en Linux
- Podría desarrollar ASP.NET allí (la depuración y el paso funcionan muy mal)
- Realmente no puedes desarrollar WinForms en Linux
- Necesita usar GTK # en lugar de WinForms
En otras palabras:
- Mono tiene su lugar en la ejecución de aplicaciones web y servicios web y servidores de correo.
- Pero no es viable ejecutar aplicaciones de WindowsForms, debe escribir aplicaciones con GTK #
- Carece de una solución de informes y soporte de formato de archivo MS (o bibliotecas de trabajo por lo tanto)
Editar (actualización de 2015):
quería agregar que por ahora, la depuración 'paso a paso' funciona excelentemente, y puede usar MonoDevelop para desarrollar aplicaciones web en Linux, incluso con dependencias nuGet. El problema con las bibliotecas de Excel y Word también desapareció, y la estructura de entidades ahora es de código abierto. El resto es más o menos "como está" (no sé si el servicio mono es fijo, pero espero que sí).
Lo que también ha mejorado es que ahora puede tener paquetes actuales para su distribución, lo que significa que no necesita esperar hasta el próximo lanzamiento de, digamos Debian / Ubuntu, hasta que obtenga la última versión mono (sin tener que compilarlos usted mismo) ) Este es un momento más seguro.
Además, con el lanzamiento de Roslyn, el soporte de VB.NET debería mejorar mucho en el futuro cercano.