2012-05-31 62 views
1

你好:)我對WCF很新,這是我第一次處理任何類型的併發,所以請耐心等待。如何處理WCF服務中的併發性使用數據庫

我想要做的是有一個服務的單個實例,這將由多個客戶端(不超過10或11)使用。我希望客戶在使用服務操作時等待對方。這樣我應該避免數據庫中的條目更新不正確。操作速度足夠快,因此性能不應受到太大影響。現在我不知道,但根據我的理解,要實現我應該使用ConcurrencyMode.Single的單例服務,是嗎?歡迎任何關於如何實現這一目標的全面閱讀。

另外我知道可能有更好,更優雅的方式來處理併發,但我非常非常短的時間,這種方法似乎是最簡單和最快的實現,如果我已經正確地理解它。

+0

我的問題是不同的,但我發現了一些翔實的鏈接http://stackoverflow.com/questions/10746424/wcf-operationcontract-tuning-instancing-and-concurrency-with-tsql我想我同意丹尼斯,但我仍然學習。 – Paparazzi

+0

謝謝,我會閱讀這些鏈接。但是Im仍然很漂亮地設置了Singleton + Single併發。我的口糧閱讀:寫入將是1:1,因此,幾個客戶可能會嘗試在同一時間處理相同的條目,並採用樂觀的方式,第一個客戶端將具有正確的值來處理,但另一個客戶端將具有不正確的值。 –

+0

如果你在Singleton上設置,那麼爲什麼問。數據庫是爲了處理併發性而構建的。如果您需要獨佔鎖,請使用獨佔鎖。 – Paparazzi

回答

3

最糟糕的是你可以在這裏做的是單身服務。

數據庫引擎(以及其中大多數)非常適合併發呼叫。你想限制他們的併發功能?

對於你來說最好的方式是每個呼叫,無狀態的WCF服務。
對於數據一致性,請使用optimistic concurrency。爲了簡化這個,你可以使用任何ORM,比如Entity Framework

+0

我認爲,樂觀併發不是一個好的選擇。客戶可能嘗試訪問一個條目,而另一個客戶正在計算值以更新同一個條目。然後,第一個客戶端將處理一個已經錯誤的值。 –

相關問題