Implementando y desplegando Autohosted Apps

Como bien sabemos, con el nuevo modelo de Apps para SharePoint 2013, disponemos de distintas alternativas de hosting para nuestras apps. Tenemos SharePoint-hosted apps, Provider-hosted apps y Autohosted Apps.

Hasta el momento, las Autohosted apps únicamente están soportadas para SharePoint Online en Office 365. Para recordar, cuando implementamos Autohosted apps, lo que sucede es que al momento en que desplegamos nuestra aplicación sobre SharePoint Online, automáticamente por detrás se genera nuestra aplicación en Windows Azure, esto se hace sin necesidad de que nosotros tengamos que crear nuestro ambiente en Azure previamente.

Las Autohosted apps son similares a las Provider-hosted apps, en el sentido de que disponemos de una infraestructura de servidores web separada de la granja de SharePoint, en el caso de las Autohosted apps esta se encuentra montada sobre Windows Azure y en el caso de las Provider-hosted apps esta se encuentra en cualquier otro servidor web como IIS, con la diferencia en que en este caso si debemos configurar y administrar nuestro servidor web.

 En este caso voy a mostrar como crear y desplegar una Autohosted App, tanto desde Visual Studio, como de manera manual considerando un escenario real de pase a producción.

1. Primero debemos crear nuestra aplicación de SharePoint 2013 desde Visual Studio.

2. A continuación debemos especificar el nombre de nuestra App y la URL de nuestro site collection en SharePoint Online (Office 365) y dar clic en Validate.

3. Nos pedirá que ingresemos nuestras credenciales.

4. Validará satisfactoriamente el acceso a nuestro site collection en la nube. Y con esto podremos empezar a desarrollar nuestra App.

¿Como despliego mi aplicación?

1. Para probar nuestra aplicación debemos hacer Deploy desde Visual Studio. Debido a que simplemente es para un escenario de prueba, se creará un sitio temporal en nuestro equipo (https:localhost). Por este motivo aparecerán algunas alertas relacionada a certificados. Dar clic en Yes.

2. Un warning mas dar clic en Yes.

3. Nos redirige a nuestro site collection y nos pide Confiar en nuestra App. Dar clic en Confiar.

