Na continuidade do trabalho feito pelos diversos membros da comunidade SharePoint pelos diversos meios, deixo-vos aqui mais um artigo publicado na revista PROGRAMAR, neste caso a edição nº27.
Developer em SharePoint?
Desde muito cedo que esta mania\tara\obsessão por debitar linhas de código pelo puro prazer de mover um pixel de um lado para o outro, tem-me atormentado como se de um vírus se tratasse.
Não sei se é mania ou não mas sempre gostei de assuntos que me fizessem pensar e criar algo novo. Sim , eu confesso na minha essência sou um Developer , e presumo que vocês que lêem estas linhas também o são, senão não teriam chegado até aqui.
Um developer, e isto na minha opinião terá de ter sempre uma percepção global das coisas e focus no desenvolvimento, um pouco de bom senso, e muita paciência.
Estas eram as métricas gerais seguidas por mim até meados de 2004. SharePoint... Pareceu-me interessante a aposta, e aqui estou.
Não desfazendo os outros tão prestigiados "cargos” de IT, Project Manager, and whatever, penso que a ocupação de Developer é a mais cool de todas.
Um developer de SharePoint obrigatoriamente tem mais valências de que só a de desenvolvimento: somos Administradores de Sistemas, Helpdesks, Arquitectos , Testers, DBA , Designer e utilizadores finais da plataforma.
Em SharePoint é extremamente rigorosa a interacção com a plataforma mas torna-se gratificante as tecnologias que abrange e a potencialidade das áreas que toca é surpreendente.
Microsoft SharePoint Server, o que é?
Embora muitas pessoas já tenham uma ideia clara do que o producto SharePoint representa, existem ainda algumas dúvidas relativamente ao que este produto pretende atingir.
De uma forma muito sucinta SharePoint é uma plataforma corporativa Microsoft assente sobre áreas funcionais.
Nesta última versão, 2010 e existem 6 cores aplicacionais:

Sites: Criação e Gestão de sites Internos e Externos.
Infra-estrutura única para todos os sites empresariais Web : Intranet, Extranets e Internet
Communities: Ambiente de colaboração social
Ferramentas com capacidades sociais, como blogs,wikis, rssfeeds, tagging, perfis pessoais recios em informação
Content:Gestão documental , políticas de retenção e classificação automática de conteúdos,
Search: Pesquisas com grande relevância, contexto social e refinamento
Insights: Business Inteligence com acesso a informações em bases de dados, relatórios e aplicações empresariais.
Composites: Ferramentas e componentes para criação de soluções comerciais
Sendo uma plataforma consolidada nestas diferentes áreas, com tantas funcionalidades OutOfTheBox, é clara a necessidade de customização e criação de novas, especificas a cada tipo de negócio e cliente. “Developer’s , Developer’s, Developer’s” , sim somos nós e estamos aqui.
SharePoint 2010 e tecnologias inerentes
Antes de tudo, é importante que um developer perceba e entenda minimamente a arquitectura da plataforma e alguns dos seus mecanismos inerentes:
SharePoint é baseada na framework .NET, subdividindo-se em 2 tecnologias principais:
SharePoint Foundation: Tecnologia subjacente a todos os sites SharePoint, encontra-se disponível gratuitamente. É o core aplicacional da plataforma te. Podemos utilizar o SharePoint Foundation para criar sites
tipificados de colaboração, blogs , wikis
SharePoint Server: Tecnologia servidor. Inclui todas as funcionalidades do SharePoint Foundation além de funcionalidades e capacidades adicionais como Gestão de Conteúdos, B.I., Pesquisa empresarial.

A figura acima ilustra as diferentes tecnologias inerentes à plataforma. Essencialmente temos o sistema operativo, Windows Server 2008, o IIS , SqlServer, a .Net Framework e ASP.Net, o SharePoint Foundation e o SharePoint Server em si.
Embora o SharePoint 2010 funcione em Windows 7 ou Windows Vista , não é suportado pela Microsoft em ambientes de produção e para desenvolvimento recomendo avidamente a utilização de tecnologia server. O ambiente em que desenvolvemos deverá ser semelhante ao que desenvolvemos, always !
Arquitectura
A infra-estrutura do SharePoint 2010 foi pensada de forma a respeitar uma arquitectura lógica de 3 camadas: Camada dos Dados(Database Layer), à Camada Aplicacional(Application Layer)à Camada de Apresentação(Presentation Layer). Estes diferentes layers podem estar localizados numa só máquina (Standalone Server)

