MVC5 Y SHAREPOINT

Se dice que un camino de 20.000 millas empieza con un paso pero, ¿no estaría genial que tuviésemos un punto inicial fuerte desde el que empezar a andar?

Está claro que cuanto más azúcar, más dulce, pero, ¿existe algún framework en el mercado actual que me permita ser extremadamente productivo, destinado exclusivamente a la web y que ayude al desarrollador en vez de perjudicarle y darle quebraderos de cabeza a la hora de hacer pasos repetitivos? La respuesta es sí. Ese framework pertenece a la plataforma .NET y se llama MVC 5.

Basado en el patrón GOF de diseño Modelo-Vista-Controlador, MVC 5 es un framework desarrollado exclusivamente para la creación de aplicaciones Web, permitiendo al programador una velocidad de desarrollo extremadamente elevada y totalmente integrado con el mundo moderno. Entiendo los recelos que puede causar esta última frase, pero la verdad es que los chicos de Redmond se han puesto las pilas y con este framework ofrecen un producto realmente versátil, capaz de ofrecer al desarrollador una curva de aprendizaje elevadísima y con una documentación excepcional, con miles de ejemplos y traducida a varios idiomas. Además y de forma nativa, incorpora a Bootstrap como CSS por defecto por lo que todas tus aplicaciones (desde el minuto 0) pueden ser usadas en dispositivos móviles, tablets y PCs, encargándose Bootstrap de embellecer la solución para que esta se adapte al tamaño de pantalla. También incluye un módulo de pruebas extremadamente útil que nos permite someter a nuestra solución a un conjunto exhaustivo de pruebas. Y lo mejor de todo, para empezar a programar con este framework no necesitarás pagar nada, ya que la versión express de Visual Studio también lo incluye.

Si además tu solución requiere de funcionalidades externas, por ejemplo, la creación de un documento en PDF, tendrás a tu disposición una colección de librerías gracias a NuGet que te permite tanto tener actualizadas todas las librerías del proyecto como poder descargar y usar otras librerías de otros programadores.

Otro de los principales problemas que tiene la nube es la custodia de datos, ¿sería posible que hubiese una base de datos basada en el modelo relacional que estuviese alojada en la nube? Claro que ya que está en la nube, vamos a ser más exigentes: ¿podría ser accesible desde cualquier rincón del mundo? Desde la parte visual en la nube, ¿se podrían hacer consultas adaptadas al lenguaje humano como por ejemplo mediante un combo-box o una ordenación de los datos? ¿Podría tener relaciones entre las diversas tablas? Además de todo esto, ¿se podría hacer que una aplicación externa se pudiese conectar a esta base de datos, ya esté en un programa de escritorio o en la nube? Vamos a rizar un poco más el rizo desatando una de las mayores pesadillas de un ingeniero. Supongamos que el producto anteriormente mencionado existe y que llega un usuario y “sin querer”, elimina una entidad de una tabla porque ya no es cesaría o añade una nueva tabla… ¡o borra una tabla! ¿Se podría hacer que la aplicación que depende de estos datos no deje de funcionar en ningún momento y que no dé el típico error de “problemas con la conexión a los datos” al que nos tienen acostumbrados cuando cambia el modelo de datos? La respuesta a todos estos problemas (y a alguno más) se llama SharePoint.

SharePoint es un lugar seguro donde almacenar, organizar, compartir y acceder a información desde prácticamente cualquier dispositivo. Lo único necesario es o bien un navegador para acceder a su parte gráfica o una conexión mediante JavaScript o C# para acceder a todos sus elementos. Veamos ahora unas breves recomendaciones sobre cómo atacar a SharePoint para sacar todo su potencial de una manera óptima porque la plataforma es demasiado extensa como para poder abordarla únicamente desde un artículo.

Lo primero es tener claro la nomenclatura. En SharePoint a las tablas se llaman listas aunque por debajo funcionen como un elemento de una base de datos relacional, ya que existe el concepto de clave ajena entre tablas. Deberemos de tener claro que, de forma nativa, si eliminamos un elemento relacionado con otro, el segundo elemento de la relación no lo borra, simplemente coloca el elemento que ya no existe como NULL, aunque esta política se puede modificar.

Con esto claro, el acceso a la información es muy sencillo. Únicamente debemos conectarnos usando la URL del SharePoint, un usuario y una contraseña e indicarle sobre qué base de datos queremos trabajar y la tabla a la que deseemos atacar. Tendremos la posibilidad de acciones típicas como recuperar una lista, recuperar un elemento en concreto de la lista, recuperar una lista de N elementos (por ejemplo, para reducir el tiempo de respuesta de una Web), peticiones de edición y borrado. Para el tipo de acciones que se realizan sobre un subconjunto de elementos de una lista, tendremos a nuestra disposición o bien CAML QUERY (un potente lenguaje para hacer filtrados sobre las listas) o bien LINQ, aunque por mi experiencia personal y si queremos sacar todo el jugo a la plataforma, yo recomiendo encarecidamente el formato mediante CAML porque de esta protegemos nuestra aplicación frente a cambios del SharePoint.

Si hacemos bien las cosas, podremos solventar la problemática de que, por ejemplo un servicio web entero se caiga porque algún usuario por despiste o desconocimiento ha decidido eliminar una columna, renombrarla o cualquier otro tipo de casuística. Dicho esto, ¿cuál es el mejor planteamiento para atacar una base de datos? Por supuesto, volvemos a revisar nuestros patrones GOF para tener una solución potente y perfectamente estructurada y accesible. Resultado: o bien un simple Factory si únicamente vamos a acceder a un SharePoint o la solución que más me gusta, un Abstract Factory ya que, inicialmente el tiempo de programación es prácticamente el mismo y tienes la ventaja de que el día de mañana vas a poder insertar otro SharePoint sin problemas ;-)

Happy coding!!!
unoauno tecnologies & innovation
@unoauno11
Esta dirección de correo electrónico está protegida contra spambots. Usted necesita tener Javascript activado para poder verla.

Ángel Cabañero
Developer Manager unoauno

Debes estar logueado para poder comentar

EPSAlicante

Twitter EPSAlicante Facebook EPSAlicante Google+ EPSAlicante  

Blog LabsEPS Linkedin EPSAlicante Radio Politécnica RSS Revista Politécnica

Versiones impresas

Galería de fotos

Recibir novedades