Explorando o SharePointEstendendo aplicativos do Office com Serviços Web

Pav Cherny

Sumário

Serviços Web do SharePoint e o modelo de objeto
Outlook 2007 e o protocolo StsSync
Excel 2007 e Excel Web Access
Access 2007 e o controle Access Web Datasheet
Word 2007 e a API MetaWeblog
PowerPoint 2007 e MOSS 2007
InfoPath 2007 e InfoPath Forms Services
Conclusão

Os 21 Serviços Web padrão do Microsoft Windows SharePoint Services (WSS) 3.0 e os 19 Serviços Web padrão do Microsoft Office SharePoint Server (MOSS) 2007 permitem criar soluções incrivelmente flexíveis para recuperar dados de recursos locais e remotos, estendendo os recursos do pacote de aplicativos Microsoft Office e integrando aplicativos de negócios. Obviamente, você pode ter até mesmo mais de 40 Serviços Web. Caso instale soluções em servidores adicionais que se integram ao SharePoint como, por exemplo, o Microsoft Office Project Server 2007, você talvez veja o número no servidor do SharePoint exceder facilmente 60 ou mais Serviços Web. E isso nem mesmo contabiliza nenhum dos Serviços Web personalizados do SharePoint que você talvez queira implementar. Os Serviços Web são blocos de construção fundamentais de aplicativos de negócios distribuídos e, na era do Software mais Serviços, eles são ainda mais significativos porque fornecem os meios para que as organizações integrem soluções no local a ambientes hospedados.

Nesta coluna, abordo as vantagens dos Serviços Web em um ambiente do SharePoint, especificamente o uso em e relacionado a aplicativos do Office padrão. Muito embora os aplicativos do Office normalmente dependam do Microsoft Office FrontPage e das chamadas de procedimento remoto (RPCs) WSS, além do Web Distributed Authoring and Versioning (WebDAV), tendo em vista o acesso baseado em arquivo a listas e bibliotecas do SharePoint, eles também usam Serviços Web. Os Serviços Web básicos incluídos no WSS 3.0 são suficientes para a maior parte dos aplicativos do Office como, por exemplo, Microsoft Word 2007, Outlook 2007 e Access 2007, ao passo que os demais como PowerPoint 2007 e InfoPath 2007, podem usar Serviços Web adicionais disponíveis apenas no MOSS 2007 ou em produtos separados. Menciono dependências de produto quando necessário. Caso você queira seguir as minhas explicações em um ambiente de teste, é possível encontrar planilhas com instruções passo a passo no material complementar desta coluna, disponível na seção Download de código em technet.microsoft.com/magazine/bb978519.

Extensas discussões entre desenvolvedores e tópicos sobre a integração de dados de negócios estão além do escopo deste artigo. Pressuponho que você esteja familiarizado com Serviços Web e seu uso em aplicativos de negócios. Para obter uma visão geral a respeito dos Serviços Web internos do WSS 3.0 e do MOSS 2007, recomendo o artigo "Web Services Access" no SDK do SharePoint Server 2007 como ponto de partida (consulte msdn.microsoft.com/library/bb862916.aspx).

Serviços Web do SharePoint e o modelo de objeto

Uma questão clássica no desenvolvimento de soluções em SharePoint é se devemos usar os Serviços Web ou o modelo de objeto. O modelo de objeto é mais fácil de usar, expõe mais interfaces e tem menos sobrecarga do que os Serviços Web, ainda que o modelo de objeto só esteja disponível no servidor do SharePoint por conta das dependências COM. Os Serviços Web estão mais acessíveis e são, por isso, a opção certa para aplicativos cliente e componentes no lado do servidor como, por exemplo, Web parts de Dados Corporativos, que precisam agregar dados de recursos remotos. Na medida em que os dados migram de sistemas no local para ambientes remotos, hospedados, as soluções em SharePoint devem incorporar cada vez mais uma arquitetura SOA para que sejam capaz de lidar com ambientes do SharePoint distribuídos, conforme a ilustração no diagrama da Figura 1.

fig01.gif

Figura 1 Serviços Web em um ambiente do SharePoint distribuído (Clique na imagem para ampliá-la)

