¡SharePoint 2013 como plataforma de desarrollo:
Novedades!
Juan Carlos González (@jcgm1978)MVP SharePoint Serverhttp://geeks.ms/blogs/[email protected]
Agenda
Modelo de Objetos en Cliente (CSOM)
Programación con el CSOM
API REST de SharePoint 2013
Operaciones CRUD con Sitios, Listas y Elementos de Lista
Modelo de Objetos en Cliente
En SharePoint 2010:
Sabor JavaScript
Sabor Silverlight
Sabor .NET
Código personalizado
Cliente
Servidor
_vti_bin/client.svc
Execute Query
Microsoft.SharePoint.Client.dll
Microsoft.SharePoint.Client.Silverl
ight.dll
SP.js
Modelo de Objetos en Cliente
En SharePoint 2013: Se extiende el servicio client.svc con capacidades REST:
Se soporta acceso directo al servicio desde clients REST
Acepta peticiones HTTP GET, PUT y POST
Implementado de acuerdo al protocolo OData
Nuevas APIs: Para interactuar con servicios: Search Taxonomy Feeds Publishing Sharing
Workflow E-Discovery IRM Analytics Business Data
Para aplicaciones Windows Phone
Modelo de Objetos en Cliente
Arquitectura de la API remota de SharePoint 2013:
Cliente
Servidor
_api es un Nuevo alias para _vti_bin/client.svc
OData
Sabor JavaScript
Sabor Silverligh
t
Sabor .NET
Código personalizado
Execute Query
Modelo de Objetos en Cliente
¿Qué pasa con ListData.svc? Sigue estando disponible
Se garantiza compatibilidad hacía atrás: para migración de aplicaciones en cliente
Para nuevas aplicaciones, no se debería usar
Programación con el CSOM
Client.svc
(_api)
MO Servidor
BD contenido
s
MO JavaScript
Proxy
MO manejado
Proxy
Código C# o VB.NET
Código JavaScript
Petición XML
Respuesta JSON
Respuesta JSON
Petición XML
Navegador
Cliente manejado
SharePoint
Programación con el CSOM
En SharePoint Foundation Sin cambios significativos, más allá del soporte REST
Se ha añadido el soporte REST a la API existente
En SharePoint Server Se han añadido nuevas APIs para interactuar con servicios
Programación con el CSOM Ejemplo – Uso del servicio de traducciones:
using (MO_Cliente.ClientContext ctx = new MO_Cliente.ClientContext( "http://c4431163311/")) { Console.WriteLine( "Extensiones de archivos soportadas"); IEnumerable<string> ieFileExtensions = MO_TRCliente.TranslationJob.EnumerateSupportedFileExtensions(ctx); ctx.ExecuteQuery(); foreach (string item in ieFileExtensions) { Console.Write(item + ", "); } Console.WriteLine(); Console.WriteLine("Idiomas soportados"); IEnumerable<string> ieIdiomas= MO_TRCliente.TranslationJob.EnumerateSupportedLanguages(ctx); ctx.ExecuteQuery(); foreach (string item in ieIdiomas) { Console.Write(item + ", "); }
}
Programación con el CSOM Ejemplo – Uso del servicio de búsqueda:
using (ClientContext ctx = new ClientContext("http://spfes")) { KeywordQuery query = new KeywordQuery(ctx); query.QueryText = "SharePoint"; SearchExecutor searchExecutor = new SearchExecutor(ctx);
ClientResult<ResultTableCollection> rcc = searchExecutor.ExecuteQuery(query);
ctx.ExecuteQuery();
foreach (var rccRow in rcc.Value[0].ResultRows) { Console.WriteLine("Titulo: " + rccRow["Title"] + " - Ruta: " + rccRow["Path"] + " - Fecha: " + rccRow["Write"]); } }
API REST de SharePoint 2013 ¿Por qué REST?
+ simple y sencillo de usar: vs Servicos Web clásicos (SOAP)
Mayor productividad cuando se usa JavaScript y jQuery
Los resultados se pueden devolver en formatos JSON y ATOM
Minimiza la barrera de entrada a diferentes tipos de clientes potenciales
Cada consulta se envía con una URL única
API REST de SharePoint 2013 URLs REST en SharePoint 2013:
Las URLs para el CSOM pueden ir a través de _api
Se elimina la referencia a client.svc de la URL
Se puede reemplazar la URL: http://contososerver/_vti_bin/client.svc/web
Por http://consotoserver/_api/web
API REST de SharePoint 2013 Mapeo de objetos a recursos:
Ejemplos de URLs REST apuntando a sitios de SharePoint: _api/web/lists
_api/web/lists/getByTitle(‘Announcements’)
_api/web/getAvailableWebTemplates(lcid=1033)
Ejemplos de URLs REST apuntado a servicios de SharePoint: Servicio de Traducción:
http://<servername>/_api/TranslationJob.EnumerateSupportedLanguages
http://<servername>/_api/TranslationJob.EnumerateSupportedFileEXtensions
Servicio de búsquedas: http://<servername>/_api/search/query?querytext='Test'
API REST de SharePoint 2013 Consultas REST desde código manejado:
Usar HttpWebRequest y HttpWebResponse
Consultar el XML usando XDocument.Descendants
API REST de SharePoint 2013 Consultas REST desde código manejado:
Para servicios la misma filosofía string sURLConsulta = "http://c4431163311" +
"/_api/TranslationJob.EnumerateSupportedLanguages"; Uri uRESTService = new Uri(sURLConsulta);
//Petición REST HttpWebRequest hwrPeticion = (HttpWebRequest)WebRequest.Create(uRESTService); hwrPeticion.Credentials = CredentialCache.DefaultNetworkCredentials; hwrPeticion.Accept = "application/atom+xml";
//Envío de la petición al servidor HttpWebResponse hwrRespuesta = (HttpWebResponse)hwrPeticion.GetResponse(); StreamReader srReader = new StreamReader(hwrRespuesta.GetResponseStream());
//Procesando la respuesta XDocument xdDoc = XDocument.Load(hwrRespuesta.GetResponseStream()); XNamespace xnEspacioNombres = "http://schemas.microsoft.com/ado/2007/08/dataservices";
Console.WriteLine(xdDoc.ToString()); var eIdiomas = xdDoc.Descendants(xnEspacioNombres+ "element");//….
API REST de SharePoint 2013 Las operaciones CRUD requieren el uso de Form Digest:
Es un “valor especial” creado por medio de criptografía
Se utiliza para proteger contra ataques de tipo “Replay attack”
Las páginas de SharePoint disponen de un control que mantiene “Form Digest”
Los clientes de servicios web tienen que adquirir de forma separada “Form Digest”. Por ejemplo, se puede hacer a través de _vti_bin/sites.asmx
API REST de SharePoint 2013 Creación de elementos de SharePoint:
Para crear una lista, es necesario: Parsear la URL que apunta a la colección de listas: _api/web/lists
Añadir una cabecera X-RequestDigest que incluye el valor de “Form Digest”
Fijar el método HTTP a POST
Crear el documento XML que contiene la información de la lista a crear
API REST de SharePoint 2013 Creación de elementos de SharePoint:
//The body of the REST request is ASCII encoded and inserted into the request stream. string listPostBody = "{'__metadata':{'type':'SP.List'}, 'Title':'" + newListName + "', 'BaseTemplate': 100}"; byte[] listPostData = System.Text.Encoding.ASCII.GetBytes(listPostBody);
HttpWebRequest listRequest = (HttpWebRequest)HttpWebRequest.Create(sharepointUrl.ToString() + "/_api/lists"); listRequest.Method = "POST"; listRequest.ContentLength = listPostBody.Length; listRequest.ContentType = "application/json;odata=verbose"; listRequest.Accept = "application/json;odata=verbose"; listRequest.Headers.Add("Authorization", "Bearer " + accessToken); listRequest.Headers.Add("X-RequestDigest", formDigest); Stream listRequestStream = listRequest.GetRequestStream(); listRequestStream.Write(listPostData, 0, listPostData.Length); listRequestStream.Close(); HttpWebResponse listResponse = (HttpWebResponse)listRequest.GetResponse();
Uso de la API REST de
SharePoint 2013
Aprende de los expertos Descárgate CompartiMOSS:
http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
Descuentos Campus MVP
10% de descuentoen todos nuestros cursos y libros hasta el 31 de diciembre
Introduce el cupón PECIIN12SN al realizar tu compraen nuestra tienda online.
Prueba SharePoint a tope CloudShare:
http://www.cloudshare.com/
Disponen de varias plantillas de SharePoint 2013 listas para probar
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
GRACIAS POR SU ATENCIÓN
Top Related