novedades en desarrollo en sharepoint 2013

25
¡SharePoint 2013 como plataforma de desarrollo: Novedades! Juan Carlos González (@jcgm1978) MVP SharePoint Server http://geeks.ms/blogs/ciin [email protected]

Upload: juan-carlos-gonzalez

Post on 11-May-2015

629 views

Category:

Documents


0 download

DESCRIPTION

Presentación del webcast sobre novedades en desarrollo en SharePoint 2013 realizado en octubre de 2012.

TRANSCRIPT

Page 1: Novedades en Desarrollo en SharePoint 2013

¡SharePoint 2013 como plataforma de desarrollo:

Novedades!

Juan Carlos González (@jcgm1978)MVP SharePoint Serverhttp://geeks.ms/blogs/[email protected]

Page 2: Novedades en Desarrollo en SharePoint 2013

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

Page 3: Novedades en Desarrollo en SharePoint 2013

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

Page 4: Novedades en Desarrollo en SharePoint 2013

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

Page 5: Novedades en Desarrollo en SharePoint 2013

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

Page 6: Novedades en Desarrollo en SharePoint 2013

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

Page 7: Novedades en Desarrollo en SharePoint 2013

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

Page 8: Novedades en Desarrollo en SharePoint 2013

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

Page 9: Novedades en Desarrollo en SharePoint 2013

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 + ", "); }

}

Page 10: Novedades en Desarrollo en SharePoint 2013

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"]); } }

Page 11: Novedades en Desarrollo en SharePoint 2013

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

Page 12: Novedades en Desarrollo en SharePoint 2013

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

Page 13: Novedades en Desarrollo en SharePoint 2013

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'

Page 14: Novedades en Desarrollo en SharePoint 2013

API REST de SharePoint 2013 Consultas REST desde código manejado:

Usar HttpWebRequest y HttpWebResponse

Consultar el XML usando XDocument.Descendants

Page 15: Novedades en Desarrollo en SharePoint 2013

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");//….

Page 16: Novedades en Desarrollo en SharePoint 2013

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

Page 17: Novedades en Desarrollo en SharePoint 2013

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

Page 18: Novedades en Desarrollo en SharePoint 2013

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();

Page 19: Novedades en Desarrollo en SharePoint 2013

Uso de la API REST de

SharePoint 2013

Page 20: Novedades en Desarrollo en SharePoint 2013

Aprende de los expertos Descárgate CompartiMOSS:

http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx

Page 21: Novedades en Desarrollo en SharePoint 2013

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.

Page 22: Novedades en Desarrollo en SharePoint 2013

Prueba SharePoint a tope CloudShare:

http://www.cloudshare.com/

Disponen de varias plantillas de SharePoint 2013 listas para probar

Page 23: Novedades en Desarrollo en SharePoint 2013

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

Page 24: Novedades en Desarrollo en SharePoint 2013
Page 25: Novedades en Desarrollo en SharePoint 2013

GRACIAS POR SU ATENCIÓN