Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Tutoriales / Introducción a la plataforma .NET y Mono - Proyecto Mono

Introducción a la plataforma .NET y Mono - Proyecto Mono

 ****- (7 opiniones)
Creative Commons Tutorial de Patxi Echarte - 27 de Abril de 2006
Temas Relacionados: ASPMicrosoft .Net
3. Proyecto Mono

Mono es un proyecto de implementación del Framework .NET de Microsoft utilizando código libre (open source), gestionado por Ximian y basado en las especificaciones definidas en ECMA.

Actualmente el proyecto puede considerarse bastante maduro en muchos aspectos, dispone de una versión compatible con la versión 1.1 del Framework y tiene muy avanzadas características de la versión 2. Aparte se están desarrollando partes que no son específicamente de la plataforma, como ADO.NET, WinForms y ASP.NET.

Contexto del proyecto

Uno de los objetivos del proyecto GNOME de Ximian, ha sido el poder disponer en entornos Unix de herramientas comparables y competitivas con las existentes en el mercado de aplicaciones de escritorio. Al desarrollar GNOME se pudo comprobar como era importante disponer de una independencia respecto a los lenguajes de programación, para lo cual se diseñaron las GNOME API de forma que fueran fácilmente utilizables desde diferentes lenguajes, mediante la utilización sencilla de wrappers. Actualmente la API de GNOME está disponible para múltiples lenguajes de programación como Perl, Python, Escheme, C++, Objetive-C, Ada.

Algo más tarde, se comenzó a usar CORBA con el objetivo de definir interfaces para los distintos componentes y encapsular las APIs. Esté trabajo derivó en la creación de Bonobo, del que actualmente existen interfaces desde C, Perl, Python y Java.

La plataforma .NET, busca unos objetivos muy similares a los buscados por GNOME, ofrecer una independencia de lenguaje a los programadores, así mismo es también más madura, documentada, más amplia en su ámbito de actuación y tiene un diseño consistente. Cualquier API que se escriba utilizando un lenguaje que genere código para el CLR puede usarse desde cualquier otro lenguaje que genere código para esta plataforma.

La plataforma creada por Microsoft tiene una serie de puntos muy interesantes para el proyecto, como son:

  • Un entorno virtual de ejecución (CLR o VES), que provee recolección de basura, threading…
  • Una librería de clases potente y comprensible
  • Un nuevo lenguaje muy similar a C++ o Java, C#.
  • Una especificación de lenguaje que pueden seguir los compiladores, con el fin de generar código que pueda interactuar con otros lenguajes de programación (CLS)

Implementación de Mono

La iniciativa .NET de Microsoft es un proyecto de toda la compañía bastante difuso, una parte del cual es el framework de .NET. Mono es una implementación de este framework, pero de nada más relacionado con .NET, como Passport o software como servicios.

Los objetivos iniciales del proyecto Mono eran implementar en un entorno de software libre para el mundo Unix la especificaciones ECMA, para lo cual se incluye un compilador para C#, un entorno de ejecución CLR y un conjunto de librerías de clase que incluyen las FCL, así como otras añadidas.

Ximian (actualmente Novell) no tenía el tamaño ni los recursos suficientes como para abordar un proyecto de esta envergadura por si sola, por lo que cuando el proyecto alcanzó cierto nivel de realización se abrió a la comunidad para buscar nuevos colaboradores. El interés que suscitó el proyecto desde un comienzo fue muy grande, lo que hizo que multitud de desarrolladores se involucrarán en el proyecto fue muy grande. Este interés provocó también que partes de la tecnología, como ADO.NET, ASP.NET o WinForms, que inicialmente no estaban contempladas, o no eran prioritarias, se comenzasen a implementar.

En los puntos siguientes se comentan algunas de las partes de las que consta el proyecto:

Mono Runtime