Eliminando o acoplamento rígido entre subsistemas front-end e back-end, os Serviços Web fornecem uma ampla flexibilidade. Como a Figura 1 sugere, os front-ends podem apresentar interface com todas as plataformas subjacentes, desde que o Serviço Web intermediário exponha a interface esperada. Demonstrei isso na minha coluna de setembro de 2008 (technet.microsoft.com/magazine/cc742803) substituindo o Serviço Web interno Integração de Email do WSS 3.0 (SharepointEmailWS.asmx) por uma versão personalizada que expõe a mesma interface.

Obviamente, o mesmo princípio também se aplica a aplicativos cliente como, por exemplo, aplicativos do Office que consumam Serviços Web do SharePoint. Stephen Toub demonstrou isso de maneira muito intuitiva no artigo do MSDN "Provedores de calendário personalizado para Outlook 2003", criando um Web service personalizado que espelha a interface do serviço Listas do SharePoint (Lists.asmx) para retornar dados personalizados, e não os itens da lista do SharePoint para o Outlook (consulte msdn.microsoft.com/aa168130). Ele mostrou como um calendário do Outlook pode exibir esses dados diversificados como entradas do log de eventos, itens em um RSS feed, postagens de um grupo de notícias, conversas no Windows Live Messenger, pontos de restauração do sistema em um computador e posteriormente expandiu a solução para oferecer suporte também a listas de contatos.

Em 2006, Patrick Creehan atualizou a implementação de forma que agora funcione com o Outlook 2007. (Consulte a entrada em blog do Patrick "Provedores de calendário personalizado para Outlook 2007" disponível em blogs.msdn.com/pcreehan/archive/2006/11/21/custom-calendar-providers-for-outlook-2007.aspx.)

Outlook 2007 e o protocolo StsSync

Agora que você sabe que os provedores de lista personalizada podem usufruir a integração do Outlook com o SharePoint, vejamos mais atentamente a interação Outlook/SharePoint. Para acessar o conteúdo de uma lista do SharePoint ou da biblioteca de documentos, o Outlook se comunica com o SharePoint por meio do Serviço Web Listas e exibe as listas e os itens lado a lado com pastas do Outlook padrão. Também é possível criar itens novos ou atualizar os já existentes diretamente no Outlook, quando este usa o serviço Listas para atualizar os repositórios do SharePoint. A interação e a arquitetura da solução são relativamente simples, conforme a ilustração na Figura 2.

fig02.gif

Figura 2 Arquitetura StsSync do Outlook (Clique na imagem para ampliá-la)

Para vincular às listas desejadas, o Outlook oferece suporte a um formato de URL especial com base no identificador do protocolo StsSync registrado com o Outlook como o identificador do protocolo. É possível localizar o registro correspondente na estação do trabalho na seguinte chave do Registro: HKEY_CLASSES_ROOT\StsSync\Shell\Open\Command. O Outlook recebe a URL do StsSync como um parâmetro da linha de comando, a divide em partes individuais e, em seguida, usa os parâmetros a serem vinculados à lista do SharePoint especificada.

As URLs do StsSync são longas e criptografadas porque contêm vários parâmetros da cadeia de caracteres da consulta no formato codificado por caracteres de URL típico como, por exemplo:

stssync://sts/?ver=1.0&type=calendar&cmd=add-folder&base-url=http%3A%2F%2Fsharepoint%2FHR%2FAdministration&list-url=%2FLists%2FCalendar%2FAllItems%2Easpx&guid=%7B4DF13090%2DDE1C%2D43EA%2D8B44%2D904869FEABC4%7D&site-name=HR%20Site&list-name=Admin%20Events

Felizmente, você não precisa especificar essas URLs diretamente caso vincule o Outlook à lista desejada dentro da interface do usuário do SharePoint. Basta abrir a lista do SharePoint no Internet Explorer e, em seguida, no menu Ações da lista, clique em Conectar ao Outlook. Esse comando chama uma função JavaScript chamada ExportHailStorm (localizada no servidor, em \%PROGRAMFILES%\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\1033\Init.js), que constrói a URL do StsSync com base nos parâmetros da lista e, em seguida, passa a URL resultante para o Internet Explorer, que passa, por sua vez, essa URL para o manipulador de protocolo registrado, o Outlook. Para obter um exemplo de como trabalhar com listas do SharePoint no Outlook, consulte a planilha complementar "Trabalhando com o Outlook no WSS".

