日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

wcf并發(fā)處理模型(隨記)

系統(tǒng) 2197 0

---------------------------------------------------------------------------------------并發(fā)性課程:
1.多個(gè)線程同時(shí)訪問(wèn)相同資源,將產(chǎn)生并發(fā)問(wèn)題;single(單個(gè))(缺省),Reentrant(可重入);
2.wcf缺省會(huì)保護(hù)并發(fā)訪問(wèn);
3.在實(shí)體模型中,Perssion,single中特有用;
4.在實(shí)現(xiàn)接口的服務(wù)上添加標(biāo)記;[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Single)]
------single:對(duì)于每個(gè)服務(wù)實(shí)例,只有一個(gè)請(qǐng)求處理,處理時(shí)會(huì)加鎖,若還有其他請(qǐng)求,就會(huì)進(jìn)行排隊(duì)
-single與percal:不會(huì)產(chǎn)生并發(fā),也不會(huì)對(duì)吞吐量(單位時(shí)間內(nèi)wcf處理請(qǐng)求數(shù)量)產(chǎn)生影響;同一時(shí)刻處理多個(gè)請(qǐng)求,因?yàn)榉?wù)實(shí)例與請(qǐng)求為1對(duì)1,不存在并發(fā);
single與Persession:對(duì)于Persession服務(wù),保護(hù)服務(wù)實(shí)例不會(huì)受多線程客戶端影響;
single,模式會(huì)對(duì)單一客戶端吞吐量產(chǎn)生影響,將請(qǐng)求進(jìn)行排隊(duì);同一時(shí)刻只能處理一個(gè)請(qǐng)求;多個(gè)客戶端不會(huì)產(chǎn)生并發(fā);
--single與singleton單件:
將多客戶端的請(qǐng)求進(jìn)行排隊(duì),影響吞吐量;
------Reentrant(可重入的)
1.和single一樣為單線程;同一時(shí)刻處理一個(gè)請(qǐng)求;可重入(客戶端與服務(wù)端來(lái)回調(diào)用)的單線程模式;
第一請(qǐng)求處理服務(wù)時(shí),可以中途離開(kāi),當(dāng)在繼續(xù)處理時(shí),需要排隊(duì)等待,接著在處理;
主要應(yīng)用在有回調(diào)的場(chǎng)景中;
Reentrant與percall:不會(huì)產(chǎn)生死鎖,但并發(fā)模型為single的話,一旦出現(xiàn)回調(diào)會(huì)產(chǎn)生死鎖;
所以,有回調(diào)的話,不要使用single并發(fā)模型,英愛(ài)使用Reentrant并發(fā)模型;
reentrant與PerSession和singletons:
一個(gè)請(qǐng)求完成后接著回調(diào),這時(shí),又進(jìn)來(lái)一個(gè)請(qǐng)求,所以,回調(diào)完之后的第一個(gè)請(qǐng)求,
被當(dāng)在外面,等第二個(gè)完成后,回調(diào)后的請(qǐng)求才能進(jìn)行;
-------Multiple:不在是單線程模式,可以多個(gè)線程請(qǐng)求服務(wù)實(shí)例;增加吞吐量,
請(qǐng)求時(shí),不會(huì)加鎖;所以不會(huì)進(jìn)行安排隊(duì)列;要求開(kāi)發(fā)者自己利用多線程機(jī)制來(lái)保護(hù)資源;
.net多線程包括:Monitor,Mutex,Semaphore,ReadWriteLock;
-------限流模式:
1.是所有服務(wù)不因一個(gè)服務(wù)的資源破壞而侵占其他資源導(dǎo)致其他服務(wù)受影響;
指定吞吐量控制設(shè)置:
MaxConcurrentCalls:限制發(fā)送請(qǐng)求;缺省為16;
MaxConCurrentInstances:限制服務(wù)實(shí)例的數(shù)量,缺省為int.MaxValue;
MaxConcurrentSessions:限制會(huì)話的數(shù)量;
--配置項(xiàng)配置:
<behaviors>
????? <serviceBehaviors>
??????? <behavior name="AllenBehavior">
???<serviceThrottling maxConcurrentCalls="" maxConcurrentInstances="" maxConcurrentSessions=""/>
--編程設(shè)置:
ServiceThrottle throttle=host.Description.Behaviors.Find<ServiceThrottle>();
if(throttle!=null)
{
?? throttle.MaxConcurrentCalls=30;
}
--限流與PerCall,MaxConcurrentCalls和MaxConCurrentInstances越大吞吐量越大;
--限流與PerSession:MaxConcurrentCalls控制吞吐量,MaxConCurrentInstances應(yīng)大于或等于MaxConcurrentSessions;
--限流與Singleton:PerSession:MaxConcurrentCalls控制吞吐量,實(shí)例只有一個(gè)所以MaxConCurrentInstances的設(shè)置沒(méi)意義;
----------負(fù)載平衡和故障轉(zhuǎn)移;
1.負(fù)載平衡與PerCall:隨記加載;
2.負(fù)載平衡與PerSession:跟著session走
3.負(fù)載平衡與傳輸會(huì)話,tcp,跟著Socket走;
4.負(fù)載平衡與安全會(huì)話,
我們要根據(jù)性能計(jì)數(shù)器測(cè)量總體的吞吐量并進(jìn)行限流設(shè)置;

wcf并發(fā)處理模型(隨記)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 南木林县| 连山| 邯郸市| 综艺| 含山县| 同德县| 应城市| 天全县| 兰溪市| 剑阁县| 礼泉县| 城固县| 泗洪县| 洞口县| 新竹市| 紫金县| 中宁县| 商水县| 陇西县| 新巴尔虎右旗| 璧山县| 崇礼县| 建阳市| 仙桃市| 邯郸县| 车致| 福海县| 宾川县| 武定县| 云龙县| 宁乡县| 东阳市| 濉溪县| 马公市| 威信县| 上杭县| 留坝县| 垦利县| 呈贡县| 洛宁县| 迭部县|