Sería el equivalente al Common Language Runtime o entorno virtual de ejecución. Implementa un compilador JIT para el CIL de la máquina virtual, un compilador Ahead-of-Time (AOT), un cargador de clases, un recolector de basura, el sistema de thereadings y las librerías de acceso a los metadatos.
En estos momentos existen dos entornos de ejecución:

  • Mono: compilador JIT y AOT. Únicamente soporta máquinas x86 por el momento.
  • Mint: intérprete de mono. Es un entorno fácil de migrar a nuevas plataformas.

El entorno de ejecución se puede utilizar también embebido dentro de otra aplicación, de forma que se pueden extender aplicaciones C y C++ mediante C#.

En comparación con la solución ofrecida por Microsoft Mono incluye un intérprete y la opción de utilizar el runtime de forma embebida en una aplicación.

Mono funciona tanto sobre plataformas de 32 bits como de 64 bits: s390, SPARC, SPARCv9 (64 bits), PowerPC, x86, x86-64 (64 bits), así como sobre diversos sistemas operativos: Linux, MacOS X, BSD, SUN SOLARIS y Microsoft Windows. Aparte el intérprete puede ejecutarse sobre otras plataformas como HP-UX. Hay más información al respecto en la página de información del Mono runtime en el web del proyecto.

El runtime es completamente operativo, aunque es posible que siga evolucionando en sentidos como optimizaciones para el compilador Just In Time o el recolector de basura. Dentro del runtime se soportan también mecanismos que permiten a las aplicaciones hechas en mono comunicarse con otras aplicaciones, o utilizar librerías externas.

  • PInvoke: es el mecanismo que se utiliza desde el código gestionado para acceder a librerías externas. Se está utilizando en mono para acceder a llamadas de la API de Unix, así como para comunicarse con librerías del sistema.
  • Remoting: Mono tiene soporte para Remoting y objetos Proxy. El entorno de ejecución facilita este tipo de servicios.
  • COM and XPCOM: no se prevé añadir soporte para XPCOM en Unix y COM en Windows.

Class Library

Se ha buscado una compatibilidad total con la implementación .Net de Microsoft. La librería de clases se está desarrollando en C# y puede ser utilizada por cualquier lenguaje, gracias al Common Language Specification. Hay ya desarrollada una gran parte de las clases pertenecientes al Framework Class Library, lo que sumado a la madurez del runtime, hace que sea posible realizar gran cantidad de aplicaciones, aunque sin olvidar que actualmente se va por la versión 0.26, por lo que es posible que encontremos algún bug. El proyecto dispone de una página en la que se informa del estado exacto de desarrollo de cada parte de la plataforma.

Compilador C#

El compilador de C# (MCS) de mono en estos momentos se considera que cumple la especificación, por lo que es un producto relativamente maduro. MCS está escrito en C# y es capaz de compilarse a si mismo desde enero de 2002, así como a otros muchos programas.

Otras tecnologías

En los siguientes puntos se comentan algunas tecnologías que están siendo desarrolladas, pero que no forman parte de la especificación ECMA.

  • VisualBasic: Mono incluye un compilador para MonoBasic (mbas). Gracias a la independencia de lenguaje, el código escrito en MonoBasic puede ser utilizado desde C# y viceversa. Está actualmente en fase de desarrollo y queda bastante trabajo pendiente.
  • ADO.NET: se dispone de providers para un buen número de bases de datos, superior de hecho al ofrecido por Microsoft. Todavía queda bastante trabajo por realizar, sobretodo en lo referente a completar los providers, realizar herramientas necesarias como xsd.exe, y terminar la librería de clases.
  • ASP.NET: es una tecnología muy potente para la creación de sitios web y servicios web. Al igual que el resto, es independiente del lenguaje, por lo que podemos tener páginas escritas en Pascal, Logo, Basic, C#, C++,… dentro de la misma aplicación. Las páginas son compiladas, por lo que su ejecución es muy rápida. Ofrece también un modelo de acceso a los elementos de la página mediante objetos, un manejo de los mismos a través de eventos, o un control del estado de la página, entre otras características interesantes. La implementación se divide en dos partes, Web Forms y Web Services. Ambas son funcionales en este momento. Pese a ser funcinal, queda bastante trabajo para hacer la implementación compatible con la solución de Microsoft. ASP.NET puede funcionar tanto con el servidor xsp.exe o con el módulo mod_mono de apache.
    • XSP: es un pequeño servidor web que se utiliza para ejecutar aplicaciones ASP.NET.
    • mod_mono: es el módulo de conexión de apache con ASP.NET, de forma que se pueda utilizar apache para servir páginas ASP.NET. El proyecto está en curso y aunque funciona queda bastante trabajo pendiente.
  • GTK#: es un conjunto de clases realizadas en C# que permiten el acceso a GTK+ y otras librerías que forman parte de GNOME. Funciona tanto sobre Linux como sobre Windows. Hay ya aplicaciones desarrolladas sobre esta tecnología, aunque aún queda trabajo. La versión actual es la 0.10.

