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

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


咨詢
建站咨詢