Um dos parâmetros do StsSync mais importantes é base-url, que aponta para o site do SharePoint como, por exemplo, sharepoint/HR/Administration. O Outlook acrescenta automaticamente uma referência ao Serviço Web Listas nessa URL (por exemplo, sharepoint/HR/Administration/_vti_bin/Lists.asmx). Assim, o caminho está livre para a comunicação com o SharePoint. As partes individuais da URL do StsSync são explicadas na Especificação da estrutura do StsSync, em msdn.microsoft.com/cc313101.

Excel 2007 e Excel Web Access

Na Figura 2, você talvez tenha observado a opção Exportar para Planilha sob Conectar ao Outlook no menu Ações do SharePoint, que exporta o conteúdo de uma lista para uma planilha do Excel. O Excel 2007 não usa o protocolo StsSync. Na verdade, Exportar para Planilha chama uma função ExportList (localizada no servidor do SharePoint em \%PROGRAMFILES%\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\1033\Core.js), que inicia uma seqüência interessante de etapas para exportar os itens da lista. Esse recurso não usa Serviços Web.

A chamada ExportList resulta em uma solicitação HTTP direcionada em uma extensão ISAPI (Owssvr.dll) para gerar e retornar um arquivo de consulta à Web (.iqy). Esse arquivo .iqy contém uma instrução de consulta à Web que referencia Owssvr.dll para recuperar os dados reais da lista do SharePoint na forma de um documento XML. Você pode considerar Owssvr.dll uma versão pré-histórica de um Serviço Web, mas sua interface não respeita os padrões do setor para Serviços Web, logo, é válido dizer que o Excel não usa Serviços Web prontos.

Uma solução em Excel que usa Serviços Web é o Excel Web Access, incluído no MOSS 2007 e ilustrado na Figura 3. Na verdade, o Excel Web Access usa Serviços do Excel (ExcelService.asmx) que, por sua vez, dependem dos Serviços de Cálculo do Excel (ECS), um mecanismo de cálculo que fornece as mesmas funções de cálculo do aplicativo de área de trabalho Excel 2007. O Excel Web Access foi criado para funcionar como uma exibição de dados e ferramenta de análise parametrizada. Atribuindo células específicas como parâmetros, habilitando apenas partes específicas da planilha a serem visíveis online e definindo as permissões de acesso ao SharePoint na própria pasta de trabalho, os administradores podem obter um nível muito granular de controle sobre o que os usuários podem acessar em uma pasta de trabalho do Excel. Por motivos de segurança, o Excel Web Access e os Serviços do Excel não oferecem suporte a alguns dos recursos do Excel 2007 como, por exemplo, código do Visual Basic embutido, controles de formulário e referências externas. No entanto, os desenvolvedores de solução podem criar código gerenciado que pode ser acessado em uma pasta de trabalho do SharePoint. Para obter mais informações sobre os Serviços do Excel, inclusive guias explicativos passo a passo, consulte o white paper "Guias passo a passo dos Serviços do Excel" em technet.microsoft.com/cc263430.

fig03.gif

Figura 3 Arquitetura do Excel e do Excel Web Access (Clique na imagem para ampliá-la)

Access 2007 e o controle Access Web Datasheet

De forma semelhante à exportação de uma lista do SharePoint para uma planilha, é possível exportar uma lista para um banco de dados usando a opção Abrir com Access do menu Ações. Abrir com Access também depende da extensão ISAPI Owssvr.dll para obter dados do SharePoint. Caso clique em Abrir com Access, você chama a função JavaScript ExportToDatabase (localizada no servidor do SharePoint em %\PROGRAMFILES%\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\1033\Core.js), que instancia um controle ActiveX SharePoint.ExportDatabase. Esse controle se comunica com Owssvr.dll e cria o banco de dados do Access com tabelas, exibições, relatórios e outros objetos vinculados aos objetos da lista do SharePoint ou copiados para o banco de dados do SharePoint de acordo com as opções de exportação. Consulte a planilha complementar "Trabalhando com o Access no WSS" como introdução às listas do SharePoint no Access 2007.