Licencias

Mono usa tres tipos de licencia:

  • Las librerías de clases están bajo una licencia X11. Este tipo de licencia permite prácticamente cualquier uso del código, incluido copiarlo y usarlo en una aplicación propia. El único requisito es que se mantenga la información de copyright de los archivos. No es necesario siquiera indicar que se está utilizando software bajo licencia X11.
  • Las librerías del runtime, como el JIT, se distribuyen bajo licencia LGPL. De esta forma si se realiza un programa que linke con ellas, se puede mantener bajo código propietario. Sin embargo es necesario permitir que se pueda enlazar con versiones más recientes de las librerías. La forma más fácil de hacer esto sería linkando dinámicamente con ellas. Esto obligaría al usuario a descargar e instalar mono por separado.
  • El resto de aplicaciones, como mono o mcs, usan una licencia GPL. Por lo tanto cualquier aplicación que estén basadas en ella, deberán mantener esta licencia.

En lo que respecta al cumplimiento de las patentes de software, las partes contempladas en el estándar ECMA no tienen ningún problema ya que se permite a cualquiera implementar esos componentes gratuitamente y para cualquier propósito. Sin embargo, cuestiones referentes a ADO.NET, ASP.NET y WinForms, son bastante diferentes. La estrategia de Mono ante estas tecnologías es la siguiente:

  1. Evitar la patente utilizando otros mecanismos para implementar la misma funcionalidad
  2. Eliminar las porciones de código bajo patente
  3. Encontrar algo más novedoso que deje en sin uso a la patente.

A continuación se muestra un gráfico que representa algunos de los diferentes tipos de tecnologías que se están implementando en Mono. Los elementos señalados en azul, son los correspondientes a ECMA y que no están bajo ningún tipo de patente.

Partes de Mono

Autor y licencia de 'Introducción a la plataforma .NET y Mono - Proyecto Mono'
Patxi Echarte Extraído de: http://www.eslomas.com/index.php/archives/2005/05/11/introduccion-plataforma-net-y-mono/

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
De forma general todos los contenidos de este web están sujetos a una licencia del tipo Creative Commons “Algunos derechos reservados”. Salvo que se diga lo contrario la única restricción impuesta si quieres utilizar algo de lo que aparece en este web, es la de indicar que el autor soy yo, Patxi Echarte.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Introducción a la plataforma .NET y Mono - Proyecto Mono'

Este trabajo se enfocará en tres figuras diferentes que la mujer ocupa en la poesía... Más »
Nos complace presentar el Plan detallado de consultoría y formación que Luis E. Vásquez ... Más »
Si no tenemos claro quienes van a interpretar a los personajes de nuestra historia tenemos... Más »
Cuando estás formulando un proyecto de inversión, lo primero es determinar si la idea es... Más »
El presupuesto financiero, es el estudio mediante el cual se identifican los diferentes costos y... Más »
¿Estás seguro de que deseas eliminar este capítulo?