WCF 第五章 并发和实例(服务行为)
并發(fā)是一個多少個任務(wù)可以同時執(zhí)行的度量,以任務(wù)(請求,工作,事務(wù),以及類似的)的形式度量。執(zhí)行時間是一個任務(wù)多長時間完成的度量,以時間(毫秒,秒,其他的時間單位等)度量。吞吐量是在一個指定時間里可以完成多少個任務(wù)的度量,以任務(wù)/時間(請求/秒, 事務(wù)/分,等等)的形式度量。吞吐量是關(guān)于并發(fā)和執(zhí)行時間的函數(shù)。
??有兩種方式來增加吞吐量:減少執(zhí)行時間或者增加并發(fā)量。減少一個獨立任務(wù)的執(zhí)行時間可以通過改變?nèi)蝿?wù)調(diào)度間隔算法或者添加額外的硬件資源,所以WCF對這些都無能為力。并發(fā)可以通過并行執(zhí)行任務(wù)來實現(xiàn)。WCF有兩種控制并發(fā)的行為: InstanceContextMode 和 ConcurrencyMode.
??InstanceContextMode服務(wù)行為用來控制實例而且可以設(shè)置成以下三種值:
?? ? Single. 服務(wù)類的一個實例處理所有接收到的請求。這實現(xiàn)了一個單例。
?? ? PerCall. 為每個接收到的請求創(chuàng)建一個服務(wù)類的實例。
?? ? PerSession. 每個客戶端會話創(chuàng)建一個服務(wù)類實例。當(dāng)使用不支持會話的信道時,所有的服務(wù)調(diào)用與PerCall一樣,即便是InstanceContextMode被設(shè)置成PerSession.
??默認(rèn)設(shè)置下,當(dāng)一個不支持會話的綁定被使用時,InstanceContextMode.PerSession 降級為PerCall,指導(dǎo)WCF為每個用戶(實際上是代理)創(chuàng)建一個新的服務(wù)類實例。
??ConcurrencyMode服務(wù)行為用來控制一個服務(wù)實例內(nèi)部的線程并發(fā)。默認(rèn)設(shè)置,ConcurrencyMode.Single,指導(dǎo)WCF在某一時刻旨在服務(wù)類的實例中執(zhí)行一個線程。這個行為可以被設(shè)置成三個值之一:
?? ?Single. 在一個時刻只有一個線程可以訪問服務(wù)類。這是最安全的設(shè)置因為服務(wù)操作不必?fù)?dān)心線程安全。
?? ?Reentrant. 在一個時刻僅有一個線程可以訪問服務(wù)類,但是這個線程可以離開類并在稍后返回繼續(xù)。
?? ?Multiple. 多個線程可以同步訪問服務(wù)類。這個設(shè)置要求類創(chuàng)建在線程安全基礎(chǔ)上。
??使用這兩個設(shè)置,InstanceContextMode和ConcurrencyMode,它們一起可以幫助你定制一個服務(wù)的實例和并發(fā)以便于你可以定位特殊的性能需求。
??表5.1 聯(lián)合InstanceContextMode和ConcurrencyMode
轉(zhuǎn)載于:https://www.cnblogs.com/danielWise/archive/2010/12/01/1893864.html
總結(jié)
以上是生活随笔為你收集整理的WCF 第五章 并发和实例(服务行为)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基金投资如何赚钱的 注意基金持仓情况
- 下一篇: 传华西村将斥资亿元涉足网游业