En la nueva versión de SharePoint 2013, una de las grandes novedades es la evolución de la API REST que ha mejorado mucho respecto a las versiones anteriores, pero ésta mejora ¿es lo suficientemente importante como para abandonar por completo otras capas de Servicio?
En este post voy a intentar dar mi punto de vista sobre todas estas opciones y cuándo es conveniente utilizar cada componente.
El uso de una capa de servicio se ha vuelto casi imprescindible en cualquier desarrollo, debido al crecimiento en el uso de JavaScript por parte de los desarrolladores de SharePoint. Hoy en día, el éxito o fracaso de una aplicación viene en gran medida dependiendo del Front-end, no basta con ser bonito si esta vista es muy lenta, y viceversa. Por lo tanto, el lenguaje más rápido en el lado del cliente es JavaScript. Y de su uso, por lo menos tenemos que aprender que hay muchas formas de hacer las cosas (más allá de que nos guste más o menos) y que son igualmente validas que nuestra «zona de confort».
API REST
Esta claro que es la primera opción que nos planteamos cuando empezamos a realizar nuestro desarrollo, SharePoint ya lo tiene implementado, por lo tanto, porqué tengo que inventar la rueda. Este pensamiento está muy claro y en muchas circunstancias no es del todo cierto. En ¿qué aspectos? Hay desarrollos en los que, por ejemplo, hay que realizar un desarrollo transversal sobre SharePoint, consultar dos o más listas dependiendo de un criterio. ¿Cómo lo implementaríais vosotros? Si utilizamos la API Rest al final tendríamos que ir anidando llamadas asincronas a la API Rest entre codigo «spaguetti» y al final entre tanto código «spaguetti» seguro que acabamos por coger un empacho y se nos atraganta.
Si nuestra aplicación esta basada en multiples llamadas a la API Rest mejor pensar en otra opción.
Ventajas
- Ya esta implementada
- Valida para todos los dispositivos (IOS,Android,etc..)
- Acceso eficiente a los elementos de las listas
Desventajas
- No tienen todas las opciones que el modelo cliente, en cuanto a la visualización de campos
- No puedes utilizar técnicas para insertar/actualizar de forma eficiente
- Demasiada lógica de negocio en la capa vista
Alternativas a la API Rest
Las dos alternativas a la hora de implementar una capa de servicio son: la tradicional WCF o la moderna WebAPI. Descarto la implementación de un handler, porque su uso sería para algo más aislado y puntual que para llevar la lógica de negocio. Si estuviera desarrollando una aplicación fuera del Contexto de SharePoint y no tuviera duda, plantearía como mejor solución una implementación de una WebAPI, pero dentro de SharePoint la cosa cambia y dependiendo de los requerimientos que tenga que conseguir pues hay una opción mejor que otra.
¿Cuando utilizar un WCF?
Una de las ventajas es que puedes implementar un WCF dentro del contexto de SharePoint y debido a esto, tenemos la gran ventaja de que ya tenemos implementada la seguridad. Esto hace que en nuestro desarrollo no tengamos que preocuparnos lo más mínimo en la seguridad y dado que estará en el mismo dominio, no tendremos problemas de CORS y cederemos a SharePoint la seguridad. En el siguiente link nos indica cómo podemos desarrollar un WCF dentro de SharePoint.
Ventajas
- Utiliza el contexto de Seguridad de SharePoint
- Posibilidad de utilizar el modelo de objetos servidor
Desventajas
- No se puede utilizar en el contexto de una aplicación móvil de forma directa
- Acoplado la plataforma y menos escalable
¿Cuando utilizar WebAPI?
Hoy en día, dentro del mundo Microsoft WebAPI es la opción mayoritaria a la hora de implementar cualquier servicio Web, sin embargo WebAPI no lo puedes integrar dentro de SharePoint de la misma forma que lo haces con un WCF. Esto hace que tengas que implementar la seguridad de forma independiente a la de SharePoint, por lo tanto, cualquier cambio en el modelo de autenticación de SharePoint tienes que cambiar la WebAPI. Otro de los aspectos donde tiene problema es en el tema de las llamadas fuera del dominio. En WebAPI existe un modulo de CORS en el que puedes añadir desde que páginas/dominios aceptas estas peticiones.
Ventajas
- Válida para todos los dispositivos
- Escalable (puede estar en otra máquina donde no este instalado SharePoint)
Desventajas
- Implementación de Seguridad
- Fuera del Contexto de SharePoint
- CORS
Conclusión
La utilización de la WebAPI, yo la recomiendo en el contexto de tener una capa de servicio general en la empresa que hace de nexo de unión entre todas las aplicaciones de la empresa, haciendo que cualquier dato de la empresa se pueda consultar haciendo uso de la WebAPI, independientemente de si esta implementada en un SQL, Axapta, Dynamics, o MySQL. En el resto de supuesto en el que nuestra aplicación necesite utilizar una capa de servicio, pues dependerá de las necesidades, si necesito consultar muchas listas optaré por la opción de implementar un WCF. En el resto de opciones la API Rest que hay implementada es suficiente.