2013-06-01 23 views
0

我只想通過建立我的服務的實例上下文模式的可能性,並有我兩個選擇。:PerCall與MaxConcurrentCall設置爲1和單實例服務

1)設置的InstanceContext模式單一 2)設置的InstanceContext模式PerCall並設置MaxConcurrentCalls 1

隨着第一個選項,我必須對申請的關鍵部分的同步服務,但與第二個選項,我不必這樣做。

哪個選項是優選的,請指導。

回答

2

有了第一個選項,我必須在服務的關鍵部分應用同步,但第二個選項我不必那樣做。

如果設置MaxConcurrentCalls 1,你永遠只能有一個活動的呼叫,這將意味着你不需要的InstanceContext同步無關!

如果MaxConcurrentCalls大於1,則:

  • 用的InstanceContext =單,併發呼叫將分享服務類的同一個實例。因此,在訪問服務類的實例成員以及訪問其他共享資源(如靜態屬性)時,您將需要同步。

  • 用的InstanceContext = PerCall,每次調用會得到它自己的服務類的實例。因此訪問服務類的實例成員時不需要同步。但是,在訪問其他共享資源時(例如靜態屬性),您將需要同步。

至於哪一個更好,它取決於你的服務類是否有每個調用實例成員。

+0

我可以使用System.Runtime.Caching從.NET 4中,爲了在與服務調用.. –

+0

是可以共享的共享資源。但是,您必須同步對緩存中的共享資源的訪問。 – Joe