Embora o controle ActiveX SharePoint.ExportDatabase se comunique com Owssvr.dll e não use Serviços Web, o Access 2007 usa, na verdade, os Serviços Web do SharePoint por meio de uma DLL chamada Stslist.dll, conforme a ilustração na Figura 4. Por exemplo, é possível exibir a faixa de opções Dados Externos no Access 2007, clicar na Lista do SharePoint e, em seguida, vincular à lista desejada como a fonte de dados de uma tabela vinculada. Nesse cenário, o Access chama o Web service Listas (Lists.asmx) no servidor. Em seguida, é possível usar instruções SQL para pesquisar ou atualizar os dados em Access. O Access também chama Lists.asmx sempre que você modifica um registro em uma tabela vinculada para garantir que os dados do SharePoint permaneçam atuais.

fig04.gif

Figura 4 Arquitetura do Access e do Access Web Datasheet (Clique na imagem para ampliá-la)

Também é possível exportar tabelas do Access individuais como listas para o SharePoint e até mesmo migrar um banco de dados do Access para um site do SharePoint, que cria uma lista do SharePoint para cada tabela e migra todos os dados para o SharePoint em uma operação em massa. Embora não possa impor a integridade referencial nas listas (usuários que migram bancos de dados com entradas referenciais para o SharePoint receberão uma mensagem de aviso a respeito), o SharePoint permite referências entre listas, ainda que elas sejam tabelas. Ao exportar tabelas do Access, o Access se comunica com os Serviços Web Webs (Webs.asmx) e Exibições (Views.asmx), além de Lists.asmx, para criar uma lista para cada tabela, bem como uma coluna do site para cada coluna da tabela, e listar exibições com base nessas colunas do site.

Após uma exportação com êxito, você talvez queira exibir uma lista do SharePoint em um modo Folha de Dados. Basta clicar na opção Editar na Folha de Dados no menu Ações da lista. Editar na Folha de Dados redireciona o navegador para uma página da Web que referencia o controle Access Web Datasheet por meio do seguinte CLSID: 65BCBEE4-7728-41A0-97BE-14E1CAE36AAE. Em seguida, o Internet Explorer carrega esse controle ActiveX na estação de trabalho local na página da Web. Caso pesquise o Registro em uma estação de trabalho com o 2007 Office system em execução, você pode encontrar a entrada do Registro correspondente do controle ActiveX (ProgID ListNet.ListNet) no hive HKEY_CLASSES_ROOT. Verifique a chave do Registro InprocServer32, e você pode ver que o controle Access Web Datasheet está implementado em Stslist.dll. O controle Access Web Datasheet usa os mesmos Serviços Web do Access 2007.

Recursos adicionais

Site dos Produtos e Tecnologias do SharePoint

microsoft.com/sharepoint

TechCenter do Windows SharePoint Services

technet.microsoft.com/windowsserver/sharepoint

Windows SharePoint Services Developer Center

msdn.microsoft.com/sharepoint

Blog da equipe de produtos e tecnologias do Microsoft SharePoint

blogs.msdn.com/sharepoint

Word 2007 e a API MetaWeblog

O Word 2007 usa um Web service exclusivo implementado em um arquivo chamado Metaweblog.aspx para usufruir a API MetaWeblog em servidores do SharePoint. Essa API expõe apenas três métodos (newPost, editPost e getPost), mas continua se comunicando via HTTP por meio de estruturas XML. O WSS 3.0 oferece suporte a blogs prontos com um modelo de site Blog e uma interface de gerenciamento Web. Com base na API MetaWeblog, é possível usar o Word 2007 como um programa de blog, que fornece uma alternativa viável à interface do navegador.

Observe que o serviço MetaWeblog não usa uma extensão de nome de arquivo .asmx como os demais Serviços Web do SharePoint. A API MetaWeblog foi desenvolvida há mais de cinco anos por Dave Winer, e ferramentas de blog conhecidas devem acessar essa API por meio de uma página .aspx (é possível ler a especificação em xmlrpc.com/metaWeblogApi). Usando .aspx em lugar da convenção de nomenclatura .asmx usual, o SharePoint permanece compatível com essas ferramentas de blog.

