Novedades en Desarrollo en SharePoint 2013

Juan Carlos Gonzalez
Juan Carlos GonzalezMicrosoft 365 Apps & Services MVP | Microsoft 365 SME at CompartiMOSS
¡SharePoint 2013 como
plataforma de desarrollo:
      Novedades!
 Juan Carlos González (@jcgm1978)
 MVP SharePoint Server
 http://geeks.ms/blogs/ciin
 jgonzalez@gruposodercan.es
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:

                                     _vti_bin/client.svc

Servidor
                                             Execute
Cliente                                       Query

                                      Microsoft.SharePoint
                                           Sabor
                                      .Client.Silverlight.dll     Sabor
                Sabor .NET
                                         Silverlight            JavaScript
            Microsoft.SharePoint
                 .Client.dll                                         SP.js

                                   Código personalizado
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:



                   _api es un Nuevo alias para _vti_bin/client.svc

Servidor
                                            Execute
Cliente    OData                             Query

                           Sabor            Sabor             Sabor
                            .NET          Silverlight       JavaScript



                               Código personalizado
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
            Código JavaScript

Navegador
                                 Respuesta JSON
             MO JavaScript                                         MO
                                 Petición XML                    Servidor
                   Proxy
                                                  Client.svc
                                 Respuesta JSON     (_api)
                   Proxy

                                 Petición XML                       BD
              MO manejado
                                                                 contenidos
Cliente manejado

            Código C# o VB.NET                      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 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.
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
Novedades en Desarrollo en SharePoint 2013
GRACIAS POR SU ATENCIÓN
1 of 25

Recommended

Exprimiendo SharePoint 2010 by
Exprimiendo SharePoint 2010Exprimiendo SharePoint 2010
Exprimiendo SharePoint 2010Juan Pablo
1.5K views48 slides
SP2010 evolución vs evolución by
SP2010 evolución vs evoluciónSP2010 evolución vs evolución
SP2010 evolución vs evolucióngoreorti
349 views31 slides
IT Camps Apps Office 365 Valencia 2014 by
IT Camps Apps Office 365 Valencia 2014IT Camps Apps Office 365 Valencia 2014
IT Camps Apps Office 365 Valencia 2014Adrian Diaz Cervera
600 views62 slides
Estrategias de desarrollo en sharepoint by
Estrategias de desarrollo en sharepointEstrategias de desarrollo en sharepoint
Estrategias de desarrollo en sharepointDaniel Laco
1.4K views49 slides
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube by
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nubeMsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nubeMiguel Tabera
657 views56 slides
Bajo el Toldo con la Programabilidad de Microsoft SharePoint 2010 by
Bajo el Toldo con la Programabilidad de Microsoft SharePoint 2010Bajo el Toldo con la Programabilidad de Microsoft SharePoint 2010
Bajo el Toldo con la Programabilidad de Microsoft SharePoint 2010Andrés Iturralde
693 views38 slides

More Related Content

Similar to Novedades en Desarrollo en SharePoint 2013

Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa... by
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...Andrés Iturralde
584 views28 slides
Novedades en BCS en SharePoint 2013 by
Novedades en BCS en SharePoint 2013Novedades en BCS en SharePoint 2013
Novedades en BCS en SharePoint 2013Juan Carlos Gonzalez
1.3K views32 slides
SharePoint 2010 Introducción para Desarrolladores by
SharePoint 2010 Introducción para DesarrolladoresSharePoint 2010 Introducción para Desarrolladores
SharePoint 2010 Introducción para DesarrolladoresAndrés Iturralde
996 views38 slides
Sharepoint server 2010 - La nueva colaboración by
Sharepoint server 2010  - La nueva colaboraciónSharepoint server 2010  - La nueva colaboración
Sharepoint server 2010 - La nueva colaboraciónAndrés Iturralde
1.2K views27 slides
¿Es posible extender a SharePoint 2013? Probablemente en más de una forma… by
¿Es posible extender a SharePoint 2013? Probablemente en más de una forma…¿Es posible extender a SharePoint 2013? Probablemente en más de una forma…
¿Es posible extender a SharePoint 2013? Probablemente en más de una forma…Fabian Imaz
571 views34 slides
Desarrollando un API con REST by
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
15.9K views37 slides

