lunes, 19 de mayo de 2014

Apps for SharePoint cómo saber cual tipo usar…SharePoint, Auto o Provider Hosted?

 

Bueno Apps es el nuevo modelo de programación para adicionar funcionalidad instantánea a un portal de SharePoint OnPremises (Instalado en la red interna de la organización) o SharePoint Online en Office 365.  La gracia de este nuevo modelo es que el código se ejecuta aisladamente de la infraestructura de SharePoint.  De alguna forma algo similar a las soluciones SandBox introducidas en la versión SharePoint 2010, pero evolucionada, mejorada y ampliada.   Esto no implica que se ejecute en un entorno visual distinto ya que son incrustadas dentro de la Web UI de SharePoint a través del uso de IFRAMEs tecnología antigua que ha tomado relevancia en esta versión SharePoint 2013 para dar el efecto al usuario que esta en la misma interfaz Web aunque pueda estar corriendo inclusive en Azure o en un proveedor de terceros.

Lo mencionado anteriormente define el tipo de App que se puede desarrollar bajo el nuevo modelo disponible en Visual Studio 2012 de forma de plug-in y en 2013 ya incluidas las plantillas de Proyecto que son solamente tres plantillas: App for Office, App for SharePoint y Cloud Business App.

image

Según donde se hospeda el código así se define su nombre y los recursos a su disposición.  A continuación los nombres de los tipos de Apps:

1) SharePoint Hosted: Se hospeda en SharePoint de forma aislada en una “Web” (lo que equivale a un sitio Web de SharePoint) denominada App Web, que es creada cuando se instala el App en una Web de SharePoint denominada Host Web.  Esto quiere decir que si deseo que la funcionalidad este disponible en otro sitio de SharePoint tendré que instalar la App en el nuevo sitio web que denominamos en el ambiente de Apps Host Web. Lo interesante de esta opción es lo accesible que se tiene acceso a los recursos de SharePoint en cuanto a contenido y lo fácil que es instalar y remover como lo es un App en un teléfono.  Eso quiere decir que si la removemos deforma predeterminada toda la información almacenada en el App Web desaparecerá que por temas de seguridad este es el comportamiento esperado.  Este tipo de App esta disponible tanto para On Premises como Online y puede venderse en Office Store de Microsoft.  En esta aplicación podemos hacer invocaciones de Servicios Web a través de Ajax, pero debemos de cuidar de adicionar en IE por ejemplo las direcciones de los recursos como sitios seguros o Local Intranet para evitar errores de llamadas cruzadas de dominio o Cross Domain Calls.

imageThe components of a SharePoint-hosted app are hosted on the appweb of a SharePoint farm.

http://msdn.microsoft.com/EN-US/library/office/fp179887(v=office.15).aspx

2) Auto Hosted: Esta aplicación se hospeda en Azure y es controlada por Microsoft.  Es decir no se instala en una instancia alquilada por el ISV o proveedor del App sino en un espacio administrado por Microsoft dentro de Azure el cual le asigna los recursos de forma automática y sin control del creador del App para conocer sobre que recursos, por ello esta no esta todavía disponible en el Office Store de Microsoft, sino solamente para subscriptores de Office 365 y no esta disponible para SharePoint On Premises.  Tenemos disponible los recursos de SharePoint a través del Host Web pero el código esta corriendo en algún espacio en Azure.  También podemos ejecutar código de servidor pero solo para los recursos disponibles de lado de Azure (Web Sites & SQL Azure). 

image image

3) Provider Hosted o Remote Hosted:  Esta App se hospeda en recursos proveídos por terceros a Microsoft es decir por el ISV o Proveedor del App, que bien puede ser en una instancia de Azure administrada y pagada por nosotros mismos.   Pero aquí aunque hay mucho más control sobre donde se hospeda la App también hay mucho más esfuerzo de lado del ISV por proveer multitenancy o Multiinquilinos, manejo de las versiones del App y el soporte que debe de manejar cada versión del App que se pone a disposición en el Office Store de Microsoft.  Este tipo de App también tiene disponible los recursos de SharePoint del Host Web pero son invocados desde los recursos de terceros donde esta la funcionalidad hospedada de la aplicación.  Aquí tenemos libertada de escoger modelos de programación Web como lo son MVC o Web Forms y correr código de servidor.

imageThe components of a provider-hosted app are hosted on any web server or hosting service.

Para los tres tipos de Apps la única forma de acceder los recursos de SharePoint es a través de CSOM o el modelo de Objetos de SharePoint Cliente o vía REST API.  Y para  SharePoint Hosted tiene que ser por fuerza CSOM para JavaScript ya que no se puede hospedar código en este tipo de aplicaciones que no sea JavaScript y sus derivados, como lo son: Ajax, Jquery y Json.  Para las Apps Autohosted y Remote Hosted esta disponible en los lenguajes de código de .NET como lo son C# y VB la versión de CSOM para los desarrolladores se sientan más cómodos en su ambiente o con REST API.

image

En la imagen de arriba nos permite ver claramente para los 3 tipos de Apps donde es se hospeda el código.  Interesante que la aplicaciones Provider Hosted pueden almacenar código del lado de SharePoint además de contar con la infraestructura provista por el ISV, a diferencia de SharePoint Hosted que todo el código es almacenado en SharePoint, con posibilidades de llamar recursos como servicios Web a través de Ajax u otros sistemas de la nube por medio del servicio de Business Connectivity Services.  Estos dos tipos de Apps mencionados están disponibles para el Office Store.  Por otra parte Auto hosted aún no ya que hay temas de subscripción con Azure no resueltos aún.  Esto no quiere decir que no sea posible crear estas aplicaciones para usuarios de Office 365 pero no pueden ser ofrecidas todavía en el Office Store.

En conclusión podemos decir que las aplicaciones de más rápido desarrollo son las SharePoint Hosted con limitaciones como solo pueden ser escritas para Javascript y derivados (Ajax, jquery & json) y mayormente enfocada en los servicios y recursos disponibles en SharePoint.  Estas tiene la bondad que funcionan tanto para SharePoint Online como On Premises y puede ser ofrecidas en el Office Store de Microsoft.  Por otro lado las aplicaciones Provider o Remote hosted debemos de proveer toda la infraestructura para almacenar el código que estamos escribiendo como multitenancy, Infraestructura Web, Base de datos, control de versiones, Soporte.  Pero con al ventaja de tener toda la libertad de crear las aplicaciones con el lenguaje e infraestructura de nuestro dominio.  Por último las Apps Autohosted, nos proveer de forma predeterminada toda la infraestructura de Azure a nivel de sitios Web y Base de datos sin que tengamos que preocuparnos, pero solo esta disponible para usuarios de Office 365 y no tenemos ningún control sobre los recursos asignados en Azure. 

Dicho esto hay mucho que profundizar en cada una de ellas y conocer sus verdaderas restricciones, ventajas y esfuerzo requerido en el desarrollo por lo que en los siguientes artículos profundizaré en cada uno de ellos.

Hasta la próxima, Apps4Fun!,

Juan Manuel Herrera Ocheita