Autor en Google+
Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET, ASP.NET Core, MVC, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

10 años online 🎂

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET, ASP.NET Core, MVC, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 23 de abril de 2013
Los que me conocéis desde hace tiempo sabéis que mi interés por las herramientas de generación de código se remonta al principio de los tiempos, allá por los años noventa. Y era simplemente cuestión de pereza: siempre me aburría crear código repetitivo y me parecía bastante más interesante y divertido descubrir los patrones apropiados y diseñar herramientas capaces de liberarme de ese trabajo tedioso que muy frecuentemente acompaña a nuestra profesión.

Ya posteriormente, cuando empecé a compartirlas con mis compañeros de trabajo, pude comprobar que su utilidad y valor iban más allá de evitar mi aburrimiento. Realmente, con el uso de este tipo de herramientas conseguíamos crear aplicaciones con arquitectura y base de código homogéneas, a la vez que disparábamos nuestra productividad, reducíamos errores, y nos permitía concentrarnos en funciones y desarrollos que realmente aportaban valor nuestros clientes, por citar sólo algunos de sus beneficios.

RadarcPor esta razón, cuando los amigos de Icinetic me ofrecieron la posibilidad de colaborar estrechamente en el desarrollo de fórmulas para Radarc, no pude negarme. Esta empresa, una spin-off de la Universidad de Sevilla y con sede en esta misma ciudad, está muy enfocada a la automatización de procesos de desarrollo de software mediante el uso de Ingeniería Guiada por Modelos (MDE, Model-Driven Engineering) y con el objetivo final de crear software más rápidamente y con mayor calidad que usando los paradigmas tradicionales.

Radarc, su producto estrella, es una extensión de Visual Studio capaz de tomar un modelo conceptual del dominio de una aplicación y construir a partir de él una aplicación completa adaptada a distintas tecnologías y arquitecturas gracias a su flexibilidad.

Radarc: Model + Formula = ApplicationConceptualmente, Radarc se apoya en dos elementos para generar las aplicaciones. Por un lado, tenemos el modelo conceptual de la aplicación, que es en resumen un conjunto de entidades del dominio, relaciones entre ellas y metadatos que describen los requisitos y estructura del sistema sin entrar en detalles de implementación.

Por otro, tenemos “fórmulas”, que contienen la lógica de generación de aplicaciones para tecnologías y arquitecturas concretas, es decir, todos los detalles de implementación en el entorno elegido. Gracias a esta separación entre el qué y el cómo, es posible generar distintas aplicaciones partiendo del mismo modelo conceptual.

Por último, indicar que se trata de un producto comercial, aunque es posible descargar una versión de evaluación para poder probarlo con toda tranquilidad.

Ah, pero antes de que se me olvide: por cortesía de Icinetic, se van a sortear 5 licencias de Radarc entre los lectores de Variable not found. Al final del post encontraréis las instrucciones para participar :-)

1. Instalación y primeros pasos

Para comenzar a utilizar Radarc, lo primero es descargarlo desde el sitio oficial del producto, o bien instalarlo usando el administrador de extensiones de Visual Studio. Hay versiones disponibles para VS2010 y VS2012, aunque ésta última es la más recomendable por ser la versión más actualizada.

Si optamos por descargar la versión para VS2012 obtendremos un archivo .zip en el que podemos encontrar varios elementos, como un modelo conceptual de ejemplo y documentación sobre el uso del producto (sí, esos documentos que después no solemos leer ;-)). Aparte, encontramos dos archivos .vsix (extensiones de Visual Studio) que son los que hay que instalar para introducir Radarc en nuestro IDE; primero RadarcVS2012.vsix, y después, opcionalmente, RadarcEDMXExtensions.vsix.

A partir de ese momento, estará disponible en el entorno un nuevo tipo de proyecto, denominado Radarc Solution, que es la que tendremos que utilizar para crear aplicaciones con esta herramienta.

Nueva solución Radarc


Selección de fórmula
Al crear una solución de este tipo, el siguiente paso consiste en seleccionar la “fórmula”, o combinación de arquitectura y tecnología a usar, en nuestra nueva aplicación. La última versión de Radarc para Visual Studio 2012 soporta en la actualidad fórmulas para MVC 4, Windows Phone 8 y Windows 8. La separación entre el modelo conceptual y las fórmulas, una de las bases de la flexibilidad de Radarc, hace posible la extensión hasta el infinito de la herramienta; por ejemplo, usando la fórmula apropiada es posible generar aplicaciones específicas para Azure, o basadas en la famosa arquitectura de referencia Domain Oriented N-Layer, o incluso crear fórmulas personalizadas para adaptar la generación de código de Radarc a nuestra propia arquitectura.

