Aplicaciones Autohosted de SharePoint: combinando Azure y Colaboración
1. Aplicaciones Autohosted de
SharePoint: combinando Azure y
Colaboración
Juan Carlos González Gustavo Velez
MVP SharePoint Server MVP SharePoint Server
http://geeks.ms/blogs/ciin http://www.gavd.net
jgonzalez@gruposodercan.es gustavo@gavd.net
@jcgm1978
2. Workshops & sesiones organizadas en
tracks paralelos: IT PRO, Negocio (BIZ) y
Desarrollo(DEV)
+ Información:
www.iberiansharepointconference Madrid, 10th October
.com
2013
@IberianSPConf
suges@Hotmail.es
6. Evolución del desarrollo en
SharePoint
2007 2010 2013
El código de la GAC se El código se ejecuta en un El código se ejecuta fuera de
ejecuta en el mismo proceso especial SharePoint y aprovecha las
proceso (w3wp.ex) que la (SPUCWorkerProcess.exe) capacidades expuestas en _api
Aplicación Web o bien llama a client.svc
(CSOM)
7. Repaso a Tipos de Hosting
Provider-Hosted App
“Necesitas tu propia infraestructura de Sitio
Tú Sitio de
hosting” SharePoint
Los desarrolladores tienen que aislar Hosting
los tenants
Cloud-based Apps
Suscribirse a eventos Autohosted App (SPO) Azure
remotos de SP Windows Azure + SQL Azure Sitio (desde
Usar CSOM/REST + provisionadas de forma “invisible”
OAuth para operar
SharePoint WebDeploy
mientras la app se instala
con SharePoint , DacPac)
SharePoint-hosted App Sitio
Provisiona un subsitio aislado bajo un Padre
sitio padre
Reutiliza elementos web
(lists, files, out-of-box web parts) App Web
• No se permite código en el lado
del servidor; usar JavaScript (de WSP)
8. Capacidades disponibles
Características Service Level Modo de pago
• Hosting IIS Compartido Agreement (SLA) • En estudio
• BDs Azure SQL • Almacenamiento
• Ciclo de vida de ¡Windows Azure Rules !
redundante
aplicaciones transaccional • Recuperación de Desastres
• Escalabilidad • Soporte a cliente
compartido para problemas
de Aplicaciones
9. Aplicaciones SharePoint-
Hosted vs Cloud-Hosted
SharePoint Hosted Cloud Hosted
App Scope SharePoint Site Site or Tenancy
Architecture Web Site Multi-Tenant App
Developer Skillset SharePoint + HTML/JS Full Stack
UI Technologies SharePoint + HTML/JS Any Web Stack
Server Code None Any
Storage Lists and Doc Libs Any
Key Limitations No Server Code Hosting Expertise
Required
14. Explicación de la demo (Debugging)
Servidor Desarrollo
Azure
Otros
Webs
SQL
Office 365
Solución: Otros
- Proyecto de SharePoint Share
- Proyecto Web aspx Point
Word
Excel
15. Explicación de la demo (Publicación)
Servidor Desarrollo
Azure
Otros
Webs
SQL
Office 365
Proyecto de SharePoint Otros
Share
+ Proyecto Web aspx
Point
= archivo .app Word
Excel
18. Arquitectura
Los componentes externos de la aplicación:
Se instalan de forma automática cuando la App se
instala:
No es necesario crear lógica de instalación
Se despliegan en Azure: Azure Web Sites & SQL Azure
Cada instancia de la App está aislada de otras
instancias
A nivel de tecnologías:
Sitios web y aplicaciones web ASP.NET
Componente de BD: sólo SQL Azure
19. Arquitectura
Los tenants de SharePoint Online tiene asociado:
Windows Azure Web Sites
Una cuenta oculta de SQL Azure
No es necesario registrar la aplicación con un STS
(Secure Store Server) qué cumpla OAuth:
Lo hace automáticamente SharePoint Online por el
desarrollador
Se utiliza ACS
21. Proceso de desarrollo y
despliegue
1. El desarrollador crea un paquete
de aplicación de SharePoint (*.APP)
2. Se despliega la aplicación a
SharePoint Online:
– (vía Marketplace)
– (vía Catálogo de Aplicaciones)
3. SharePoint Online instala la
aplicación
4. SharePoint provisiona componentes
de Windows Azure
5. SharePoint provisiona las BD de SQL
Azure, ejecuta los scripts para crear
los esquemas y los datos de partida
necesarios
22. Ejecución de una aplicación
(perspectiva usuario)
1. El usuario hace clic en la App (AP);
SharePoint carga la página de la aplicación
(B)
2. El área de contenidos (B) carga la página de
Windows Azure
3. La aplicación en Azure ejecuta la aplicación
web
4. La aplicación de Azure puede interactuar
con SharePoint a través del CSOM o bien la
API REST
5. La aplicación de Azure puede utilizar BDs SQL
Azure
6. La aplicación de Azure puede interactuar
con servicios externis u otros recursos
disponibles en la red (C)
7. La aplicación de Azure puede interactuar
con el sitio que hospeda la aplicación
23. Opciones de
Almacenamiento
Listas de SharePoint:
Requieren el uso de CAML para interactuar
Se puede necesitar un sitio (SPWeb) para la App
SQL Azure:
Empaquetar junto con la App el paquete SQL (.dacpac)
o bien referenciar un proyecto de BD
Los componentes de SQL Azure se provisionan de forma
transparente (e invisible) cuando la aplicación se instala
La conexión a la BD se realiza a través de APIS
especificas (clase SqlConnection)
Otras: ¡Cuidado con la latencia!
25. Permisos de aplicaciones
Se configuran en el manifiesto de la aplicación
Los desarrolladores pueden especificar los permisos que la
aplicación necesita para ejecutarse
Son solicitados durante la instalación de la aplicación:
Conceder permisos es una operación de “todo” o “nada”: No es
posible elegir que permisos conceder para una petición
El usuario que ejecuta la aplicación es quien los concede:
Sólo se pueden conceder aquellos permisos que se tienen
ACS (Azure Access Control Service) juega el rol de servidor de
autorización:
Almacena la información básica sobre la App y proporciona
tokens de acceso a las aplicaciones para llamar a las APIs de
SharePoint
26. Modelo de uso y
licenciamiento
Cuenta de Azure propiedad de Microsoft:
Todas las aplicaciones Autohosted se provisionan en una
cuenta propiedad de Microsoft a la qué solo Microsoft tiene
acceso (de momento)
El licenciamiento es a través del Tenant de Office 365:
Se supone que los costes de hosting en Azure serán pasados
a través del Tenant de Office 365, el desarrollador no tiene
que pagar nada
Catálogo de aplicaciones:
Para personalizaciones específicas a una organización
Office Store:
Aplicaciones Autohosted no soportadas por el momento
28. Tecnologías
Código .NET en todo caso
Para qué las aplicaciones interactúen con SharePoint
(acceso a datos, crear listas, editar permisos, etc):
CSOM + API REST
Para establecer que qué puede hacer la aplicación:
Conceder los permisos adecuados
Uso del modelo de autorización de OAuth
29. Herramientas
Visual Studio 2012 (Con las tools instaladas)
Visual Studio LightSwitch
Microsoft Access 2013
…y NAPA (de momento para SharePoint-Hosted)
30. Proceso de desarrollo típico
Crear proyecto(s) de Windows Azure:
Sitios Web de Windows Azure
Aplicaciones Web ASP.NET MVC
Craer BDs de SQL Azure
Crear una aplicación de SharePoint usando la
plantilla de Visual Studio
Actualizar el manifiesto de la aplicación:
Metadatos
Página principal
31. Chrome Control, dar estilo a
una Aplicación
Permite utilizar el estilo del sitio host en la aplicación:
Una librería JavaScript en la App devuelve la hoja de estilos
de SharePoint para aplicaciones
El handler
http://<sharepointsite>/_layouts/15/defaultcss.ashx es quien
devuelve esa hoja de estilos:
La hoja de estilos es corev15app.css
La hoja de estilos se aplica a las páginas de la aplicación
También permite añadir nodos de navegación
personalizados:
Enlaces a otras páginas
Enlaces a archivos de ayuda
34. Explicación de la demo (Debugging)
Servidor Desarrollo
Azure
Otros
Webs
SQL
Office 365
Solución: Otros
- Proyecto de SharePoint Share
- Proyecto Web JS Point
Word
- Proyecto Base de Datos
Excel
35. Explicación de la demo (Publicación)
Servidor Desarrollo
Azure
Otros
Webs
SQL
Office 365
Proyecto de SharePoint Otros
Share
+ Proyecto Web JS
Point
+ Proyecto Base de Datos Word
= archivo .app Excel
36. Crear una App Autohosted
implica
SharePoint Package Web App & Database
• Use Visual Studio SharePoint App • Add Web app to solution:
Project • Azure Web site support
• Focus on app entry points: • Add SQL Azure database:
• Custom Actions • *.DACPAC required to create the
• Client Web Parts SQL Azure DB
• Carefully consider AppWeb context: • Provide data script to seed data
• No app webs for tenant scoped apps • Debug locally
• Debug/test locally or on developer
site
37. Despliegue de una
aplicación Autohosted
Web App &
SharePoint Package Database
• OAuth config & SQL Azure • Packaged in SharePoint package
connection string auto-generated • Auto-provisioned & deployed to
• Use ~remoteAppUrl token for Windows Azure
references to web app URL
• Publish app package to:
• Marketplace
• Corporate Catalog
38. Despliegue y depuración
Para testear, en la medida de lo posible, se
recomienda desplegar el proyecto de Windows Azure
directamente:
Permite la depuración directa de proyectos web
Si se interactúa con SharePoint, esta opción no es viable
Cuando se ha acabado de depurar, empaquetar la
aplicación completa y desplegar a SharePoint Online:
SharePoint Online se encarga de provisionar todos los
componentes cuando se instala la aplicación
41. Experiecias disponibles
Página completa (Inmersivas):
Planificación/Programación de eventos
Elementos de aplicación (App Parts):
Widget: Información del tiempo, de la bolsa, …
Acciones personalizadas
Navegaciones, acciones a nivel de elemento, …
43. Referencias
Creación de aplicaciones Autohosted:
http://msdn.microsoft.com/en-us/library/fp179885.aspx
Ejemplo de aplicación Autohosted:
http://msdn.microsoft.com/en-us/library/fp179902.aspx
Uso del Chrome Control:
http://geeks.ms/blogs/santypr/archive/2013/02/08/chrome-de-sharepoint-
en-una-sharepoint-app.aspx
http://msdn.microsoft.com/en-us/library/fp179916.aspx
http://msdn.microsoft.com/en-us/library/jj220046.aspx#UXGuide_Styling
Depuración de aplicaciones Autohosted:
http://geeks.ms/blogs/ciin/archive/2013/04/16/sharepoint-2013-como-
depurar-una-aplicaci-243-n-de-tipo-autohosted.aspx
44. Descuentos Campus MVP
10% de descuento
en todos nuestros cursos y libros hasta el 31 de
diciembre
Introduce el cupón PECIIN12SN al realizar tu
compra
en nuestra tienda online.
45. Prueba SharePoint a tope
CloudShare:
http://www.cloudshare.com/
Disponen de varias plantillas de SharePoint 2013 listas para probar
46. Nos vemos en los foros
Foro de desarrollo:
http://social.msdn.microsoft.com/Forums/es-es/mossdeves/threads
Foro de IT
http://social.technet.microsoft.com/Forums/es-ES/mosses/threads
Foro de Office 365:
http://community.office365.com/es-es/default.aspx
This slide depicts some of the biggest differences between building SharePoint-Hosted & Cloud-Hosted apps.
Enseñar NapaDemo1
Developer builds SharePoint application and packages into a *.APP file.Deployment to SharePointSharePoint installs applicationIf SharePoint application contains Windows Azure components, SharePoint provisions the Azure appAs with #4, SharePoint can provision SQL Azure, run the DDL for schema creation & DML for loading initial data
User navigates to an application page in SharePoint that contains the installed apps. Upon clicking one app (A), the page reloads with the main content (B) area replaced with an SPFrame control (think of this as an enhanced IFrame).The content area (B) in the SharePoint page points to the homepage of the application that lives in Windows Azure. This application runs entirely within Windows Azure.The application can consist of a series of multiple ASPX pages as an Azure Web Role or Azure MVC Web Role.The Windows Azure application can call back to SharePoint using the enhanced Client Object Model (CSOM) or using the new OData services in SharePoint Server 2013. This is useful when accessing data in SharePoint lists or other SharePoint interactions are necessary.The Windows Azure application can also utilize SQL Azure for custom data that is used exclusively by the application.The Windows Azure application can also call other external services or resources available over the wire (C) that are not available in SharePoint or in Windows Azure. This could be used to communicate back with on-premise LoB systems or other 3rd party hosted solutions.In addition the application can also utilize a bridge between the SPFrame hosting the application (B) and the application. This could be used to alter the SharePoint ribbon or other SharePoint UI components (status bar, notification messages, dialogs, etc).
SharePoint ListsGreat for SharePoint-hosted apps, but requires CAMLRequires an app webSQL AzurePackage app with SQL Package (.dacpac) or by referencing SQL Database projectSQL Azure components are provisioned invisibly when the app is installed by a tenantConnection information in available through specific APIs (both SqlConnection class and raw connection string)Others, but be careful with latency