PowerPoint 2007 e MOSS 2007

Em um ambiente do WSS 3.0, o PowerPoint 2007 não usa Serviços Web, mas se comunica com o SharePoint principalmente por meio de RPCs FrontPage/WSS e WebDAV ao acessar arquivos de apresentação em uma biblioteca de documentos. Ainda assim, caso você tenha o MOSS 2007, o PowerPoint pode usufruir as bibliotecas de slides do SharePoint e o Web service Biblioteca de Slides (SlideLibrary.asmx).

As bibliotecas de slides são um tipo especial de biblioteca de documentos. É possível usá-las com o recurso Publicar Slides do PowerPoint, capaz de dividir um deck de apresentação em slides individuais e salvá-los como arquivos separados em uma pasta ou biblioteca. Ao publicar slides em uma biblioteca, o PowerPoint se comunica com Webs.asmx e Slidelibrary.asmx para verificar as URLs e ver se há colisões de slide. Caso um slide com o mesmo nome já exista na biblioteca, o PowerPoint solicita que você substitua o slide existente ou ignore o atual.

Depois de serem carregados em uma biblioteca de slides, os slides podem ser reutilizados em outros decks de apresentação, e os slides originais permanecem na biblioteca do servidor do SharePoint. O SharePoint adiciona um carimbo de data/hora a cada slide, e o PowerPoint pode verificar esse carimbo de data/hora, bem como o nome da apresentação do PowerPoint de origem do slide, para detectar atualizações por meio do Serviço Web Biblioteca de Slides. Caso haja atualizações, é possível optar por substituir o slide local na apresentação atual ou acrescentar o slide alterado à apresentação. Tendo em vista uma introdução, leia o artigo "Usar Bibliotecas de Slides para compartilhar e reutilizar o conteúdo do slide do PowerPoint 2007" em office.microsoft.com/en-us/powerpoint/HA012261671033.aspx. Também consulte a planilha complementar chamada "Trabalhando com Bibliotecas de Slides".

Ocasionalmente, você pode observar uma mensagem de erro no PowerPoint 2007 ao publicar slides, informando que "Falha em n de n slides que estavam sendo publicados em <biblioteca>. Tente publicar novamente". Isso pode ser o resultado de permissões de acesso não encontradas ou problemas na comunicação de WebDAV. Como solução alternativa, é possível publicar os slides em uma pasta do sistema de arquivos local e, em seguida, copiar os arquivos manualmente para a biblioteca de slides usando o Windows Explorer e o caminho UNC para a biblioteca de slides como, por exemplo, \\sharepoint\SlideLib, e não sharepoint/SlideLib. O Windows Explorer usa o mesmo redirecionador WebDAV do PowerPoint 2007, mas não entra em contato com SlideLibrary.asmx para detectar colisões de slide. Na verdade, ele usa WebDAV para detectar se já existe um arquivo. A Figura 5 mostra a arquitetura da biblioteca de slides do PowerPoint 2007.

fig05.gif

Figura 5 Arquitetura do PowerPoint e de SlideLibrary (Clique na imagem para ampliá-la)

InfoPath 2007 e InfoPath Forms Services

Esta coluna não estaria completa sem mencionar o InfoPath 2007 e o InfoPath Forms Services. Na verdade, o InfoPath 2007 é o maior cliente de Serviços Web dentre os aplicativos do Office abordados nesta coluna. Obviamente, é possível usar muito os Serviços Web como fontes de dados em formulários do InfoPath, mas mesmo que você deixe de lado o desenvolvimento de formulários e se concentre na publicação de modelos de formulário simples que não usam fontes de dados externas, o InfoPath 2007 se comunica com o SharePoint por meio de Serviços Web, além de RPCs FrontPage/WSS e WebDAV, conforme a ilustração na Figura 6. Para obter um exemplo que mostre como publicar modelos de formulário em uma biblioteca de formulários do SharePoint, consulte a planilha "Trabalhando com InfoPath Forms Services", disponível em Download de código.

fig06.gif

