新聞中心
在WCF中,有很多比較重要的基礎知識,是需要我們初學者在學習的過程中加重注意的。今天,我們?yōu)榇蠹医榻B的就是其中一個比較重要的知識點,WCF并發(fā)模型的一些應用特點等。希望可以給大家?guī)硪韵聨椭?t#

公司主營業(yè)務:成都網(wǎng)站設計、成都網(wǎng)站建設、外貿網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出博湖免費做網(wǎng)站回饋大家。
ServiceBehavior.ConcurrencyMode 用于控制具體服務對象的并發(fā)行為。有三種模型:
Single: 默認方式。服務實例是 single-threaded,不接受重入調用(reentrant calls)。也就是說對于同一個服務實例的多個調用必須排隊,直到上一次調用完成后才能繼續(xù)。
Reentrant: 和 Single 一樣,也是 single-threaded,但能接受重入調用,至于針對同一服務對象的多個調用依然需要排隊。在 Single 模式下,當方法調用另外一個服務(Callback是客戶端提供的服務)時,方法會阻塞,直到所調用的服務完成。如果方法不能重入,那么因無法接受所調用服務的返回消息(reply message),無法解除阻塞狀態(tài)而陷入死鎖(deadlock)。Reentrant 模式就是為了解決 Single 的這種不足,允許方法重入以完成處理過程。
Multiple: 和 Single、Reentrant 不同,Multiple 允許多個客戶端同時調用服務方法。不再有鎖的問題,同樣也不再提供同步保障(synchronization guarantees)。使用此模式時,我們必須自行使用多線程同步機制(如使用 lock 關鍵字) 來保證數(shù)據(jù)成員的讀寫安全。
使用方式如下:
- [ServiceBehavior(InstanceContextModeInstanceContextMode =
InstanceContextMode.PerSession,ConcurrencyModeConcurrencyMode=
ConcurrencyMode.Single)]- public class SessionModeService : ISessionModeAllowed
- {
- .......
- }
我們可以看出,WCF并發(fā)模型和實例模型(Instance Context Mode)是配合使用的。下面簡要的分析:
1、對實例模型為PerCall,任何并發(fā)模式都一樣的效果,因為每次客戶端的調用都是一個新的實例。
2、對實例模型為PerSession,由于服務端會保存客戶端的會話狀態(tài),如果并發(fā)模型為Single,通信方式為雙向通信(Duplex),服務端無法接受重入調用,就會產(chǎn)生死鎖。所以在實例模式為PerSession,通信方式為雙向通信(Duplex)下不能選擇WCF并發(fā)模型為Single。
3、對實例模型為Single,由于服務端有且僅有一個服務實例,通信方式為雙向通信(Duplex),同樣會產(chǎn)生死鎖。
文章名稱:WCF并發(fā)模型應用特點簡要評比
標題網(wǎng)址:http://m.fisionsoft.com.cn/article/dphghhd.html


咨詢
建站咨詢
