2013-01-18 102 views
0

我正在嘗試在Visual Studio 2012中運行同一個WCF服務的多個實例。該服務需要是有狀態的,因此我使用的是[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]。服務需要模仿服務器行爲,因爲無論客戶端連接到哪個客戶端,它們都必須保持狀態。同一個WCF服務的多個實例?

我該怎麼做?

---編輯---

一個例子: 有一個稱爲Shop1,SHOP2和Shop3服務的三個實例。每個人都有自己的平衡狀態作爲「國家」。 Client1和Client2現在從Shop1購買東西,這涉及增加Shop1的餘額。客戶3從Shop2購買一些東西,從而增加餘額。

意圖是Shop1,Shop2和Shop3託管在不同的機器上,但出於測試目的,我想在同一臺機器上運行它們。針對雙向

回答

0

使用回調模型,您將可以處理更多的客戶

設置[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]和保存靜態屬性


var serviseHost1 = new ServiceHost(typeof(Shop)); 
serviseHost1.AddServiceEndpoint(typeof(Shop), binding, endpoint); 
serviseHost1.Open(); 
var serviseHost2 = new ServiceHost(typeof(Shop)); 
serviseHost2.AddServiceEndpoint(typeof(Shop), binding, endpoint); 
serviseHost2.Open(); 
+0

狀態,你可以在第一細說選項? 我不認爲第二個選項可行。我需要不同的客戶端才能夠以相同的狀態連接到相同的服務實例。如果我正確地做了PerCall,每個服務都會創建一個實例? – PetaPetaPeta

+0

請解釋你說的是什麼意思 –

+0

我給原帖增加了一個例子。由於存儲在內存中,PerCall不會維護不同客戶端之間的商店餘額。 – PetaPetaPeta