Hierarquia Sharepoint
Autor: Gustavo Justen | Publicado: 2011-11-09T05:23:00-08:00





Boa tarde, como podemos verificar na image o Sharepoint possui uma hierarquia entre os objetos. A partir dessa hierarquia conseguimos identificar em qual nível estamos e como fazemos para acessar um outro item da hierarquia.

Algumas explicações:

SPFarm:
É o primeiro nível da hierarquia do sharepoint. Ele representa o farm do sharepoint. O objeto SPFarm não pode ser instanciado, ele é um objeto estático. Para acessar o SPFarm em código devemos utilizar o seguinte código:
SPFarm currentFarm = SPFarm.Local;

SPService:
Representa os serviços que estão rodando no farm. Exemplo: Access Services, Performance Point, Sharepoint Search, etc. O SPService é utilizado para trabalhos administrativos como Backup, configruação de serviços, etc. Para retornar os objetos SPService do farm utilize o código:
SPServiceCollection oServiceCollection = SPFarm.Local.Services;

SPWebApplication:
É a representação do site sharepoint no IIS(internet information Services). Podemos utilizar o SPWebApplication para configurar o tamanho maximo de arquivos, criar uma nova site collection.

SPSite
O SPSite representa o site collection. A classe SPSite suporta construtores, para isso basta passarmos o Guid do site ou a URL:
SPSite oSite = SPContext.Current.Site;

Ou:
using (SPSite oSite = new SPSite("http://meusite.com.br"))
{
    //...
}

O Objeto SPSite possui uma coleção de SPWeb.

SPWeb
Representa um web site do Sharepoint. Nele que estão as listas, biblioteca, etc. O Objeto SPWeb pode ser obtido através do SPSite. Alguns exemplos:
SPWebCollection oWebCollection = SPContext.Current.Site.AllWebs;


Ou podemos buscar o Web Atual;
SPWeb currentWeb = SPContext.Current.Web;


Ou ainda:
using (SPSite oSite = new SPSite("http://meusite.com.br"))
{
    using (SPWeb oWeb = oSite.OpenWeb())
    {
        //...
    }
}

O Objeto SPWeb ainda pode ter mais objetos SPWeb.&nbsp;

SPList:
Nos objetos SPList do site que os dados ficam armazenados, tanto documentos, quanto imagens, páginas, etc. Algo interessante que a versão do sharepoint 2010 server possui uma biblioteca especial apenas para midia.
Para obtermos as listas e/ou bibliotecas do site devemos utilizar o objeto SPWeb. Alguns exemplos:
using (SPSite oSite = new SPSite("http://meusite.com.br"))
{
    using (SPWeb oWeb = oSite.OpenWeb())
    {
        SPListCollection oListCollection = oWeb.Lists;
    }
}


Ou buscando apenas a biblioteca de documentos administrativos:
using (SPSite oSite = new SPSite("http://meusite.com.br"))
{
    using (SPWeb oWeb = oSite.OpenWeb())
    {
        SPList oList = oWeb.Lists["Documentos Administativos"];                    
    }
}


SPListItem&nbsp;e&nbsp;SPFolder
Os objetos SPListItem e SPFolder são os registros das listas(SPLists) do SPWeb. O SPFolder é um item do SPList, contudo o SPFolder pode ter SPListItem “dentro” dele. Mas como o SPFolder também é um SPListItem coloquei eles no mesmo nível. Podemos obter o SPListItem e o SPFolder a partir das listas. Alguns exemplos:
using (SPSite oSite = new SPSite("http://meusite.com.br"))
{
    using (SPWeb oWeb = oSite.OpenWeb())
    {
        SPList oList = oWeb.Lists["Documentos Administativos"];
        SPListItem oItem = oList.GetItemById(1);                    
    }
}

Pegando as pastas da lista:
using (SPSite oSite = new SPSite("http://meusite.com.br"))
{
    using (SPWeb oWeb = oSite.OpenWeb())
    {
        SPList oList = oWeb.Lists["Documentos Administativos"];

        //Observe que as pastas são SPListItem
        SPListItemCollection oFoldersCollection = oList.Folders;
    }
}


SPFile
O Objeto SPFile representa os arquivos estão em listas ou bibliotecas do site. Para podermos acessar um objeto SPFile devemos buscar nos itens(SPListItem) das listas ou passando como parametro para o SPWeb a url do arquivo. Alguns exemplos:
using (SPSite oSite = new SPSite("http://meusite.com.br"))
{
    using (SPWeb oWeb = oSite.OpenWeb())
    {
        SPList oList = oWeb.Lists["Documentos Administrativos"];
        SPListItem oListItem = oList.GetItemById(1);
        SPFile oFile = oListItem.File;
    }
}


Bom então é somente isso por hoje. Até mais a todos e qualquer dúvida, comentário ou crítica postem ai!
Abraços!

Google+