Similar to Novedades en Desarrollo en SharePoint 2013(20)

Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa... by Andrés Iturralde
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...
Esto es todo sobre los servicios Desarrollo de Aplicaciones Personalizadas pa...
Andrés Iturralde584 views
SharePoint 2010 Introducción para Desarrolladores by Andrés Iturralde
SharePoint 2010 Introducción para DesarrolladoresSharePoint 2010 Introducción para Desarrolladores
SharePoint 2010 Introducción para Desarrolladores
Andrés Iturralde996 views
Sharepoint server 2010 - La nueva colaboración by Andrés Iturralde
Sharepoint server 2010  - La nueva colaboraciónSharepoint server 2010  - La nueva colaboración
Sharepoint server 2010 - La nueva colaboración
Andrés Iturralde1.2K views
¿Es posible extender a SharePoint 2013? Probablemente en más de una forma… by Fabian Imaz
¿Es posible extender a SharePoint 2013? Probablemente en más de una forma…¿Es posible extender a SharePoint 2013? Probablemente en más de una forma…
¿Es posible extender a SharePoint 2013? Probablemente en más de una forma…
Fabian Imaz571 views
Desarrollando un API con REST by Alex Puig
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
Alex Puig15.9K views
144 Rest Web Services by GeneXus
144 Rest Web Services144 Rest Web Services
144 Rest Web Services
GeneXus3.8K views
Aplicaciones Autohosted, el nuevo modelo para extender SharePoint online by Mario Cortés Flores
Aplicaciones Autohosted, el nuevo modelo para extender SharePoint onlineAplicaciones Autohosted, el nuevo modelo para extender SharePoint online
Aplicaciones Autohosted, el nuevo modelo para extender SharePoint online
Intro a ASP.NET by williamsm
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
williamsm4.8K views
Mejorando interfaz de SharePoint 2010 con Silverlight 4 by SolidQ
Mejorando interfaz de SharePoint 2010 con Silverlight 4Mejorando interfaz de SharePoint 2010 con Silverlight 4
Mejorando interfaz de SharePoint 2010 con Silverlight 4
SolidQ540 views
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx by XavierNavia
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptxArquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
Arquitectura-orientada-a-Servicios.-v-2017.01-Prof.-L.-Straccia.pptx
XavierNavia6 views
Integración de Tecnologías y Plataformas.pptx by LuisTenorio42
Integración de Tecnologías y Plataformas.pptxIntegración de Tecnologías y Plataformas.pptx
Integración de Tecnologías y Plataformas.pptx
LuisTenorio424 views
Como crear add ins hibridas para share point y office by Fabian Imaz
Como crear add ins hibridas para share point y officeComo crear add ins hibridas para share point y office
Como crear add ins hibridas para share point y office
Fabian Imaz670 views

More from Juan Carlos Gonzalez

Boost your Teams Meetings to the next level with Teams Premium by
Boost your Teams Meetings to the next level with Teams PremiumBoost your Teams Meetings to the next level with Teams Premium
Boost your Teams Meetings to the next level with Teams PremiumJuan Carlos Gonzalez
3 views53 slides
Stream en SharePoint en detalle by
Stream en SharePoint en detalle Stream en SharePoint en detalle
Stream en SharePoint en detalle Juan Carlos Gonzalez
23 views43 slides
Power Platform y Teams: ¿Qué platos tengo en mi menú? by
Power Platform y Teams: ¿Qué platos tengo en mi menú?Power Platform y Teams: ¿Qué platos tengo en mi menú?
Power Platform y Teams: ¿Qué platos tengo en mi menú?Juan Carlos Gonzalez
38 views36 slides
Digitaliza tus procesos de Aprobación con Approvals en Teams: ¿Qué hay de nue... by
Digitaliza tus procesos de Aprobación con Approvals en Teams: ¿Qué hay de nue...Digitaliza tus procesos de Aprobación con Approvals en Teams: ¿Qué hay de nue...
Digitaliza tus procesos de Aprobación con Approvals en Teams: ¿Qué hay de nue...Juan Carlos Gonzalez
33 views49 slides
Stream on SharePoint, an overview - JcGonzalez.pptx by
Stream on SharePoint, an overview - JcGonzalez.pptxStream on SharePoint, an overview - JcGonzalez.pptx
Stream on SharePoint, an overview - JcGonzalez.pptxJuan Carlos Gonzalez
145 views43 slides
Shared channels in Microsoft Teams, an overview by
Shared channels in Microsoft Teams, an overview Shared channels in Microsoft Teams, an overview
Shared channels in Microsoft Teams, an overview Juan Carlos Gonzalez
46 views33 slides

More from Juan Carlos Gonzalez(20)

