Criando WCF Service para SharePoint 2013 – Tutorial

        Este post descreve a criação de um WCF Service e o deploy  na Farm do SharePoint 2013, no meu caso uso um StandAlone.

        O WCF Services desempenha um papel importante no modelo de desenvolvimento baseado no SharePoint 2013 Apps, atuando como uma ponte entre o SharePoint Client Object Model e o SharePoint Client Object Model.

        O Server Side Object Model  não está disponível para SharePoint 2013 Apps, isso quer dizer que qualquer operação ou requisito de negócios em uma aplicação deve ser executado somente Client Side Object Model (Microsoft.SharePoint.Client).

        Quem desenvolve para SharePoint já esta acostumado com esse cenário  e tem esse conceito bem enraizado.

Criando um WCF Service estamos violando o conceito de Modelo de Desenvolvimento de Aplicativos (SDK). Mas em certos momentos é necessário porque não existe outra maneira,   por exemplo, o SocialRatingManager. Não existe nenhuma classe CSOM equivalente a classe SocialRatingManager.

        Depois dessa introdução vou explicar o passo á passo para a criação de um serviço, bem simples!

Vamos lá hands on.

Crie um projeto do tipo SharePoint 2013 – Empty Project, defina um nome para seu projeto.

WCF1

wcf2

Adicione as seguintes referências, vamos usar ela nas nossa classes.

wcf3

Feito isso vamos mapear uma pasta do SharePoint, a pasta em questão será o LAYOUTS, onde nosso .svc será implementado.

wcf4

Neste passo vamos criar uma sub-pasta e renomeá-la como Service, e dentro desta pasta vamos adicionar um novo item do tipo texto e remomeá-lo para Service.svc.

wcf5

Dentro no nosso .svc vamos adicionar o seguinte trecho de código.

<%@ ServiceHost Language="C#" Debug="true"
    Service="GSD.WCFService.Bussiness.Services"
    Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressWebServiceHostFactory,
    Microsoft.SharePoint.Client.ServerRuntime, Version=15.0.0.0, Culture=neutral,
    PublicKeyToken=71e9bce111e9429c" %>

Esse trecho de código ainda não faz muito sentido…rs Para isso criar uma nova pasta chamada Bussiness onde colocaremos nossas classes responsável pela negocio do serviço. Dentro desta pasta vamos adicionar duas classes IServices.cs e Services.cs.

wcf6

Na classe IService iremos substituir tudo pelo código abaixo:

using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.ServiceModel.Web;
namespace GSD.WCFService.Bussiness
{
    [ServiceContract]
    public interface IServices
    {
        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetAllLists()")]
        List<string> GetAllLists();
    }

}

Faremos o mesmo procedimento para a classe Services:

using System.Collections.Generic;
using System.ServiceModel.Activation;
using Microsoft.SharePoint;

namespace GSD.WCFService.Bussiness
{
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public sealed class Service : IServices
    {
        public List<string> GetAllLists()
        {
            List<string> list = new List<string>();
            using (SPSite site = new SPSite(SPContext.Current.Web.Url))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPListCollection colList = web.Lists;
                    foreach (SPList item in colList)
                    {
                        list.Add(item.Title);
                    }
                }
            }
            return list;
        }
    }
}

Antes de darmos continuidade vou explicar o que esse trecho de código faz, busco todas as lista da WebApp e adiciono em uma lista.

OK!

Agora vamos realizar o deploy de tudo isso que a gente fez até aqui, para isso selecione o projeto e vá em propriedades e mude o Deployment Target Property para  WebApplication.

Agora vamos testar no navegador para ser o que nosso serviço retorna.

http://wv2sbe02/axa/ecm/_layouts/15/GSD.WCFService/Services/Service.svc/GetAllLists()

Como havia mencionado acima este serviço ia retornar todas as listas da minha WebApp. Então seu retorno deve ser muito similar a este:
wcf8

Com essa simples explicação vocês já podem criar serviços e realizar o deploy na Farm do SharePoint.

Vlw por  hora é isso grande abraço!!

by GSD

About Gustavo Delfino

Analista / Desenvolvedor de Sistemas com especialização em aplicações Web e SharePoint. Trabalho com .NET e SharePoint desde 2008. Também com Dynamics CRM desde de a versão 4.0. Certificações : MCTS, MCSD, MCSA e MCDS.
This entry was posted in .NET, SharePoint 2013, SharePoint Services, Uncategorized, Visual Studio 2015, WCF Services. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s