Diferença entre coleção de sites e sites | Fabian André Gehrke
Diferença entre coleção de sites e sites
12/12/2011 — Fabian André Gehrke
É muito comum pessoas que trabalham com SharePoint e estão iniciando e estudando o produto terem dúvidas do que é uma coleção de sites (site collection) e um site e quando usar cada um deles.
Neste post vou tentar esclarecer alguns pontos sobre o assunto e quem sabe com base nisso tirar um pouco da dúvida.
Por questão de definição, uma coleção de sites é um conjunto de sites, ou seja, ela contém vários sites. Para um site existir ele obrigatoriamente deve estar dentro de uma coleção de sites.
Isso não diz muita coisa, mas é um começo, vamos em frente…
As principais capacidades e recursos de uma coleção de sites são as seguintes:
Base de dados: uma coleção de sites pode estar dentro de uma base de dados exclusiva para ela, mas somente em uma. Uma base de dados pode conter várias coleções de sites. Essa capacidade permite a criação de uma base única e depois ir dividindo em outras bases conforme necessidade e crescimento da coleção de sites. Um site, como está dentro de uma coleção de sites, não pode ser dividido desta forma, ele vai respeitar o que estiver definido na coleção de sites;
Segurança: uma coleção de sites é um container de segurança, é o nível superior de permissionamento (sem contar a farm e políticas de segurança do aplicativo web). Todas as configurações feitas como níveis de permissão, grupos de usuários, permissões de acesso devem ser feitos em todas as coleções de sites. Em compensação, os sites utilizam automaticamente a segurança do site superior. Tudo o que for criado e aplicado dentro da coleção de sites pode ser aplicado e utilizado em todos os seus sites;
Provisionamento: as coleções de sites são criadas a partir da Administração Central, ao criar uma coleção de sites o SharePoint automaticamente cria um site de nível superior, que é um site normal, apenas foi criado automaticamente. Por via de regra um usuário nunca vai acessar uma coleção de sites, ele irá sempre acessar o site de nível superior da coleção de sites desejada. Os sites são criados a partir da própria coleção de sites e todos que forem criados ficarão dentro dela. Outro ponto importante no provisionamento é o endereço, uma coleção de sites sempre terá um endereço definido por um caminho gerenciado, como "sites", "pessoal", "departamentos", etc., enquanto um site vai respeitar sempre o endereço do site superior. Uma coleção de sites pode ser migrada de um aplicativo web para outro e levar com ela todo seu conteúdo e configurações, enquanto um site não, ele será migrado para dentro de uma outra coleção de sites;
Conteúdo: o conteúdo de uma coleção de sites não pode ser acessado de outra coleção de sites, pelo menos não com os recursos padrão do SharePoint. Existem ferramentas de terceiros e poderíamos criar ferramentas para fazer isso, mas pelo SharePoint mesmo não dá. Dentro de uma coleção de sites, entre subsites, essa operação é possível. O SharePoint contém web parts padrão para fazer isso;
Navegação: uma coleção de sites tem navegação isolada de outras coleções, enquanto um site pode herdar a navegação de seu site superior. Coleções de sites possuem uma configuração que permite "dizer" que ela está abaixo de uma outra coleção de sites. Com isso a navegação não muda, mas através da opção de visualização da hierarquia (fica na ribbon, é um botão com uma flecha para cima) ele apresenta a coleção de sites atual sob a configurada. A implicação dessa configuração é apenas isso, mas auxilia muito o usuário;
Onde utilizar uma coleção de sites e/ou sites?
A resposta para esta pergunta não é trivial. Varia muito de acordo com o cenário e necessidade do projeto. Tudo depende de variáveis como: tamanho do conteúdo total, gerenciamento, isolamento de segurança, público alvo, permissionamento, reaproveitamento de conteúdo, etcs.
Algumas perguntas que poderiam ajudar na decisão:
Qual o tamanho total de arquivos que o usuário irá postar no site? Dependendo da resposta é melhor dividir em várias coleções de sites e até em várias bases de dados. Colocar todo o conteúdo em um único site, isso vai de encontro com as recomendações do SharePoint, ver em referências para mais detalhes;
Será necessário consulta de conteúdo entre sites? Uma coleção de sites não troca informações com outras, um site troca com outro, desde que dentro da mesma coleção de sites;
Os usuários irão acessar todos os sites? Separar em coleções de site facilita, ou não, o gerenciamento de segurança. Em sites com acessos mais restritos fica mais simples gerenciar;
O gerenciamento deverá ser simples? Querendo ou não, com várias coleções de site o gerenciamento fica um pouquinho mais complexo. Deve ser avaliado;
O portal deverá trabalhar com vários temas? Cada site pode ter um tema diferente, mas fazer em nível de coleção de sites é um pouco mais fácil. Por outro lado, para aplicar o mesmo tema em várias coleções de sites é mais trabalhoso.
Essas foram apenas alguns questionamentos que podem ser feito, vários outros podem ser adicionados. O importante é entender bem a diferença entre coleção de sites e sites para tomar a decisão mais assertiva para o projeto.
Para desenvolvedores o importante é saber que um objeto SPSite é uma coleção de sites e um SPWeb é um site.