Pergunta

Eu estou procurando artigos, fórum ou posts que lidam com o SharePoint e segurança do thread? Estou bastante certo de que há alguns aspectos especiais sobre segurança de segmentos que têm de ser considerados quando se trabalha com o modelo de objeto do SharePoint.

Na verdade eu não encontrar muitas informações sobre isso, ainda.

Então, eu estou ansioso para suas respostas.

Bye, Flo

Foi útil?

Solução 3

Então, depois de fazer um pouco mais pesquisando e pesquisando na web e testes, parece que você não precisa se preocupar com fios de segurança que muito quando se usa o modelo de objeto MOSS porque você está sempre trabalhando com non-static e instâncias exclusivas.

Além disso, uma exceção é lançada quando um objecto, por exemplo, um SPWeb foi alterada e salva chamando o método Update () antes de salvar as alterações (também chamado o método Update ()), mesmo que você tem o seu primeiro objeto.

No exemplo a seguir o web11.Update() instrução irá lançar uma exceção informando que o SPWeb representada pelo objeto web12 foi alterado entretanto.

SPSite siteCol1 = new SPSite("http://localhost");      

SPWeb web11 = siteCol1.OpenWeb();
SPWeb web12 = siteCol1.OpenWeb();                               

web12.Title = "web12";
web12.Update();

web11.Title = "web11";
web11.Update();

Assim, o thready-segurança parece ser manipulados pelo próprio modelo de objeto. Claro que você tem que lidar com as exceções que podem ser lançadas devido a condições de corrida.

Outras dicas

Há muito piores armadilhas no SharePoint OM do que simplesmente a segurança discussão antiga. Preste atenção especial ao trabalhar com objetos recuperados de propriedades. Você deve sempre manter um ponteiro para um objeto enquanto você trabalha nele; exemplo:

var list = web.List["MyList"]
list.Items[0]["Field1"] = "foo"
list.Items[0]["Field2"] = "bar"
list.Items[0].Update() // nothing is updated!

Você pode esperar Field1 e Field2 a ser atualizado pela chamada Atualização final (), mas não tinha. Cada vez que você usar o indexador, uma nova referência para o SPListItem é retornado.

forma correta:

SPListItem item = list.Items[0]
item["Field1"] = "foo"
item["Field2"] = "bar"
item.Update() // updated!

Apenas um começo. Também google para armadilhas em todo o / padrão Descarte IDisposabe.

-Oisin

Há uma questão que eu muitas vezes correr em: ao escrever seus próprios receptores de item de lista, você precisa estar ciente do fato de que alguns dos eventos disparar de forma assíncrona, por exemplo, ItemAdded() que meios seu código pode ser executado em vários threads ao mesmo tempo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top