簡體   English   中英

在 WCF C# 應用程序中模擬並發或多線程

[英]Emulating concurrency or multi threading in WCF C# application

我正在使用 WCF 架構為酒店預訂系統開發基於服務的應用程序。 它具有以下 3 個三個組件: 1. WCF 服務,具有用於調用房間預訂模塊的服務和數據合同。 2. WCF 保存客戶端服務訪問日志的主機 3. WCF 客戶端,具有用於酒店預訂的 UI。

我正在尋找在我的應用程序中實現並發性的指南,它具有以下特性: 1. 當時只能處理一個請求。 2. 如果接收到多個請求,則應使用鎖/互斥/信號量同步這些請求。

編碼指南應該會有所幫助。

我認為這是外部資源的分配問題,例如數據庫訪問,單個文件的 I/O。 WCF 支持在客戶端進行交易和傳輸。 當另一個客戶端嘗試訪問它時,我們能夠通過使用事務來鎖定對數據庫的訪問。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/transactions-overview
此外,我們還可以使用共享鎖來鎖定服務實例,占用所有資源以免其他實例訪問服務,請參考以下代碼。

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
 ConcurrencyMode = ConcurrencyMode.Multiple)]
class MyService : IMyContract
{
 public void MyMethod()
 {
 lock(typeof(MyService))
 {
 ...
 MyResource.DoWork();
 ...
 }
 }
}
static class MyResource
{
 public static void DoWork()
 {
 lock(typeof(MyService))
 {
 ...
 }
 }
}

請參考以下鏈接,Chaper8(並發管理),資源和服務,避免死鎖。
https://ashishmit99.files.wordpress.com/2013/01/oreilly-programming-wcf-services-3rd-edition-aug-2010.Z4371094BA41917410EE0
這是一個關於並發模式的官方文檔,旨在解決多用戶的訪問沖突。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/sessions-instancing-and-concurrency

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM