2015-12-02 41 views
1

我有一些想法在我的腦海中,我想把它們放在一個合適的架子上,但在一般的方法,以便能夠在未來傳播我的知識。因此,假設我運行的WCF服務包含兩種方法:一種是向客戶端發送一些對象列表(當客戶端需要時),另一種是基於客戶端的對象狀態改變對象的狀態動作。這些通過WCF發送的對象存儲在服務端的獨立存儲中。wcf和孤立存儲 - 需要的解釋

現在,讓我組我的問題:

1)首先,我想知道如果許多客戶會增加我的服務作爲服務REFFERENCE會發生什麼。由於此服務使用獨立存儲(假設我正在使用存儲進行彙編),如果許多客戶想要同時更改數據,會發生什麼情況?我的意思是,隔離存儲在這裏是如何工作的,它是否爲每個客戶端生成不同的文件(這意味着它對許多用戶是安全的,導致他們每個人都在操縱不同的文件)?因爲如果它存儲在服務器端,那麼我認爲這是每個人的一個文件。或者,也許我可以自己決定配置隔離存儲器還是服務器本身?如果是,如何?

2)假設,這個文件是每個客戶端通用的。然後我必須提供一些鎖定/解鎖邏輯。關於WCF有什麼特別之處?你能提供關於這個問題的任何好的文章嗎?

回答

1

隨着孤立存儲文件被用戶和程序集分開,所以在你的情況下它是IUSR_machine,除非你使用模擬。所以你需要實現文件鎖定/解鎖。爲什麼不能使用SQL數據庫作爲存儲?

UPDATE:

模擬基本上可以讓你的過程,在除擁有該線程的進程不同的安全上下文中運行。來自https://msdn.microsoft.com/en-us/library/ms730088(v=vs.110).aspx

通常,客戶調用一項服務以使服務代表客戶執行一些 操作。模擬允許服務在執行操作時作爲客戶端執行 。

參見http://blogs.msdn.com/b/saurabs/archive/2012/07/16/wcf-learning-impersonation.aspx

你基本上把這樣的事情到您的配置文件:

<serviceAuthorization impersonateCallerForAllOperations="true" /> 
+0

謝謝您的回答。那麼,我可以通過我有一個練習,我需要使用獨立存儲,這就是爲什麼我問。你能說更多關於冒充的東西嗎?我從來沒有聽說過或使用過。 –