Descargar evaluación de fórmulasLas fórmulas podemos adquirirlas directamente desde el sitio web de Radarc, aunque es posible descargar versiones de evaluación de forma gratuita. Para ello, sólo tendremos que seleccionar el correspondiente tipo de licencia a la hora de añadir el producto a la cesta de la compra, como se aprecia en la captura de pantalla adjunta.

Una vez finalizado el proceso de compra o registro (en caso de ser versión de evaluación), podremos descargar un archivo de fórmula (con extensión .rff) e instalarlo en Radarc usando la opción disponible en el cuadro de diálogo.

Hecho esto, podemos seleccionar la fórmula en el cuadro de diálogo y continuar con la creación de nuestra aplicación.
Nota: en este artículo vamos a continuar estudiando la fórmula MVC4, en cuyo desarrollo he participado, aunque conceptualmente el proceso y características son similares al resto de fórmulas.
Justamente después, Radarc solicitará alguna información básica sobre la aplicación que deseamos generar, como el espacio de nombres por defecto, la denominación de la aplicación, información sobre la conexión al servidor de base de datos, e incluso podremos seleccionar el estilo visual (básicamente el juego de colores) a emplear:

Configuración de la solución

Una vez completado el formulario, cuyos valores por defecto son correctos para hacer pruebas rápidas, basta con pulsar el botón Deploy, y Radarc comenzará a crear la estructura básica de nuestro proyecto. Tras esperar unos segundos tendremos el esqueleto del sistema creado, aunque aún no será de utilidad porque todavía no hemos indicado información sobre el dominio.
Solución Radarc con fórmula MVC 4

Tras ese primer despliegue, la solución que encontramos en Visual Studio consta de cinco proyectos, prácticamente vacíos hasta que comencemos a definir el modelo, y que aparecen en el interior de carpetas de solución según las capas lógicas en las que se definen:
  • DomainModeling, que guardará el modelo del dominio que describe la aplicación. No contendrá código ejecutable ni compilable, sólo lo usaremos para la definición conceptual del dominio.
  • Mvc, que es la implementación en ASP.NET MVC de la capa de presentación del sistema.
  • Services, que contendrá todos los componentes propios de la capa de servicios (o aplicación, en este caso).
  • Services.Tests, donde encontraremos pruebas unitarias, también generadas, de los componentes de servicio.
  • Entities, donde se definirán las entidades y mecanismos de persistencia del sistema.
El siguiente paso será definir el dominio de nuestra aplicación

2. Definición del modelo y generación de aplicación

Radarc utiliza un DSL (Domain Specific Language) para la definición de las entidades, relaciones entre ellas, e indicar metadatos de interés para reflejar el dominio de la aplicación. Para facilitar su uso y simplificar su adopción, la versión actual de Radarc utiliza para ello el mismo diseñador de modelos de Entity Framework(archivos .EDMX); en el futuro está previsto sustituirlo por otro más potente y que permita mayor expresividad a la hora de plasmar el modelo.

De esta forma, la definición del dominio la haremos con el editor de modelos conceptuales de Entity Framework, a base de arrastrar y soltar, y editar valores en la caja de propiedades. Algo realmente sencillo si ya habéis trabajado con EF en modo database-first o model-first. Es importante en cualquier caso tener en cuenta que el EDMX será usado exclusivamente como DSL para definir el modelo.

El modelo a partir del cual será generada la aplicación se encuentra en el proyecto DomainModeling, carpeta Models. Radarc tomará de aquí el archivo .EDMX que haya (no importa el nombre), analizará el modelo y generará el código de la aplicación, como veremos más adelante. De momento, para continuar describiendo el proceso, lo haremos con el siguiente modelo, donde indicamos que nuestra aplicación gestionará amigos, éstos viven en una ciudad determinada, y pueden estar clasificados con múltiples etiquetas:

