Un cliente nos contactó para que le asesoráramos sobre la mejor forma de renovar su despliegue informático. Tiene un aula con un servidor windows y una docena de equipos clientes para sus alumnos. En esta aula solo corre un software para su nicho de enseñanza. Es un software propietario hecho en .NET: una parte servidora de licencias y contenidos, y un visor de contenidos en cada equipo. Los ordenadores tienen ya una edad, y un windows desactualizado.

Actualizar su infraestructura implica comprar equipos nuevos, y licencias de windows profesional para el servidor y para esa docena de clientes. Equipos nuevos sobredimensionados para soportar un sistema pesado, y un coste de licencias disparatado, simplemente para ejecutar un único programa.

La Raspberry Pi es un ordenador de bajo coste (Entre 25 y 52 euros segun el modelo que elijamos). Con un procesador de 700-900MHz single-quad core y 512MB-1GB de memoria, según los modelos, puede valer perfectamente como cliente de una aplicación sencilla como es el caso, conectandole un teclado + ratón USB y un monitor HDMI. El disco duro se sustituye por una tarjeta SD, que es fácilmente clonable y sustituible en caso de avería.

Pero para materializar esto hay dos dificultades, la arquitectura del procesador, que en el caso actual es x86 y en la Raspberry es ARM, y el sistema operativo, que en el caso actual es Windows y en la Raspberry es Linux.

La diferencia de arquitectura implicaría usar emuladores estilo QEMU. Y la diferencia de sistema operativo, implicaría usar WINE. Ambas cosas simultaneamente pondrían el rendimiento de la solución a cero. Camino descartado.

.NET nació como respuesta de Microsoft al Java de Oracle. De igual manera que este, las aplicaciones no se crean/compilan para un sistema operativo + arquitectura concreta, sino en formato CIL para un núcleo común a todos llamado CLR. Aunque Microsoft solamente hizo este CLR para Windows y x86/64, existe una implementacion libre llamada Mono que funciona sobre Windows Linux y Mac y para muchas arquitecturas entre ellas ARM.

De haber tenido el código fuente de la aplicación (Visual Basic), se podría haber adaptado a Mono y haber ejecutado directamente esta aplicación de forma nativa en Raspberry Pi, con el ahorro de costes y facilidad de despliegue. Pero dado que no lo teníamos, se tuvo que abortar el proyecto.

Durante las pruebas, se logró ejecutar el KeePass Professional Edition usando una raspbian jessie con el mono 4.2 de Xamarin y una Raspberry Pi modelo 2 (la modelo 1 es armv6 y no es compatible con el mono de Xamarin).

Ejecucion de keepass en raspberry pi 2

Si en tus clientes vas a ejecutar aplicaciones que existan nativamente en Linux, como pueden ser Navegadores Web, Ofimática, Multimedia o Streaming, clientes remotos, etc... prueba con Raspberry Pi. Tambien para desarrollos en Java, y visto lo visto, con un poco de suerte .NET/Mono.