¿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:
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:
En cuanto a las contras podemos nombrar lo siguiente:
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