WCF服務(wù)實(shí)例的并發(fā)模式是在服務(wù)實(shí)現(xiàn)類上,使用 ServiceBehaviorAttribute 的 ConcurrencyMode 屬性來指定。其值由 ConcurrencyMode 枚舉來界定,這個(gè)枚舉只有三個(gè)值:

Single——服務(wù)實(shí)例只在單個(gè)線程上運(yùn)行,如果服務(wù)是單個(gè)實(shí)例,那么同一時(shí)間只有一個(gè)傳入的調(diào)用被接收,其他調(diào)用請拿票排隊(duì)。

Multiple——這個(gè)好理解,服務(wù)實(shí)例支持多個(gè)線程同時(shí)調(diào)用,所以狀態(tài)數(shù)據(jù)可能會不同步(單個(gè)服務(wù)實(shí)例),如果某些變量擔(dān)心被其他線程意外修改,可以適合地 lock 一下。

Reentrant——這家伙是今天的主角,因?yàn)樗惶美斫?。老周就不抄MSDN了,就按我自己的理解說一下。“可重入模式”大致是這個(gè)意思:首先,服務(wù)實(shí)例是單線程,但是,如果在服務(wù)中調(diào)用另外的服務(wù),那么此時(shí)其他正在排隊(duì)的傳入消息就可以進(jìn)來。等其他另一個(gè)服務(wù)調(diào)用完成后,又重新進(jìn)入當(dāng)前服務(wù)操作繼續(xù)向下執(zhí)行。有點(diǎn)像你去營業(yè)廳排隊(duì)辦業(yè)務(wù),服務(wù)窗口中的工作人員就是服務(wù)實(shí)例,而窗口外面排隊(duì)的客戶就是等待調(diào)用的客戶端。假如我要申請一個(gè)業(yè)務(wù),通常要填個(gè)XXX表格。要是等你填完,估計(jì)后面排隊(duì)的人會跑掉一半。所以,常規(guī)的做法是:你站到一邊去填表(相當(dāng)于在服務(wù)實(shí)例中調(diào)用另外一個(gè)服務(wù)),然后讓后面排隊(duì)的人繼續(xù)辦業(yè)務(wù)。等你填完表了,再回來找工作人員處理(相當(dāng)于另外一個(gè)服務(wù)調(diào)用完成,重新進(jìn)入當(dāng)前服務(wù)實(shí)例)。

 

沒看懂?還是實(shí)例好用吧。來,下面咱們來動動手吧。

首先我們弄個(gè)“另一個(gè)”服務(wù)。

電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),平面設(shè)計(jì)培訓(xùn),網(wǎng)頁設(shè)計(jì)培訓(xùn),美工培訓(xùn),Web培訓(xùn),Web前端開發(fā)培訓(xùn)
        
        	<div   id=

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式