Modelo conceptual
Por supuesto, además, de las entidades y relaciones podemos indicar información extra sobre las propiedades, como su obligatoriedad o tamaño (en el caso de tratarse de textos). Observad que en el modelo he incluido cardinalidades 1..* y *..* entre las entidades, para que veáis el tratamiento que da Radarc a las mismas.

Hecho esto, estamos ya en disposición de generar nuestra aplicación, proceso que podemos iniciar desde el menú principal de Visual Studio, o bien desde el panel Radarc, mostrado en la siguiente imagen, al que podremos acceder haciendo clic sobre la opción “Radarc” en el mismo menú.

Panel Radarc
Desde este punto podríamos seleccionar qué elementos deseamos incluir en la generación de código, e incluso si queremos generar artefactos concretos. Dejándolo todo seleccionado, pulsamos “Generate” y la herramienta comenzará a analizar el modelo y aplicar las plantillas de la fórmula elegida, en este caso MVC 4, para crear en cada uno de los proyectos de la solución los componentes necesarios. Tras esperar unos segundos, tendremos nuestra aplicación lista… y si pulsamos F5 directamente, ¡hasta funciona! :-)

Aplicación en funcionamiento

3. El resultado

Desde el punto de vista funcional, Radarc habrá generado una completa aplicación desde la que podremos gestionar todas las entidades definidas en el modelo, es decir, mantenimientos completos (consulta, altas, edición, eliminación) de las entidades teniendo en cuenta las particularidades de sus propiedades, y las relaciones entre ellas.

A continuación se muestran algunas capturas de pantalla que muestran la interpretación que ha hecho Radarc del modelo y cómo lo ha plasmado a nivel de aplicación.

Pantalla de gestión de ciudades:
Pantalla de gestión de ciudades

Edición de amigo:
Edición de amigo

Asignación de etiquetas a amigo:
Asignación de etiquetas a amigo:

Edición de etiquetas y asignación de amigos (ahora en inglés, la aplicación generada es multi-idioma!):
Edición de etiquetas y asignación de amigos

Edición de ciudades y asignación de nuevo amigo:
Edición de ciudades y asignación de nuevo amigo

Y, por supuesto, también podemos ejecutar los tests generados en la solución y comprobar que todo funciona correctamente:

Ejecución de Test

Si examinamos el proyecto generado, podremos observar que por cada una de las entidades definidas en el modelo, Radarc ha creado resumidamente:
  • En el proyecto Entities, un contexto de datos de EF 5.0 dando acceso a las colecciones de datos (DbSet), así como las correspondientes clases POCO para las entidades y sus mapeos al mundo relacional.
  • En el proyecto Services, una clase de servicios (y su interfaz) con las principales operaciones a realizar sobre las entidades (creación, eliminación, búsqueda, etc.).
  • En el proyecto Services.Tests las pruebas de integración correspondientes a las operaciones definidas anteriormente.
  • En el proyecto Mvc,
    • Controladores con las operaciones disponibles desde el interfaz de usuario para cada entidad.
    • Vistas para cada una de estas operaciones.
    • Clases view model para estas vistas.
    • Mapeos entre view models y entidades del modelo, usando Automapper.
    • Componentes de registro en el contenedor IoC Unity.
Para facilitar la propia evolución del software, el fuente generado incluye múltiples puntos de extensión que posibilitan la introducción de código personalizado sin riesgo de que sea sobrescrito si por cualquier causa queremos regenerar el proyecto usando de nuevo la operativa descrita anteriormente.

Lo mejor que os puedo recomendar para que os hagáis una idea del potencial de esta herramienta es que la descarguéis y probéis en vuestro entorno, y podáis ver en qué punto de vuestro proceso de desarrollo podría encajar. Cread vuestro propio modelo, generad la aplicación, probadlo, e intentar calcular mentalmente cuánto tiempo os habría costado desarrollar algo similar de forma manual ;-)

Pero ojo, no penséis que Radarc es la panacea y va a solucionar todos vuestros problemas para siempre. Como todas las herramientas del mundo, tiene sus ámbitos de aplicación en los cuales es más útil, como entornos empresariales donde existe mucho código repetitivo (por ejemplo, aplicaciones con cientos de mantenimientos de datos o arquitecturas pesadas que obligan a mantener muchos archivos con convenciones y patrones claros de estructura, nombrado y ubicación). También puede ser interesante desde el punto de vista de la formación, pues el código generado muestra arquitecturas y buenas prácticas que pueden resultar enriquecedoras para aquellos que se están iniciando en una tecnología. Y desde luego, para crear prototipos rápidos no tiene precio ;-)

