Programming Course in C# ¡Free!

Que es el proyecto Mono

 Friday, August 17, 2018 published by Exercises C#





Patrocinado por Microsoft, Mono es una implementación de código abierto del Framework .NET de Microsoft basado en los estándares de ECMA para C # y Common Language Runtime.
Una creciente familia de soluciones y una comunidad de colaboradores activos y entusiastas están ayudando a posicionar a Mono como la elección líder para el desarrollo de aplicaciones multiplataforma.


Origen del nombre

Mono es el nombre de un proyecto de código abierto iniciado por Miguel de Icaza en la compañía Ximian y actualmente impulsado por Novell (tras la adquisición de Ximian) para crear un grupo de herramientas libres, basadas en GNU/Linux y compatibles con .NET según lo especificado por el ECMA


Modelo de arquitectura


Este incluye el CLI con la máquina virtual que se encarga de cargar las clases, el compilador Just-in-time y el garbage collector entre otros.

Tiene muy buena compatibilidad con el .NET Frawework de Microsoft en muchas librerías y a parte también cuenta con librerías extras como el GTK que permite crear interfaces gráficas nativas del toolkit GTK.

El modelo de arquitectura sería el siguiente:



Se pueden crear bastantes tipos de aplicaciones compatibles entre diferentes plataformas y sistemas. Es posible crear proyectos de tipo web con ASP.NET, conectar a bases de datos SQL Server o Oracle y crear aplicaciones de escritorio usando la librería GTK.

Si vas a desarrollar una aplicación multiplataforma usando Mono tendrás que tener en cuenta las diferencias sustanciales entre sistemas operativos como pueden ser el tratamiento de mayúsculas y minúsculas en Linux o la gestión de las rutas.


Plataformas compatibles


Una de las motivaciones principales de crear el proyecto Mono fue debido a la necesidad de crear aplicaciones para Linux de forma rápida y poco costosa.

Actualmente Mono tiene compatibilidad con bastantes más sistemas operativos:

Linux
macOS, iOS, tvOS, watchOS
Sun Solaris
IBM AIX
BSD - OpenBSD, FreeBSD, NetBSD
Microsoft Windows
Sony PlayStation 4
XboxOne



Lenguajes compatibles


La plataforma Mono tiene compatibilidad con multitud de lenguajes de programación ya que es fácil su integración en base a su arquitectura. El proyecto Mono proporciona compiladores en C#, Basic e llasm, a parte existen compiladores libres y comerciales que se pueden usar.

Ver una lista completa de todos los lenguajes de programación admitidos actualmente en este enlace.


Compatibilidad


Actualmente la compatibilidad entre el .NET Framework y Mono es casi total a excepción de WPF, WWF, las limitaciones con servicios web WCF y el uso de métodos asíncronos en ASP.NET.

.NET 4.7


.NET 4.6


.NET 4.5


.NET 4.0


.NET 3.5



Entorno de desarrollo


El entorno de trabajo recomendado si usas Windows es Visual Studio también puedes compilar tus binarios con Mono. Si programas en Linux o Mac OS X seguramente podrás trabajar con el IDE de Visual Studio. En cualquier caso existe la posibilidad de utilizar Mono Develop independientemente del sistemas operativo que tengamos instalado.


Nuevo Mono Interpreter


Una nueva característica de Mono es la integración de un intérprete .NET creando un proceso de compilación mixto, en el cual es posible realizar una pre-compilación y añadir código dinámico en la ejecución de nuestras aplicaciones.

$ mono --interpreter yourassembly.exe

Es una función bastante útil para desarrolladores de iOS, PlayStation o Xbox, ya que no realiza una compilación estática del código fuente y no genera un ejecutable nueva cada vez que se actualiza la aplicación, con lo que el proceso de ejecución es mucho más rápido en este tipo de sistemas.


Ejemplos de aplicaciones


Tomboy es un ejemplo aplicación de escritorio desarrollada en C# usando Mono y funcionando actualmente en sistemas Linux, Unix, Windows y Mac OS X.

Podeis ver más detalles en este enlace. Y una lista de más aplicaciones desarrolladas utilizando esta tecnología.