Figura 6 Arquitetura do InfoPath e dos Forms Services (Clique na imagem para ampliá-la)

Os Serviços Web importantes dos quais o InfoPath 2007 depende são Webs.asmx e Lists.asmx. Em meio a outras coisas, o InfoPath recupera informações sobre a definição das colunas do site e os tipos de conteúdo do Serviço Web e usa essas informações para preencher as caixas da lista de colunas do site na caixa de diálogo Selecionar Campo ou Grupo, de forma que seja possível associar colunas de formulário a colunas do site do SharePoint existentes durante a publicação de um modelo de formulário. O InfoPath cria colunas novas sem uma associação no site do SharePoint usando o serviço Listas. O InfoPath também interage com o serviço Listas para criar a biblioteca de formulários e uma definição do tipo de conteúdo para o modelo de formulário. Tendo em vista o carregamento efetivo do modelo, o InfoPath usa RPCs FrontPage/WSS e WebDAV, apenas colocando o modelo com o nome de arquivo template.xsn na subpasta Formulários da nova biblioteca.

Considerando os modelos de formulário compatíveis com navegador, o Assistente de Publicação no InfoPath pode oferecer a opção para permitir que um formulário seja preenchido usando um navegador, isso se o MOSS 2007 ou o Microsoft Office Forms Server 2007 estiver instalado no servidor do SharePoint. O InfoPath detecta se os Forms Services estão instalados e habilitados para o site do SharePoint atual usando a página da Web FormServerDetector.aspx (como, por exemplo, sharepoint/_layouts/FormServerDetector.aspx?IsFormServerEnabled=check), que retorna <server IsFormServerEnabled = 'true' /> quando os Forms Services estão presentes e habilitados. Em seguida, caso você permita que o formulário seja preenchido usando um navegador, o InfoPath 2007 chama o Serviço Web Forms Services (FormsServices.asmx) durante o processo de publicação para habilitar, de acordo, o modelo de formulário para navegador. Para obter mais informações sobre formulários do InfoPath habilitados para navegador, consulte a Referência geral do Microsoft Office Forms Server 2007, disponível em msdn.microsoft.com/aa701145.

Conclusão

Os Serviços Web são uma parte importante da plataforma SharePoint. Eles permitem soluções de negócios capazes de acessar recursos locais e remotos, integrar aplicativos de negócios distribuídos entre si e fornecer recursos importantes a aplicativos do Office. Os Serviços Web mais importantes dos aplicativos do Office são Webs.asmx e Lists.asmx, incluídos no WSS 3.0, para trabalhar com sites, listas e bibliotecas do SharePoint. Outro Serviço Web usado ocasionalmente é Views.asmx, que fornece métodos para trabalhar com exibições de lista. A maioria dos aplicativos do Office não exige a implantação de um MOSS 2007, ainda que alguns aplicativos como, por exemplo, o PowerPoint 2007 e o InfoPath 2007, possam se beneficiar de recursos avançados como Bibliotecas de Slides e Forms Services, só disponíveis com o MOSS 2007 ou como produtos separados.

Na era do Software mais Serviços, os Serviços Web desempenham um papel importante porque desacoplam ambientes back-end hospedados dos aplicativos front-end no local. O SharePoint é uma tecnologia essencial que possibilita a colaboração online; os aplicativos e os suplementos do Office continuam sendo executados em estações de trabalho locais e os Serviços Web, com as demais tecnologias Web, fornecem acesso a recursos e dados em firewalls corporativos em ambientes distribuídos. Não se trata de nenhuma coincidência os servidores do SharePoint hospedarem 20, 40, 60 ou mais Serviços Web. Os Serviços Web são a opção certa para soluções de negócios que enfatizam a facilidade de uso, a simplicidade de acesso e a flexibilidade, e o modelo de objeto é a opção certa para criar esses Serviços Web.

Pav Cherny é especialista em TI e autor especializado em tecnologias Microsoft para colaboração e comunicação unificada. Entre suas publicações estão white papers, manuais de produto e livros com foco nas operações de TI e na administração do sistema. Pav é presidente da Biblioso Corporation, empresa especializada em serviços de documentação gerenciada e de localização.