4. Vale, todo esto está muy bien, pero yo lo que quiero es mi licencia para probarlo con fundamento… ;-)

Bueno, en realidad para probarlo podría bastar con la licencia de evaluación ;-), pero aún así, como adelanté al principio del post, Icinetic ofrece 5 licencias premium de fórmulas Radarc, valoradas en 400$ cada una, para sortear entre todos los lectores que durante los próximos siete días manifiesten su interés en conseguirla a través de un comentario en este post, el formulario de contacto, Twitter, Variable not found en Facebook, señales de humo, o como sea ;-)

Simplemente decid en qué fórmula Radarc estaríais interesados y dadme alguna forma de contactaros si sois los afortunados (aviso: no pongáis el mail en claro en un comentario, que luego os fríen a spam y me echáis la culpa; en ese caso, mejor podéis usar algo creativo pero legible como “soy manolito en h0tmail punt0 c0m” ;-))

¡Rápido, que vuelan!

Publicado en Variable not found.

Estos contenidos se publican bajo una licencia de Creative Commons Licencia Reconocimiento-No comercial-Compartir bajo la misma licencia 3.0 España de Creative Commons

33 Comentarios:

Anónimo dijo...

Me gustaría probar Formula MVC4
Si tengo suerte puedes contactar con (patxiba arroba hotmail punto com)

Carlos Corral Carvajal dijo...

Hola crack,

Apuntame para el sorteo :) en corral.carvajal arroba gmail punto com

En cualquier caso ya estoy bajando la App de evaluación que para aprender buenas prácticas vendrá de lujo,

saludos

Anónimo dijo...

Hola Quini,

Estoy interesado en formula MVC4, soy Javi Cantos estoy en jcantos arroba gmail com

Juanma dijo...

Hola,

Nunca me han convencido este tipo de soluciones que tratan de aplicar la misma receta a todas las aplicaciones.

Creo que en aras de seguir esas "prácticas recomendadas" se acaban construyendo "monstruos" demasiado complejos para los requisitos reales.

Si la arquitectura resulta pesada, seguramente sea mejor plantearse si es necesaria en lugar de "taparla" con herramientas, y si al final lo que tienes es una aplicación CRUD, creo que tampoco hay que complicarse tanto.

Dicho esto, que no deja de ser una opinión personal y muy discutible, me alegra mucho ver que salen adelante este tipo de proyectos en España, que luego parece que aquí sólo hay sol y playa.

Además estoy seguro de que por el tipo de producto tendrá su público y habrá gente a la que le resulte muy útil.

Mucha suerte con el proyecto.

Juanma.

Sergio León dijo...

Jose María... sin palabras O_o

He hecho la prueba con ASP.NET MVC4 y me ha encantado, tanto para ver código bien hecho de terceros como para pensar si incorporarlo en algún desarrollo real (esto en función de la extensibilidad, aunque he visto que esto todo muy organizado y parece que resultará sencillo meterle mano).

Genial, quiero mi licencia YA!!! ;-)

En serio, genial aplicación!

Elbrinner dijo...

Tiene buena pinta.

Estoy interesado en probar. elbrinner [at] elbrinner .com

Sergio dijo...

Siempre me tomo este tipo de herramientas con mucho cuidado porque luego se usan para lo que no son y pasa lo que pasa.

De todas formas la primera impresión es muy buena y me la apunto para mirar esta tarde en casa. Y ya que estamos, pues me apuntas para el sorteo de una de las licencias (@smarrerof).

francisco vega dijo...

Excelente herramienta, estoy interesado en la formula mvc4 azure de radarc.
Estoy seguro que le daré buen uso si me gano una licencia

Y si gano no dudes en contactarme a franciscovega2010 en el correo caliente

Reynier dijo...

Hola Jose M,

Intersadisimo en la version MVC4 apuntame deumber arroba gmail punto com

Anónimo dijo...

definitivamente me apunto, formula para MVC4, para herlib en gmail punto com.

andres descalzo vazquez dijo...

Hola me interesaria mucho tener una licencia "andres descalzo arroba gmail punto com"

desde argentina

Rafael dijo...

holas, estoy interesado en MVC4 Formula, contactame a r a f a e l h t 1 9 7 6 @ g m a i l . c o m

