[英]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.