4. Y Listo! Nos mostrará nuestra App recientemente desarrollada. Nos podemos dar cuenta que nos ha redirigido a nuestra aplicación que se está ejecutando localmente (https://localhost:puertoaleatorio), pues es un escenario de pruebas, es decir que aún no se ha creado la aplicación en Azure.

¿Cómo desplegar la solución en un ambiente productivo?

Para desplegar nuestra aplicación en el ambiente productivo, primero debemos configurar nuestra solución en Visual Studio.

1. Debemos configurar las dlls siguientes para que tengan la propiedad Copy Local en True:

Microsoft.SharePoint.Client.dll

Microsoft.SharePoint.Client.Runtime.dll

Microsoft.Identity.Model.dll

System.Identity.Model.dll

Microsoft.IdentityModel.Extensions.dll

 

2. A continuación seleccionamos a nuestra App desde el Solution Explorer, damos clic derecho y clic en Publish…

3. Se abrirá la ruta donde esta nuestro App empaquetado. Este tiene extensión .App. Hay que copiarla.

4. A continuación debemos acceder a nuestro Portal de Office 365 para realizar las configuraciones respectivas sobre SharePoint Online. 

5. En el Centro de administración de SharePoint ubicar la categoría aplicaciones y dar clic en Catálogo de aplicaciones.

6. Si aún no existe un catálogo debemos crearlo. Dejar seleccionado Crear un nuevo sitio de catálogo de aplicaciones y clic en Aceptar.

7. Completar los datos el nuevo site collection.

 

8. Se habrá creado nuestro catálogo de apps.

 

 

9. Podemos ingresar y verificar que se creó correctamente.

10. Ingresamos a la biblioteca Aplicaciones para SharePoint en nuestro Catálogo de apps.

 

 

11. Cargamos nuestra App (.App que recientemente copiamos).

12. Podremos ver que el App se cargó correctamente.

13. Ahora solo debemos agregar nuestra nueva App ya disponible en nuestro Catálogo. Para eso ingresamos a cualquier otro site collection que tengamos en SharePoint Online. En Settings seleccionamos Contenidos del sitio.

14. Damos clic en Agregar una aplicación.

 

15. Se muestran las apps disponibles. Ubicamos nuestra App que recientemente desplegamos y le damos clic.

 

16. En la siguiente pantalla damos clic en Confiar.

 

17. Y podremos observar que se agregó satisfactoriamente nuestra nueva App.

18. Ahora solo nos queda probarla!. Un éxito!. 

Preparación de ambiente para desarrollo de Apps en SharePoint 2013

Con el nuevo modelo de desarrollo de Apps para SharePoint 2013 existen cambios en las consideraciones necesarias para disponer de un ambiente de desarrollo.

En versiones anteriores de SharePoint (2007/2010) era necesario para desarrollar WebParts, tener un ambiente de SharePoint donde tengamos a su vez instalado Visual Studio de tal manera de que podamos acceder a las dlls de SharePoint y compilar y desplegar nuestros desarrollos.

En muchos casos los desarrolladores debían disponer de una máquina virtual donde tenían su granja de SharePoint implementada y asi mismo Visual Studio, para posteriormente las soluciones .wsp fueran desplegadas en un ambiente de QA o producción. El problema con esto era que a partir de la versión 2010 de SharePoint, los requerimientos de Hardware para disponer de un ambiente de desarrollo cada vez exigían una inversión mayor y era una mala práctica compartir un único servidor de desarrollo, pues muchas veces algunos desarrollos interferían con otros. Principalmente estas necesidades se daban debido a que los desarrollos se desplegaban sobre la misma infraestructura de SharePoint, comprometiendo la granja con despliegues que requerían reinicios de los application pools y web sites.

 Con el nuevo mode de apps para SharePoint 2013, teniendo en cuenta que los desarrollos no se ejecutan sobre SharePoint, sino externamente (en el cliente o en un servidor externo), tampoco es necesario instalar nuestro Visual Studio para acceder a las dlls de SharePoint.

Existen varios mecanismos para acceder a los objetos de SharePoint: .NET CSOM, JS CSOM, REST. Esto nos permite simplemente desde nuestros equipos conectarnos a servidores remotos de SharePoint 2013 y realizar nuestros desarrollos.

Para habilitar nuestro ambiente de desarrollo seguir los pasos detallados a continuación:

1. Instalar Visual Studio 2012.

2. Descargar e instalar Microsoft Office Developer Tools for Visual Studio 2012.

3. Descargar e instalar SharePoint client components.

4. Y listo, ahora a iniciar Visual Studio 2012. Veremos que ahora disponemos de nuevas plantillas para desarrollar apps para Office y SharePoint.

 

Ahora solo nos toca a empezar a desarrollar Apps!!!

Configurando SharePoint 2013 on-premise para desarrollo de apps

Con SharePoint 2013 se abren ahora nuevas posibilidad para desarrollar aplicaciones para el negocio consumidas a través de un Portal web interno o público, y sin los clásicos problemas de gestión de la infraestructura asociados a un performance deficiente por malos desarrollos.

SharePoint 2013 ofrece el nuevo App model, el cual permite consumir aplicaciones desde SharePoint 2013, que interactúan con los componentes del portal (listas, bibliotecas, elementos, documentos, sitios, etc.) o que consumen servicios y datos externos, pero ejecutando su lógica fuera de la granja de SharePoint. Esto permite que el rendimiento de la granja no se vea afectado.

Lo interesante es que ahora disponemos de hasta 3 alternativas para hospedar nuestra aplicaciones: SharePoint-hosted, Provider-hosted o Autohosted.

SharePoint-hosted permite hospedar aplicaciones en un subsite del sitio original donde se ejecuta la aplicación, sin embargo el procesamiento de la lógica de la App no se ejecuta sobre SharePoint, debido a que este tipo de aplicaciones solo permite ejecutar código a nivel cliente mediante JavaScript y HTML.

Provider-hosted permite hospedar la aplicación en un servidor externo a SharePoint, pudiendo utilizar una variedad de plataformas web no necesariamente Microsoft. Es decir, podríamos alojar nuestra aplicación sobre IIS y desarrollar con ASP.NET, así como también podríamos alojar nuestra aplicación sobre Apache y desarrollar con PHP. Es decir, si eres un desarrollador web puedes fácilmente desarrollar apps. Este tipo de escenarios permiten ejecutar código a nivel de servidor que se ejecuta sobre los servidores web.

Autohosted es un método solo soportado hoy en día cuando desarrollamos apps para SharePoint Online (Office 365), este permite desarrollar apps que automáticamente se hospedan sobre Windows Azure, es decir, nosotros tan solo desarrollamos nuestra aplicación web (ASP.NET) utilizando la plantilla de Visual Studio para aplicaciones de SP2013 y automáticamente al desplegarlo este se hospeda sobre Windows Azure.

Entonces, para comenzar, habilitemos primero nuestro ambiente On-premise de SP2013….

 1. Primero debemos crear una zona dedicada para las aplicaciones que se crearán, no debemos utilizar la Zona interna por defecto (contoso.local), sino una zona dedicada para apps (iwdemoApps.com).

Entonces entramos al DNS y en Forward Lookup Zones, clic derecho y New Zone…

2. Clic en Next.

 3. Seleccionamos Primary Zone y clic en Next.

 4. Seleccionar To all DNS Servers running on domain controllers in this domain: contoso.local y Next.

5.  Especificar el nombre de la zona. Ej. iwdemoApps.com.

 6. Seleccionar Do not allow dynamic updates y clic en Next.

 7. Validar que todo esta bien y clic en Finish.

 8. Ahora en la zona creada (iwdemoApps.com), dar clic derecho y clic en New Alias (CNAME)

 9. A continuación especificar en Alias Name: * y en Fully qualified domain name debemos especificar el registro DNS asociado a el WFE del Portal de SharePoint o al balanceador en el caso de estar en alta disponibilidad, en mi Ejemplo sería: portal.contoso.local.

 10. Ahora verificamos que el registro se haya creado satisfactoriamente.

 11. Para verificar que se creó correctamente el servicio podemos probar hacer un ping de este tipo: ping Apps-12345678ABCDE.iwdemoApps.com.

Una vez configurados los registros DNS, debemos realizar las validaciones y configuraciones respectivas.

12. Sobre SharePoint 2013 debemos verificar que el servicio de User Profile se encuentra iniciado.

13. De la misma manera debemos validar que el servicio de App Management Service se encuentre iniciado.

14. Si no se encuentra ya creado, debemos crear el “App Management Service” service application.

15. Especificamos el Service Application Name y el Database Name.

16. Seleccionamos el Service Application Pool o creamos uno nuevo.

17. Finalmente validamos que se haya creado correctamente el Service Application.

18. En el Quick Launch en el Central Admin, acceder a Apps para las configuraciones respectivas. Dar clic sobre Configure App URLs

19. Probablemente nos aparezca un mensaje similar al de la imagen, especificando que falta configurar el Subscription Settings Service.

20. Para configurar el Subscription Service Setting, lo debemos hacer vía PowerShell, no hay opción de hacerlo mediante el Central Admin. Ejecutar los comandos que se muestran en la siguiente imagen:

21. Podemos validar que el service application se creó correctamente.

22. Validamos también que el servicio se encuentre iniciado (Ver en Services on Server).

23. Volvemos para configurar las URLs para las Apps de SharePoint, pero el mensaje sigue. Esto es porque se requiere un IIS reset para que la granja identifique los cambios.

24. Ejecutamos un iisreset.

25. Ahora si, configuramos nuestras URLs. Para App domain, especificar iwdemoApps.com y para App prefix, podemos emplear el prefijo que deseemos, yo utilizo App.

26. Acto seguido debemos proceder a crear nuestro catálogo de aplicaciones, para lo cual damos clic sobre Manage App Catalog.

27. Seleccionamos Create a new App catalog site y OK.

28. Creamos el site collection correspondiente.

29. En End Users especificar Authenticated Users para que todos los usuarios puedan acceder al catálogo.

30. Y podremos ver el App catalog ya creado.

31. Accedemos a nuestro App catalog para validar que se creó correctamente.

32. Ahora, si es que queremos también consumir apps externas debemos realizar las configuraciones respectivas. Para esto clic en Configure Store Settings.

33. Marcar las opciones tal y como se ve en la pantalla.

34. Luego debemos habilitar un Feature a nivel de nuestra aplicación web, seleccionar nuestra aplicación web y clic en Manage Features en el Ribbon.

35. Marcar el feature “Apps that require accesible Internet facing endpoints”.

36. Validamos que se haya activado el Feature correctamente.

 Y Listo!, nuestro ambiente On-premise se encuentra listo. Sobre este ambiente podemos crear SharePoint-Hosted o Provider-Hosted apps (Las Autohosted apps únicamente están soportadas en Office 365).