Boost your Teams Meetings to the next level with Teams Premium by Juan Carlos Gonzalez
Boost your Teams Meetings to the next level with Teams PremiumBoost your Teams Meetings to the next level with Teams Premium
Boost your Teams Meetings to the next level with Teams Premium
Power Platform y Teams: ¿Qué platos tengo en mi menú? by Juan Carlos Gonzalez
Power Platform y Teams: ¿Qué platos tengo en mi menú?Power Platform y Teams: ¿Qué platos tengo en mi menú?
Power Platform y Teams: ¿Qué platos tengo en mi menú?
Digitaliza tus procesos de Aprobación con Approvals en Teams: ¿Qué hay de nue... by Juan Carlos Gonzalez
Digitaliza tus procesos de Aprobación con Approvals en Teams: ¿Qué hay de nue...Digitaliza tus procesos de Aprobación con Approvals en Teams: ¿Qué hay de nue...
Digitaliza tus procesos de Aprobación con Approvals en Teams: ¿Qué hay de nue...
Digitaliza tus Aprobaciones con Approvals en Teams - JcGonzalez .pptx by Juan Carlos Gonzalez
Digitaliza tus Aprobaciones con Approvals en Teams - JcGonzalez .pptxDigitaliza tus Aprobaciones con Approvals en Teams - JcGonzalez .pptx
Digitaliza tus Aprobaciones con Approvals en Teams - JcGonzalez .pptx
Microsoft 365 Chicago - Governing Microsoft Teams Meetings by Juan Carlos Gonzalez
Microsoft 365 Chicago - Governing Microsoft Teams MeetingsMicrosoft 365 Chicago - Governing Microsoft Teams Meetings
Microsoft 365 Chicago - Governing Microsoft Teams Meetings
Solicita y comparte actualizaciones con Updates en Teams by Juan Carlos Gonzalez
Solicita y comparte actualizaciones con Updates en TeamsSolicita y comparte actualizaciones con Updates en Teams
Solicita y comparte actualizaciones con Updates en Teams
Shared channels in Microsoft Teams, an overview - JcGonzalez.pptx by Juan Carlos Gonzalez
Shared channels in Microsoft Teams, an overview - JcGonzalez.pptxShared channels in Microsoft Teams, an overview - JcGonzalez.pptx
Shared channels in Microsoft Teams, an overview - JcGonzalez.pptx
Governing Microsoft Teams Meetings: What are my options? by Juan Carlos Gonzalez
Governing Microsoft Teams Meetings: What are my options?Governing Microsoft Teams Meetings: What are my options?
Governing Microsoft Teams Meetings: What are my options?
Power Platform y Teams: ¿Qué platos tengo en mi menú? by Juan Carlos Gonzalez
Power Platform y Teams: ¿Qué platos tengo en mi menú?Power Platform y Teams: ¿Qué platos tengo en mi menú?
Power Platform y Teams: ¿Qué platos tengo en mi menú?
Digitalize your Approval processes with approvals in Microsoft Teams by Juan Carlos Gonzalez
Digitalize your Approval processes with approvals in Microsoft TeamsDigitalize your Approval processes with approvals in Microsoft Teams
Digitalize your Approval processes with approvals in Microsoft Teams
Digitaliza tus Aprobaciones con Approvals en Microsoft Teams by Juan Carlos Gonzalez
Digitaliza tus Aprobaciones con Approvals en Microsoft TeamsDigitaliza tus Aprobaciones con Approvals en Microsoft Teams
Digitaliza tus Aprobaciones con Approvals en Microsoft Teams
Microsoft Lists o como crear aplicaciones a la velocidad de la luz para M365 ... by Juan Carlos Gonzalez
Microsoft Lists o como crear aplicaciones a la velocidad de la luz para M365 ...Microsoft Lists o como crear aplicaciones a la velocidad de la luz para M365 ...
Microsoft Lists o como crear aplicaciones a la velocidad de la luz para M365 ...
Microsoft Lists o como crear aplicaciones a la velocidad de la luz para M365 ... by Juan Carlos Gonzalez
Microsoft Lists o como crear aplicaciones a la velocidad de la luz para M365 ...Microsoft Lists o como crear aplicaciones a la velocidad de la luz para M365 ...
Microsoft Lists o como crear aplicaciones a la velocidad de la luz para M365 ...

Novedades en Desarrollo en SharePoint 2013

  • 1. ¡SharePoint 2013 como plataforma de desarrollo: Novedades! Juan Carlos González (@jcgm1978) MVP SharePoint Server http://geeks.ms/blogs/ciin jgonzalez@gruposodercan.es
  • 2. 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
  • 3. Modelo de Objetos en Cliente  En SharePoint 2010: _vti_bin/client.svc Servidor Execute Cliente Query Microsoft.SharePoint Sabor .Client.Silverlight.dll Sabor Sabor .NET Silverlight JavaScript Microsoft.SharePoint .Client.dll SP.js Código personalizado
  • 4. 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
  • 5. Modelo de Objetos en Cliente  Arquitectura de la API remota de SharePoint 2013: _api es un Nuevo alias para _vti_bin/client.svc Servidor Execute Cliente OData Query Sabor Sabor Sabor .NET Silverlight JavaScript Código personalizado
  • 6. 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
  • 7. Programación con el CSOM Código JavaScript Navegador Respuesta JSON MO JavaScript MO Petición XML Servidor Proxy Client.svc Respuesta JSON (_api) Proxy Petición XML BD MO manejado contenidos Cliente manejado Código C# o VB.NET SharePoint
  • 8. 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
  • 9. 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 + ", "); } }
  • 10. 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"]); } }
  • 11. 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
  • 12. 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
  • 13. 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'
  • 14. API REST de SharePoint 2013  Consultas REST desde código manejado:  Usar HttpWebRequest y HttpWebResponse  Consultar el XML usando XDocument.Descendants
  • 15. 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"); //….
  • 16. 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
  • 17. 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
  • 18. 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();
  • 19. Uso de la API REST de SharePoint 2013
  • 20. Aprende de los expertos  Descárgate CompartiMOSS:  http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
  • 21. 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.
  • 22. Prueba SharePoint a tope  CloudShare:  http://www.cloudshare.com/  Disponen de varias plantillas de SharePoint 2013 listas para probar 
  • 23. 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
  • 25. GRACIAS POR SU ATENCIÓN