Qual é a maneira correta de armazenar variáveis globais no nível do site em um site do SharePoint?

Uma coisa que me deixou maluco com o SharePoint2007 é a aparente incapacidade de ter configurações definíveis que se aplicam especificamente a um site ou conjunto de sites, e não ao conteúdo. Quero dizer, você tem algumas configurações predefinidas, como o logotipo do site, o nome do site e várias outras coisas, mas não parece haver nenhum lugar para adicionar novos tipos de configurações.

O aplicativo em que estou trabalhando precisa ser capaz de criar vários tipos de "conjuntos de sites de projetos" que seguem um modelo básico, mas têm certas configurações adicionais que se aplicam especificamente a esse conjunto de sites e somente a ele. Além do nome do site padrão, também precisamos definir o número do projeto, o nome do projeto e o nome do cliente. E, dadas as solicitações de alguns de nossos clientes, também chegamos a um ponto em que precisamos ter configurações configuráveis que alterem o funcionamento de alguns fluxos de trabalho, como se os arquivos estão marcados com letras ou números.

Nossa solução atual, da qual estou hesitante, foi armazenar um arquivo XML no servidor do SharePoint. Este arquivo contém um nó para cada conjunto de sites, identificado pela URL do site raiz. Dentro do nó estão todos os elementos que precisam ser definidos para esse conjunto de sites. Quando precisamos deles, precisamos acessar o arquivo XML (que sempre exigirá que o SPSecurity.RunWithElevatedPrivileges acesse arquivos diretamente no servidor) toda vez para carregá-lo e recuperar os dados. Existem muitos processos automatizados que precisam fazer isso, e estou hesitante quanto à estabilidade desse método quando alcançamos centenas de sites com milhares de arquivos executando dezenas de milhares de fluxos de trabalho, todos querendo acessar esse arquivo. Talvez sejam preocupações infundadas, mas prefiro me preocupar do que arriscar tudo quebrando em alguns anos.

Eu estava olhando para o objeto SPWeb e encontrei oAllProperties hashtable. Parece exatamente o tipo de coisa que pode funcionar, mas não sei o quão seguro é modificar isso. Eu li o MSDN e o WSS SDK, mas não encontrei nada que esclarecesse sobre a adição de propriedades completamente novas aoAllProperties. É seguro usarAllProperties para esse tipo de coisa? Ou ainda há outro recurso que está faltando, que poderia lidar com o conceito de variáveis globais no conjunto de sites ou no escopo do site?

questionAnswers(3)

yourAnswerToTheQuestion