December 22nd, 2011

Creando aplicaciones a la velocidad de la luz

Leonardo Filippelli

¿Cuántas veces hemos utilizado una planilla de cálculo para administrar algo o resolver un problema pensando en lo beneficioso que sería disponer de un software que nos permita hacerlo de manera más automática y eficiente?

¿Y cuántas de esas veces no lo hicimos solamente por no disponer del tiempo necesario para el desarrollo o porque la relación costo-beneficio no era atractiva? Visual Studio LightSwitch es una herramienta que nos permite crear aplicaciones muy rápidamente y escribiendo poco o nada de código, según la complejidad de la aplicación en cuestión.

Se basa en que, muy a grandes razgos, una aplicación de tipo enterprise consiste en lo siguiente:

  • Datos: En la mayoría de los casos tenemos una base de datos relacional.
  • Interfaz de usuario: Las pantallas que muestran los datos y permiten modificarlos.
  • Reglas de negocio: Las reglas y validaciones que dependen del problema que resuelve la aplicación.
  • Seguridad: Autenticación y autorización.

LightSwitch se encarga de estos 4 aspectos de forma automática, de manera que de tratarse de un simple ABM podamos levantar una aplicación en cuestión de unas pocas horas sin necesidad de escribir código. Cómo funciona? Básicamente se siguen estos pasos:

1) Se define la fuente de datos. Podemos usar una base de datos, web services o un sharepoint como fuente de datos para nuestra aplicación. También existe la posibilidad de crear “on the fly” las entidades sin depender de fuentes externas.

2) En base a la fuente de datos se identifican las entidades involucradas, las cuales pueden ser editadas en la aplicación cambiando los tipos de datos típicos de una tabla de una base de datos por otros que sean más orientados al negocio, por ejemplo si tengo la entidad “Empleado” y un atributo “sueldo”, puedo transformar el tipo de ese atributo de “double” a “Money”. También se pueden agregar atributos calculados que no se persisten.

3) Una vez que tenemos nuestras entidades definidas, creamos las pantallas que va a tener nuestra aplicación. Cada pantalla puede mostrar una o varias de las entidades de nuestro negocio. Tenemos templates de pantallas típicas como ser “Search screen”, “Details screen”, etc. Cada una puede ser configurada para que muestre datos, permita editarlos o no, agregar nuevos, borrar, etc. También se configura la navegabilidad entre las pantallas.

4) Una vez definidas las pantallas podemos agregar las restricciones de seguridad, en cuanto a autenticación y autorización. Además del típico login, se puede configurar cada pantalla para que sea accesible a cierto tipo de usuario, o incluso definirlo a nivel de campos de una pantalla en particular.

5) Listo, tenemos nuestra aplicación andando para lo que es un ABM típico. ¿Qué pasa si tengo que agregar lógica de negocio? ¿Cómo y dónde meto esto en algo tan automático? Es bastante simple, ya que Lightswitch es muy extensible. La manera de extenderlo es creando métodos, que pueden estar escritos en C# o VB, que se basan en tratar como objetos a las entidades del negocio y definen la lógica de la manera en la que lo hacemos en cualquier aplicación.

6) Ya tenemos la aplicación completa, ¿cómo la deployamos? Nótese que hasta el momento no hablamos en ningún momento de aplicaciones web o de escritorio, simplemente hablamos de aplicaciones en general. Esto es porque la creación de la aplicación es independiente del ambiente en donde se va a deployar luego, hasta el paso anterior no nos interesaba si era web o desktop, de hecho podriamos tener ambos “flavors” sin tener que reescribir una sola línea de código. Una vez que la aplicación está lista, podemos deployarla como desktop, web o incluso en la nube utilizando Windows Azure.

¿Cómo es que todas estas cosas funcionan sin meternos en temas de arquitectura, frameworks y otras yerbas? Por detrás lo que se termina generando es código C# o VB.NET utilizando varias de las tecnologías más actuales de Microsoft, tales como  ASP.NET, Silverlight, Entity Framework, WCF, entre otras. Lo bueno es que no tenemos que modificar ese código que se genera automáticamente, es algo totalmente transparente. Cuando extendemos el modelo simplemente agregamos un método a una entidad y eso es todo. Estos métodos no modifican de ninguna manera a la fuente de datos, son métodos de un objeto. Por ejemplo, si la fuente de datos es una base de datos, el objeto al que le agregamos el método está mapeado a una tabla, y el nuevo método es como si fuera una propiedad más del objeto que se calcula “on the fly”  en lugar de ser un dato que viene directamente de la base de datos. Dentro del código del método además de utilizar atributos del propio objeto (o de alguno que estuviera relacionado) también se pueden usar los métodos del framework .NET, utilizar linq, etc, todo lo que tenemos disponible normalmente al construir una aplicación .NET. Luego cuando se crea una pantalla, estos “atributos calculados” se pueden manipular de la misma manera que los que están mapeados a la fuente de datos.

La arquitectura subyacente se puede graficar de la siguiente manera:

Resumiendo, los principales beneficios de LightSwitch son:

  • Es una manera muy simple y rápida de construir aplicaciones enterprise.
  • Utiliza las últimas tecnologías de Microsoft, las mismas que solemos usar en las aplicaciones que construimos a diario.
  • Nos permite crear aplicaciones que pueden correr en el escritorio de un cliente, en la web o en la nube.
  • Es lo suficientemente simple como para que un “power user” pueda crear una aplicación sin tener skills de programación.
  • Es lo suficientemente extensible como para que un desarrollador pueda sacarle provecho.

En cuanto a las contras podemos nombrar lo siguiente:

  • A uno como desarrollador no le atrae demasiado la idea de desarrollar “orientad a datos”, sino que preferimos pensar en los objetos que forman parte del dominio del negocio independientemente de cómo se vayan a persistir luego.
  • No es la mejor opción para construir una aplicación compleja.

Como conclusión, LightSwitch no es la solución para la mayoría de las aplicaciones enterprise que solemos desarrollar en Hexacta. Sin embargo, creo que puede ser una valiosa herramienta para construir aplicaciones pequeñas y que no escapen ampliamente de lo que es un típico ABM, ya que se puede hacer realmente muy rápido y extender el modelo para agregarle lógica de negocio se puede hacer de una manera bastante simple y elegante.

En un próximo post mostraremos un ejemplo concreto de una aplicación creada y deployada de punta a punta utilizando LightSwitch.

Para más información:

http://www.microsoft.com/visualstudio/en-us/lightswitch

http://msdn.microsoft.com/en-us/lightswitch/gg604823

http://blogs.msdn.com/b/jasonz/archive/2010/08/03/introducing-microsoft-visual-studio-lightswitch.aspx

 

Dejar un comentario