Infra - Sharepoint

Desenvolvimento de Aplicações Utilizando a Plataforma Sharepoint 2007 – Parte 1

Neste artigo vamos ver quais as melhores e mais convenientes práticas de desenvolvimento de aplicações baseadas no Sharepoint 2007.

por Cristian Arrano Townsend



Introdução

Enquanto aguardamos a versão 2010 do Office, que trará recursos fantásticos no Sharepoint, vamos continuar falando sobre o Sharepoint 2007. Neste artigo vamos ver quais as melhores e mais convenientes práticas de desenvolvimento de aplicações baseadas no Sharepoint 2007.

Como o Sharepoint 2007 é um produto, toda e qualquer customização sobre o mesmo não é uma tarefa trivial, como estamos acostumados no Visual Studio, sempre começando um projeto do zero e tendo 100% de controle sobre o mesmo.

Arquitetura

Antes de “meter a mão na massa” no Sharepoint, é conveniente entender como o Sharepoint é composto.

O ASP.NET, SQL e o IIS são a base principal do Sharepoint. Quando instalado, o as páginas são distribuidos em várias pastas do sistema. Parte de nossos exemplos é desenvolver na pasta _layouts, que fica localizada na pasta C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS.

O Banco de dados do Sharepoint é basicamente composto por 2 tipos: Configuração, Administração e Conteúdo. Não é recomendável trabalhar diretamente nos Bancos de Dados, já que sua estrutura não é explicita e fácil de ser compreendida.

Desenvolvimento utilizando API do Sharepoint

Devido a sua arquitetura, o desenvolvimento de aplicações no Sharepoint 2007 não é uma tarefa trivial e simples. Por várias razões:

ü Segurança – Como o Sharepoint é um produto fechado, customizações requerem de permissões que dificultam muito o desenvolvimento e principalmente o deploy.

ü Ambiente – O Sharepoint só pode ser instalado no Windows 2003 (salvo uma exceção da Bamboo Solutions), o que dificulta bastante o desenvolvimento.

ü Banco de Dados – Como se trata de um produto “fechado”, não é recomendável alterar a estrutura do banco de dados, o que nos obriga a lidar com os dados através da API.

Em contra-partida, o Sharepoint disponibiliza um conjunto de API’s que realizam todas as tarefas necessárias para acessar e customizar o Sharepoint.

Para ilustrar de maneira simples, vamos a um exemplo prático da API do Sharepoint.

Crie um Projeto no Visual Studio 2008 do tipo Web Site, como mostra a figura abaixo:

Figura1.jpg

Note que o site foi criado no endereço localhost/_layouts. A explicação para esse procedimento é muito simples. A pasta _Layouts já faz parte do contexto do Sharepoint. Fisicamente ela está localizada na pasta Program Files. (c:\Progra m Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS).

Uma vez criado o site, vamos referenciar a API do Sharepoint, para utilizar os recursos que o Sharepoint nos entrega.

Figura2.jpg

Note que as referências do Sharepoint aparecem na lista de assemblies do .net porque estamos trabalhando no Windows 2003. Caso o desenvolvimento seja feito em uma maquina de desenvolvimento, com Windows Vista ou XP, basta copiar a DLL (Microsoft. Sharepoint.dll) para a maquina de desenvolvimento e acessar.

Uma dos principais motivos de desenvolver diretamente no Windows 2003 é a capacidade de debug da aplicação.

Agora que temos a referência criada, vamos iniciar o código da página Default.aspx

Como primeiro exemplo, vamos colocar em um Label o título do site atual, do contexto. O código é mostrado abaixo:

Figura3.jpg

Figura4.jpg

O resultado pode ser visto na figura abaixo:

Figura5.jpg

Agora nosso desafio será mostrar todas as listas do site site do contexto. O código para alcançar tal objetivo é mostrado abaixo:

Figura6.jpg

O resultado do código acima é mostrado abaixo:

Figura7.jpg

Agora que temos conhecimento de como utilizar a API do Sharepoint para desenvolver aplicações, vamos criar um exemplo utilizando CAML.

CAML

CAML é a abreviação de Collaborative Application Markup Language e é uma espécie de SQL para criar consultas no Sharepoint. Sua sintaxe confusa e dificil de entender é sem dúvida, o grande impedimento da tecnologia. Felizmente existem editores que fazem o trabalho sem muito esforço, evitando que percamos tempo fazendo consultas.

O editor mais conhecido é o CAML Builder, e pode se baixado deste site: http://www.u2u.info/Blogs/Patrick/Lists/Posts/Post.aspx?ID=1252

No nosso artigo vamos fazer um exemplo utilizando CAML que liste os itens de uma lista aplicando um critério. No nosso caso, o critério será mostrar os produtos de uma lista que tenham um preço superior a um valor inserido pelo usuário.

Primeiramente vamos criar nossa consulta utilizando o CAML Builder.

Ao iniciar o CAML Builder, é necessário colocar o site que vamos trabalhar e mapear as listas.

Figura8.jpg

Conectado no Sharepoint, selecionamos a lista Produtos e fazemos nossa consulta, resultando na imagem abaixo:

Figura9.jpg

No SQL, nossa consulta seria por exemplo: select * from produtos where preco > 100. Já no CAML, nossa consulta fica enorme e de dificil interpretação, como é mostrado no código abaixo:

<Query> <Where> <Gt> <FieldRef Name="Preco" /> <Value Type="Currency">100</Value> </Gt></Where></Query>

Tendo a consulta em mãos, basta criar a página que executará a consulta acima.

No Visual Studio 2008, crie uma página chamada CAMLExemplo.aspx e crie os seguintes controles:

ü Textbox com ID TxtPreco

ü Button com ID BtnOk

ü Gridview com ID GviewProdutos

Ao clicar duas vezes no botão BtnOk, vamos inserir o código mostrado abaixo:

Figura10.jpg

O código acima vincula um Gridview com um Datatable, através do método GetSiteData. O resultado pode ser exibido abaixo:

Figura11.jpg

Na próxima parte do artigo, veremos como aplicar Master Pages em páginas desenvolvidas com Visual Studio e como trabalhar visualmente com Web Parts no Visual Studio.

Cristian Arrano Townsend

Cristian Arrano Townsend - Trabalha há 12 anos com desenvolvimento de software. Atualmente trabalha como consultor da FCAMARA em Curitiba, trabalhando com .NET, Metodologias Ágeis e Sharepoint. Possui algumas certificações Microsoft .NET e é Certified Scrum Master