Hola todos aquí les traigo este artículo sobre la plataforma Mono, especial para los programadores de C#.
Es importante aclarar que con este post no quiero iniciar ninguna polémica con respecto a que lenguaje es mejor, pues siempre he pensado que cada lenguaje de programación tiene su lugar en dependencia del tipo de aplicación que se desee hacer, del usuario final, los recursos del PC donde vaya a correr y que lenguaje de programación domina más el programador que va a realizar el proyecto, mas bien este articulo es para mostrar otro de los tantos lenguajes de programación que se pueden usar en Linux y enseñarle a los programadores de C# que existe un mundo mas allá de Micro$oft.NET y Visual Studio.
El Proyecto Mono fue propuesto por Migel de Icaza (fundador del proyecto GNOME, creador de los súper conocidos Midnight Commander y Gnumeric) con la idea de tener un entorno de desarrollo y producción (por supuesto bajo licencia GPL) utilizando algunas de las tecnologías propuestas por la plataforma .NET deMicrosoft.
Básicamente el proyecto Mono comenzó con un compilador de C#. La idea inicial era explorar hasta que punto el lenguaje C# y la arquitectura propuesta para su máquina virtual (VM) podían ser una opción que mejorara las condiciones de producción de los desarrolladores de software libre. Como lenguaje de programación, C# recuerda mucho al lenguaje Java.
Actualmente existen en el repositorio muchas aplicaciones desarrolladas con Mono las mas conocidas son:
– Banshee, reproductor musical por defecto en Ubuntu 11.10.
– Gnome-rdp, para conexiones de escritorio remoto.
– Tomboy, para crear notas en el escritorio.
– Gnome-do.
– F-Spot, visor y organizador de imágenes para elescritorio GNOME.
– Monotorrent.
Es importande decir que Mono es actualmente multiplataforma lo cual es una gran ventaja para los desarrolladores.
En próximos artículos hablare del IDE C# Monodevelop.
Buen artículo, y por sierto tampoco quiero crear polémicas. Llevo usando C# con .Net desde hace 5 años. El C# es muy buen lenguaje, pero sin las Clases Bases del .Net, es solo otro lenguaje más. Creo que el Proyecto Mono es un paso de avance para aquellos que llevamos tiempo usando esa tecnología y que permite migrar de forma relativamente sencilla aplicaciones creadas para entorno Wind a otros SO no propietarios.
interesante!…
En si considero que el proyecto Mono es una gran alternativa, pensaré más adelante en comenzar a usarlo , pues por ahora mis conocimientos son «uniplataforma» con C# en Windows 😉
Lo bueno de mono es que se integra perfectamente en Visual Studio, pensando en que no quieras usar el SharpDeveloper que es el que trae por defecto. Aunque no todo funciona al 100%, pero ya están tratando de portar todas las clases que componen el .Net. Actualmente soporta la versión del .Net 4.5. Una de las cosas que aún no funcionan y por ahora no tiene idea desarrollar por su complejidad es Windows Presentacion Fundation (WPF), y es lo que utilizo en mi caso, así que 🙁 por ahora. Pero aún así es una gran alternativa de desarrollo y tiene una funciones que son propias a él que están muy bien pensadas.
Ejemplo: ASP.Net se puede correr en Linux con apache y mod_mono. Silverlight con Moonlight. Soporta LINQ y otras técnologías existentes en .Net
Otra cosa es que existen ports para Windows, Linux, Android, iOS y casi cualquier Sist. Op. tanto PC como movil. Como otro punto a favor, en .Net nativamente solo se soportan BD Sql Server y ODBC y en Mono se soportan estas + Mysql, PostgreSql, Sqlite, Firebird, Oracle, NPgsql, etc…
Ademas el 90% la aplicaciones hechas con WindowsForms deben funcionar sin ninguna modificación, y en caso de hacer ajustes estos serían mínimos.
Una pregunta para los «monos» 🙂 . Tengo entendido que la BD de Etecsa 2012 (No la oficial que da ETECSA que es multiplataforma sino la que es una app junto a la BD ) esta hecha con C#, el tema es que nunca he podido ejecutar esa app desde Linux ni usando Mono ni Wine ni nada. Logre acceder a la BD de la del 2011 pues es con SQLite, pero la del 2012 me devuelve el error:
Error: file is encrypted or is not a database
Mis dudas son:
Alguien ha podido ejecutar esto en Linux? Como?
Si no es así… hay alguna manera de desencriptar la BD para yo hacer mi propia app???
Y por último, para si el/los que hacen estas app me leen o alguien se lo dice: ¿No podrían hacerla multiplataforma o al menos dejar la BD reutilizable para que alguien hiciera una versión para Linux y la pudiera compartir?
Yo tengo una version que incluye la BD de 2012, igualmente hecha con .Net 4.x creo, la BD es un SQLite3, asi que prueba a ver con visores de esa version…
LordFord.
Si son hechas con SQLite3. Como dije anteriormente yo logré acceder a la BD del 2011, ver tablas, registros, hacer consultas etc. La del 2012 tambien parece ser hecha con SQLite3 pero tal parece que la encriptaron porque cuando intento hacer lo mismo que con la del 2011 me da el error que puse.
Tengo malas noticias para ti, si la base de datos está encriptada no podrás hacer nada a no ser que conozcas la contraseña. Esto no es culpa ni de .Net ni de Mono, solo del desarrollador… 😉
Yo uso .Net y SQLite 3 en las aplicaciones que son para utilizarse en una PC y por lo general las encripto para que nadie con un conocimiento mínimo pueda acceder y modificar los datos, hay programa (no recuerdo el nombre) que permite por fuerza bruta buscar todas las combinaciones posibles para obtener la contraseña, pero demora una eternidad y te hablo de un Core i7. Así que si es para esto te aconsejo que desistas…
Se puede usar Entity Framework con Mono?. Actualmente trabajo con MVC 4 y de ahí no hay quien me saque pero si se puede correr la app en un server Linux sería genial. Otra cosa, desde que web nacional se podría descargar el SQLite para VS2012, podrían ponerlo en algún lugar?. slds.
A ver, mi modesta opinión para los «simios». No entraré en discusión si C# es buen lenguaje, o si es un burdo clon de Java + C++, o si lo único que sirve es .NET como framework. Se han detenido a ver las deps de una app en Mono, por ejemplo: Banshee o Docky:
mono-addins 413 k
mono-core 12 M
mono-data 2.2 M
mono-data-sqlite 106 k
mono-extras 453 k
mono-mvc 653 k
mono-wcf 1.5 M
mono-web 2.7 M
mono-winforms 2.9 M
mono-winfx 352 k
A mi entender es un malgasto de recursos para aplicaciones ridículas sea esta plataforma o no viable para el desarrollo. Otra cosita de Mono, es el garbage-collector, que al igual Java «sucks» ya que presenta los archiconocidos desbordes de memoria o «memory leaks» que te ponen la RAM en el techo cuando estas haciendo una app «Hello World».