Anónimo dijo...

Trabajo con MVC y con Entity Framework hace un par de años y no sabía de la existencia de este tipo de proyectos. Lo probaremos por supuesto, me apunto. a g u i l a n d e r o ARROBA g m a i l PUNTO c o m

Anónimo dijo...

Muy interesante , ya lo he probando y me gusta.

Si me toca, me contactas en fpeguero en gmail

gracias,
buen articulo

Anónimo dijo...

Hola Quini,

Soy Er Montié y voy a probar suerte, MVC4. Estoy disponible en la cuenta del curro que ya conoces ¿te parece suficiente ingenio? ;-))

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Unknown dijo...
Este comentario ha sido eliminado por el autor.
Gabriel Porras dijo...

Yo también estoy interesadooooo...
Eso está muy interesanteee y suena super hyper mega productivoooo...
Gracias....

Me puedes enviar el premio a ghporras en gmail. jejejje

Y que graciassss!!

Anónimo dijo...

Sin duda me decanto por MVC4
apr3nd1z_hurb4n0 arroba live punto com punto mx

Este correo es para contactarme por si gano.

Marce dijo...

Hola, estoy interesado en formula MVC4, soy Marcelo Lauret ( marcxp (a) Hotmail com )

Miguel Ángel Martín Hernández dijo...

Buenas! Después de ver como funciona, la calidad del código de lo que monta puedo decir que me he quedado asombrado.Genial!!

Me gustaría participar en sorteo Fórmula MVC4.
mookiefumi ARROBA outlook PUNTO com

fito dijo...

Se ve excelente me parece interesante probar la de MVC4 y la de WP8 no sé si hay de WPF que también sería interesante.

El contar con la licencia es ideal, pues en Venezuela no contamos con esa cantidad de dinero por el control cambiario y demás "pegas" de las medidas económicas, por eso quisiera una licencia.

Para el contacto pues @otif11 en twitter y gmail.

Saludos.

José Ignacio Pérez Culla-González dijo...

Hola me gustaría que me tocase la Formula MVC4.

Para contactar en twitter @sentach
por otro medio jipcgr at h0tmail punto com

Un gran trabajo este blog.

Un saludo.

saleloco dijo...

Hola José, estoy participando en una licencia, ya que es para mi mama que le encanta desarrollar jajaja mi ser saullopezcXgmailXcom

Joel Martinez dijo...

Hola, se ve genial el producto.
Me gustaría participar en el sorteo, estoy interesado en la licencia para MVC4. Contacto: Joel.martinez arroba outlook punto com.

Gracias !!!

Rodrix dijo...

Hola,

Apuntame para obtener la licencia en rodrigo.esp83 arroba gmail punto com.

Me interesa la formula de mvc 4.
Un saludo

Rodrix dijo...

Hola,

Apuntame para obtener una licencia en rodrigo.esp83 arroba gmail punto com.

Estoy interesado en la formula de MVC 4
Un saludo.

Spockkkk dijo...

Me gustaría probarlo! Tiene muy buena

Carlos dijo...

Hola! Me gustaria poder generar aplicaciones sin tener que escribir codigo repetitivo y mundano :)

Mandingorra dijo...

Hola, estupenda colaboración, soy excompañero y amigo de Pedro J. Molina un crack en toda regla y espero que hagáis colaboraciones de este tipo.

Es una maravilla ver estos productos y encima producto español, que en estos momentos es muy necesario.

Muchas gracias por todo.

Ah!! apuntame al sorte para formulas MVC 4.
mi correo es: mandingorra arroba gmail punto com

Un saludo.

Anónimo dijo...

Estoy en c a r l o s l l u n a _en_ g m a i l . c o m

Betto Geldres dijo...

Excelente! Mi correo es bettogeldres arroba gmail . com

Rafael Menchaca dijo...

Creo que yo ya estoy un poco tarde, aunque desde hace 15 días estoy evaluando esta herramienta con la fórmula del MVC4 precisamente, me ha parecido muy interesante, y me encantaría contar con la licencia, pero si no es posible, por lo menos me gustaría saber si cuentan con algo más de documentación, ya estuve buscando en el sitio de Radarc.net en el web de icinetic y lo que he encontrado es muy genérico. Pueden contactarme en rmenchaca arroba gmail. Muchas gracias!