ou espalhados em diversas máquinas (Small, Medium, Large Farm)

Fisicamente esse conceito também é real, temos servidores físicos que espelham o mesmo conceito.
O esquema físico da farm SharePoint foi pensado de forma a ser escalado horizontalmente e verticalmente, caso exista necessidade mais capacidade a nível do User Interface ,
podem ser adicionados mais Servidores de Frontend (Web front-end), se existir necessidade de aumento da capacidade dos Serviços, podem ser adicionados mais Servidores Aplicacionais (Application Servers).
E finalmente se existir necessidade de mais capacidade a nível de base de dados, podem ser adicionados mais Servidores de Base de Dados (Database Server).
Quaisquer que sejam as necessidades, é permitido desenhar uma topologia que as complemente com uma flexibilidade extrema.
E como plataforma de desenvolvimento?
“Estás a desenvolver em coisas já feitas” comentava uma pessoa amiga um dia destes.
É verdade, a framework do SharePoint é realmente muito completa mas não é suficiente para muitos dos casos e pode ser estendida.
Da mesma forma que hoje, é vulgar falarmos em desenvolvimento em .NET (que by the way também é uma coisa já feita,
) também é natural cada vez mais pensarmos além do que o core aplicacional e virarmos a nossa atenção para implementações corporativas de alto nível. E garanto-vos que o desafio é superior.
Com uma framework e Object model extremamente ricos em métodos e funcionalidades é possível estender a plataforma a um nível quase ilimitado.
Em termos de desenvolvimentos foca-se 2 pontos cruciais: Soluções e Features.
Uma Solução SharePoint , não é mais do que um pacote comprimido com extensão WSP, contendo componentes que caracterizam funcionalidades(Features) dentro da plataforma.
Um único pacote pode ter mais da uma funcionalidade. De um forma mais simples, acaba por ser o ficheiro de instalação ( vulgo Setup.exe ) de aplicações em SharePoint .
Uma farm de Sharepoint pode englobar inúmeros servidores, pelo que com esta tecnologia, podemos instalar uma solução numa máquina que pertença à farm e esta é propagada e
instalada em todos os servidores que pertencem a essa Farm. Cool, não?
Features, têm por objectivo reduzir a complexidade envolvida na personalização de sites simples, inclusão e manutenção de novas funcionalidades.
Estão intrinsecamente ligadas ao core aplicacional e podem se activadas via interface gráfico ou command-line.
SharePoint e o Visual Studio 2010
Aquando a saída da versão 2007 da plataforma, a integração com a ferramenta de desenvolvimento Visual Studio era muito limitada.
Em meados de 2007, as soluções e features eram criadas manualmente, com edição de ficheiros XML , não existindo qualquer ferramenta out of the box ou add-in no Visual Studio que pudesse facilitar esta tarefa.
Inúmeras equipas de desenvolvimento de SharePoint em todo o mundo, tiveram que criar os seus próprios automatismos e mecanismos de criação destas funcionalidades.
No decorrer deste processo, foram lançadas algumas ferramentas e add-ins para o Visual Studio dos quais se destaca o WSPBuilder(http://wspbuilder.codeplex.com/)
Com esta nova versão do SharePoint 2010 e do Visual Studio 2010, a música é outra. ![clip_image001[8] clip_image001[8]](/Lists/Photos/RodrigoPinto/revista_programar/article1/clip_image0018_thumb_270E5F59.png)
Os Projectos para SharePoint 2010 estão completamente integrados com o Visual Studio 2010, existindo diversos templates que podemos utilizar:
| Nome |
Icon |
Descrição |
| Empty SharePoint Project |

|
Projecto Vazio onde se pode adicionar novos items |
| Visual Web Part |

|
Cria um nova webpart utilizando um visual designer |
| Sequential WorkFlow |

|
Cria um novo workflow sequencial |
| State Machine WorkFlow |

|
Cria um novo workfows de estado |
| Business Data Connectivity Model |

|
Cria um novo “SharePoint Business Data Connectivity model” |
| Event Receiver |

|
Cria um event receiver, que trata os eventos disparados pelo Sharepoint |
| List Definition |

|
Cria uma definição de uma lista |
| Content Type |

|
Cria um Content Type Customizado |
| Module |

|
Cria um módulo de SharePoint que pode conter vários ficheiros |
| Site Definition |

|
Cria um template de definição de um site |
| Import Reusable Wrokflow |

|
Importa um workflow criado com o SharePoint Designer |
| Import SharePoint Solution Package |

|
Cria uma nova solução baseada num pacote de solução existente |
| |
|
|
Cada um destes projectos permite a inclusão de vários items sendo que alguns dos templates são soluções vazias com pelo menos um item predefinido.
Passemos então a um caso prático: o objectivo deste que vos apresento passa por criar uma funcionalidade de registar os contactos dos actuais membros da Comunidade Portuguesa de SharePoint . Para tal vamos criar um tipo de conteúdo (Content Type) com alguns campos e criar uma lista baseada nesse tipo de conteúdo.
Apesar de ser um exemplo simples, acaba por demonstrar algumas funcionalidades que a plataforma disponibiliza
1. Abrir o Visual Studio, no menu principal, seleccional a opção File>New Project
1.1. Em Installed Templates, seleccionar a opção SharePoint>2010 e Empty SharePoint Project
1.2 Digitar o nome do projecto, e a sua localização : neste caso o nome escolhido foi SPugPtMembersList e a localização do projecto irá ser c:\work\SPugPtMembersList
1.3 Seleccionar o botão OK

2. De seguida, surge o ecran abaixo, com informação com o url do site SharePoint em que vamos trabalhar,
neste caso é http://vm2010/ pois é o site por omissão criado, nesta vm, aquando a instalação do SharePoint .
Nesta versão do SharePoint existem 2 tipos de soluções que podem ser criadas: Sandbox e Farm solutions.
Sandbox solutions são soluções em que os processos de execução , correm em ambientes muito controlados com restrições variadas tendo em vista um enclausuramento aplicacional em toda a Farm de SharePoint.
Farm solutions , são soluções mais abrangentes, contemplando desde o inicio uma aplicação de funcioanalidades por toda a Farm
Neste exemplo vamos criar uma Farm Solution.
2.1 Seleccionar a opção “Deploy as a farm solution”
2.2 Seleccionar o botão "OK”

3. Temos então o projecto Visual Studio .
Comecemos por adicionar alguns items ao projecto, nomeadamente uma Feature para provisionar o nosso Content Type
3.1 Seleccionar o projecto com o botão direito do rato e seleccionar a opção Add>NewItem
3.2 Seleccionar o item “Content Type” e o digitar o nome “ContentTypes” para este item.
3.3 Seleccionar o botão “Add”

4. Os content types são elementos com herança pelo que vamos seleccionar o content type mais simples de todos: Item
4.1 Seleccionar a opção “Item”
4.2 Seleccionar o botão “Finish”

5. Neste momento , já temos a nossa Feature criada.
Como podem ter verificado por omissão o Visual Studio cria estes items com nomes e conteúdos com denotações automáticas.
Desta forma:
5.1 Editar na window “Solution Explorer” o nome da “Feature1” para “ContentTypes”
5.2 Editar o ficheiro Elements.xml com conteúdo mais contextualizado e lógico

5.3 Após edição do campos Name, Group,Description e o nome da Feature temos:

Resta acrescentar alguns campos, de forma a caracterizar o nosso Content Type:
5.4 Inserir os seguintes campos , como 1ºs elementos do ficheiro Elements.xml
<Field ID="{FBAFB32B-D2FA-4BE6-BA7C-CAA3E9534545}" Name="MemberName" DisplayName="Name" Group="SpugPtMembers Columns" Type="Text" Required="TRUE" ShowInViewForms="TRUE" ShowInDisplayForm="TRUE" ShowInNewForm="TRUE" ></Field >
<Field ID="{4DBBB65D-A401-41E8-BA71-C200EEFBB7F3}" Name="MemberCompany" DisplayName="Company" Group="SpugPtMembers Columns" Type="Text" ShowInViewForms="TRUE" ShowInDisplayForm="TRUE" ShowInNewForm="TRUE" ></Field >
<Field ID="{706647BC-77EA-46E0-A4F3-CCD9BD291A85}" Name="MemberEmail" DisplayName="Email" Group="SpugPtMembers Columns" Type="Text" Required="TRUE" ShowInViewForms="TRUE" ShowInDisplayForm="TRUE" ShowInNewForm="TRUE" ></Field >
<Field ID="{B7F1842E-4862-43F9-8D4A-9D6C0B5A2BC4}" Name="MemberPhone" DisplayName="Phone" Group="SpugPtMembers Columns" Type="Text" ShowInViewForms="TRUE" ShowInDisplayForm="TRUE" ShowInNewForm="TRUE" ></Field >
e inserir as seguintes referências aos mesmos dentro do elemento <FieldsRefs>:
<FieldRef ID="{FBAFB32B-D2FA-4BE6-BA7C-CAA3E9534545}" Name="MemberName" />
<FieldRef ID="{4DBBB65D-A401-41E8-BA71-C200EEFBB7F3}" Name="MemberCompany" />
<FieldRef ID="{706647BC-77EA-46E0-A4F3-CCD9BD291A85}" Name="MemberEmail" />
<FieldRef ID="{B7F1842E-4862-43F9-8D4A-9D6C0B5A2BC4}" Name="MemberPhone" />
Ficamos então com algo como :

6. Resta-nos ainda caracterizar a nossa feature .
Desta forma, seleccionar a feature “ContentTypes” , e com o botão do lado direito, seleccionar a opção “View Designer”
Editar os campos Title e Description como mostra a figura abaixo.
Não esquecer de seleccionar o Scope da Feature para Site

Neste momento temos a nossa Feature de Content Type , claramente definida, com conotações lógicas e campos inerentes.
7. Vamos de seguida criar uma list definition de forma a provisionar uma definição de uma lista SharePoint baseada neste Content Type criado.
Assim:
7.1 Seleccionar o projecto com o botão direito do rato e seleccionar a opção Add>NewItem
7.2 Seleccionar o item “List Definition from Content Type” e o digitar o nome “SpugPtMembersList” para este item.
7.3 Seleccionar o botão “Add”

7.4 No ecran seguinte , digitar em “What is the display name…” o seguinte texto “SpugPt Members List”
7.5 Deseleccionar a opção “add a list instance ….”
7.6 Seleccionar o botão “Finish”

Mais uma vez , teremos que editar o contéudo deste novo ficheiro Elements.xml criado , mas desta vez só precisamos alterar o campo Description.

8. Finalmente , temos a solução completa pelo que só nos falta fazer a instalação no nosso SharePoint
Como? Fácil.
Primeiro executamos o Build da solução e de seguida o Deploy e a nossa solução fica instalada no SharePoint.

Como teste final, vamos criar a nossa lista e criar alguns items.
Para tal:
8.1 Aceder ao site SharePoint , via browser , neste exemplo “http://vm2010”
8.2 Seleccionar a opção Site Settings > More Options

8.3 Seleccionar a opção Lists> SpugPt Members List
8.4 Digitar SpugPtMembers na caixa de texto
8.5 Seleccionar o botão “Create”

Temos a nossa lista criada , resta-nos adicionar items
8.6 Seleccionar a opção “Add new item”

et Voilá!

Conclusão
Embora tenha sido um exemplo muito simples, espero que tenha atingido o objectivo de como o desenvolvimento em SharePoint encontra-se extremamente facilitado comparativamente com as versões anteriores.
É uma plataforma extremamente poderosa como ferramenta corporativa e como plataforma de desenvolvimento.
Dentro deste tema existem imensos subtópicos, integrações e tipo de implementação e neste momento é claro que este é um produto da Microsoft que irá evoluir e consolidar-se cada vez mais.
Resta-me fazer-vos um convite: todos os meses aos 2ª Sábados , a Comunidade Portuguesa de SharePoint apresenta 1 sessão e chalk talks com membros activos na tecnologia onde podemos trocar ideias ,
e esclarercer dúvidas e acima de tudo trocar experiências.
Apareçam, e espero que tenha sido útil.
Aquele abraço com muitos Dispose à mistura
|
|
Rodrigo Pinto
SharePoint MVP, Specialist,Evangelist
SharePointPt Founder
Company:INDRA
@scoutmanpt |
.