我只想通過建立我的服務的實例上下文模式的可能性,並有我兩個選擇。:PerCall與MaxConcurrentCall設置爲1和單實例服務
1)設置的InstanceContext模式單一 2)設置的InstanceContext模式PerCall並設置MaxConcurrentCalls 1
隨着第一個選項,我必須對申請的關鍵部分的同步服務,但與第二個選項,我不必這樣做。
哪個選項是優選的,請指導。
我只想通過建立我的服務的實例上下文模式的可能性,並有我兩個選擇。:PerCall與MaxConcurrentCall設置爲1和單實例服務
1)設置的InstanceContext模式單一 2)設置的InstanceContext模式PerCall並設置MaxConcurrentCalls 1
隨着第一個選項,我必須對申請的關鍵部分的同步服務,但與第二個選項,我不必這樣做。
哪個選項是優選的,請指導。
有了第一個選項,我必須在服務的關鍵部分應用同步,但第二個選項我不必那樣做。
如果設置MaxConcurrentCalls
1,你永遠只能有一個活動的呼叫,這將意味着你不需要的InstanceContext
同步無關!
如果MaxConcurrentCalls
大於1,則:
用的InstanceContext =單,併發呼叫將分享服務類的同一個實例。因此,在訪問服務類的實例成員以及訪問其他共享資源(如靜態屬性)時,您將需要同步。
用的InstanceContext = PerCall,每次調用會得到它自己的服務類的實例。因此訪問服務類的實例成員時不需要同步。但是,在訪問其他共享資源時(例如靜態屬性),您將需要同步。
至於哪一個更好,它取決於你的服務類是否有每個調用實例成員。
我可以使用System.Runtime.Caching從.NET 4中,爲了在與服務調用.. –
是可以共享的共享資源。但是,您必須同步對緩存中的共享資源的訪問。 – Joe