青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····

引言

服務(Service)的本質就是提供 服務消費者期望的某種功能,服務的價值體現在兩個方面:服務本身的質量和寄宿服務的平臺應付消費者的數量,并發(fā)(Concurrency)的關注的是第二 個要素。WCF服務寄宿于資源有限的環(huán)境中,要實現服務效用的最大化,需要考慮如何利用現有的資源實現最大的吞吐量(Throughput)。提高吞吐量 就某個寄宿的服務實例(Service Instance)來說,一個重要的途徑就是讓它能夠同時處理來自各個客戶端(服務代理)的并發(fā)訪問。WCF實現了一套完整的并發(fā)控制體系,為你提供了不 同的并發(fā)模式。

我經常說軟件架構是一門權衡的藝術,需要綜合考慮各種相互矛盾的因素,找到一種最優(yōu)的組合方式。提高單個服務實例允許的 并發(fā)訪問量能夠提高整體吞吐量,這樣的理論依賴于一種假設,那就是服務端所能使用的資源是無限。我們知道,這種假設無論在什么情況下都不會成立。如果我們 并發(fā)量超出了服務端所能承受的臨界點,整個服務端將會崩潰。所以,WCF一方面需要允許讓單個服務實例并發(fā)處理接收到的多個請求,同時也需要設置一道閘門 控制并發(fā)的數量。WCF的流量限制(Throttling)體系為你創(chuàng)建了這道閘門。

從本篇文章開始,我將發(fā)布一系列的文章對WCF并發(fā)架構體系進行深入剖析 ,先來看看并發(fā)的基本介紹。

一、同一個服務實例上下文同時處理多個服務調用請求

并 發(fā)的含義就是多個并行的操作同時作用于一個相同的資源或者對象,或者說同一個資源或者對象同時應付多個并行的請求。對于WCF的并發(fā)來說,這里將的“資源 或者對象”指的就是承載服務操作最終執(zhí)行的服務實例(Service Instance)。而WCF將服務實例封裝在一個稱為實例上下文(InstanceContext)對象中,所以WCF中的并發(fā)指的是同一個服務實例上下文同時處理多個服務調用請求。

WCF服務端框架一個主要的任務是將接收到的服務調用請求分發(fā)給激活的服務實例,調用相應的服務操作并返回執(zhí)行結果。也就是說,服務操作的執(zhí)行最終還是會落實到某個具體的服務實例上。《WCF技術剖析(卷1)》 的第9章對WCF的實例化機制進行了深入的剖析,從中我們知道在WCF服務端框架體系中,激活的服務實例并不是單獨存在的,而是被封裝在一個被稱為實例上 下文(InstanceContext)對象中。WCF提供了三種不同的實例上下模式(Per-Call、Per-Session和Single)實現了 不同的服務實例上下文提供機制。

所以,WCF并發(fā)框架體系解決的是如何有效地處理被分發(fā)到同一個服務實例上下文的多個服務調用請求,這些并行的調用請求可能來自不同的客戶端(服務代理),也可能相同的客戶端。WCF并發(fā)的本質上可以通過圖1體現。

clip_image002

圖1 通過一個InstanceContext對多個并發(fā)請求的處理

由于WCF的并發(fā)處理屬于服務本身自身的行為,所以我們通過服務行為(Service Behavior)的形式對采取的并發(fā)策略進行控制,而不同的并發(fā)策略定義在相應的并發(fā)模式(Concurrency Mode)下面。

二、通過ServiceBehaviorAttribute特性定義并發(fā)模式

WCF為三種典型的并發(fā)處理策略定義了三種典型的并發(fā)模式,即Single、Reentrant和Multiple。這三種并發(fā)模式通過ConcurrencyMode的三個同名的枚舉項表示,ConcurrencyMode定義如下:

   1: public enum ConcurrencyMode
   2: {
   3:     Single,
   4:     Reentrant,
   5:     Multiple
   6: }

通過ConcurrencyMode枚舉項表示的三種不同的并發(fā)模式體現了WCF處理并發(fā)請求的三種不同能策略:

  • Single一個封裝了服務實例的InstanceContext對象在某個時刻只能用于對某一個單一請求的處理,或者說針對某個InstanceContext對象的多個并發(fā)的請求會以一種串行的方式進行處理。具體來講,當WCF服務端框架接收到多個針對相同InstanceContext的請求時,會先確定該InstanceContext是 否可用(是否正在處理之前的服務調用請求),如何可用,則將接收到的第一個請求分發(fā)給它,其它請求則被放入根據抵達的先后順序被放入到一個隊列中。如果之 前的請求被正常處理,隊列中的第一個請求被分發(fā)給InsanceContext。如果一個請求在隊列中等待的時間過長,超過了設置好的服務調用的超時實 現,客戶端會跑出TimeoutException異常;
  • Reentrant該模式和Single一樣,InstanceContext對象在某個時刻只能用于對某一個單一請求的處理。不過有一點不同的是,如果服務操作在執(zhí)行過程中涉及對外調用(Call Out),該InstanceContext可以用于其它服務調用請求的處理;
  • Multiple在該模式下,一個InstanceContext可以同時用于處理多個服務請求,所以Multiple并發(fā)模式下針對同一個InstanceContext的多個并發(fā)請求能夠得到及時的處理。不過,由于是并行的處理方式,服務操作執(zhí)行過程中狀態(tài)的管理以及多線程的安全問題需要服務開發(fā)者自行處理。

并發(fā)模式的采用是服務單邊的選擇,是服務端個人的行為,所以并發(fā)模式以服務行為的方式定義,我們只需要在服務類型上應用 ServiceBehaviorAttribute特性,為ConcurrencyMode屬性設置相應的值即 可,ServiceBehaviorAttribute定義如下:

   1: [AttributeUsage(AttributeTargets.Class)]
   2: public sealed class ServiceBehaviorAttribute : Attribute, IServiceBehavior
   3: {
   4:     //其它成員
   5:     public ConcurrencyMode ConcurrencyMode { get; set; }
   6: }

如果顯示指定服務采用的并發(fā)模式,默認使用的是ConcurrencyMode.Single,所以下面兩種服務定義方式是等效的。

   1: public class CalculatorService : ICalculator
   2: {
   3:     //省略成員
   4: }
   5:  
   6: [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Single)]
   7: public class CalculatorService : ICalculator
   8: {
   9:     //省略成員
  10: }

三、回調(Callback)中的并發(fā)

WCF并發(fā)解決的是同一個InstanceContext對象在處理并發(fā)請求是采用怎樣的處理策略。我們知道InstanceContext不僅僅是封裝真正服務實例的容器,當我們通過雙向通信的機制從服務端回調客戶端操作時,真正執(zhí)行回調操作的回調對象也是封裝在InstanceContext中。

在雙向通信的場景中,如果多個服務端或者同一個客戶端的多個并發(fā)的服務調用操作所指定的回調實例上下文(即封裝回調操作的InstanceContext對象),就可能出現針對同一個InstanceContext的并發(fā)回調的現象。WCF采用與正常服務調用相同的機制來處理并發(fā)回調,實際上WCF采用幾乎一樣的機制來實現正常的服務調用和回調。

與通過將ServiceBehaviorAttribute特性應用到服務類型并指定采用的并發(fā)模式相類似,回調采用的并發(fā)模式通過應用在回調類型上的CallbackBehaviorAttribute特性來指定。CallbackBehaviorAttribute中同樣定義了ConcurrencyMode屬性:

   1: [AttributeUsage(AttributeTargets.Class)]
   2: public sealed class CallbackBehaviorAttribute : Attribute, IServiceBehavior
   3: {
   4:     //其它成員
   5:     public ConcurrencyMode ConcurrencyMode { get; set; }
   6: }

下面的代用中,我們通過在回調類型CalculatorCallbackService上應用CallbackBehaviorAttribute特性,將回調并發(fā)模式設置成ConcurrencyMode.Multiple。

   1: [CallbackBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
   2: public class CalculatorCallbackService:ICalculatorCallback
   3: {
   4:     //省略成員
   5: }

四、 事務行為與并發(fā)

相信你還會記得在上面一章介紹事務編程(《上篇》、《中篇》、《下篇》)的時候,可以在服務類型上面應用ServiceBehaviorAttribute特性將ReleaseServiceInstanceOnTransactionComplete屬性設成True,這樣可以讓WCF在事務結束之后將封裝了服務實例的InstanceContext對象釋放掉。不過這樣的設置之后再并發(fā)模式為ConcurrencyMode.Single的前提下方才有效,否則在進行服務寄宿的時候將會拋出異常。

比如說,我們定了如下一個BankingService服務類型,通過ServiceBehaviorAttribute特性指定 ReleaseServiceInstanceOnTransactionComplete為True,并采用 ConcurrencyMode.Multiple并發(fā)模式。

   1: [ServiceBehavior(ReleaseServiceInstanceOnTransactionComplete = true,ConcurrencyMode = ConcurrencyMode.Multiple)]
   2: public class BankingService : IBankingService
   3: {
   4:     [OperationBehavior(TransactionScopeRequired = true)]
   5:     public void Transfer(string accountFrom, string accountTo, decimal amount)
   6:     {
   7:        //省略實現
   8:     }
   9: }

當我們試圖寄宿該BankingService服務的時候,如圖2所示的 InvalidOperationException異常會被拋出,并提示對于已經將 ReleaseServiceInstanceOnTransactionComplete設置成True的服務來說,必須將并發(fā)模式設成 ConcurrencyMode.Multiple。

clip_image004

圖2 在Multiple+ReleaseServiceInstanceOnTransactionComplete導致的異常 

WCF提供的三種不同的并發(fā)模式,使開發(fā)者可以根據具體的情況選擇不同的并發(fā)處理的策略。對于這三種并發(fā)模式,Multiple采用的并行的執(zhí)行方 式,而Single和Reentrant則是采用串行的執(zhí)行方式。串行執(zhí)行即同步執(zhí)行,在WCF并發(fā)框架體系中,這樣的同步機制是如何實現的呢?請關注下篇文章

posted on 2010-12-26 11:24 小果子 閱讀(1321) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产精品亚洲综合| 久久资源av| 亚洲美女在线视频| 欧美成人高清| 99re热这里只有精品免费视频| 欧美成人精品1314www| 久热国产精品| 亚洲精品免费看| 亚洲国产另类久久精品| 男男成人高潮片免费网站| 亚洲青涩在线| 亚洲深夜福利网站| 国产欧美日韩91| 久久综合国产精品| 久久久国产亚洲精品| 亚洲精品国产精品乱码不99按摩| 欧美韩日一区| 欧美性理论片在线观看片免费| 性娇小13――14欧美| 久久精品91久久久久久再现| 亚洲国产精品免费| 一区二区毛片| 国产亚洲福利| 亚洲国产综合在线| 国产精品自拍小视频| 免费在线看成人av| 欧美日韩中国免费专区在线看| 欧美影院成人| 欧美激情中文字幕在线| 久久精品在线观看| 欧美日本精品一区二区三区| 久久精品人人做人人综合| 欧美成人高清| 久久久夜夜夜| 国产精品超碰97尤物18| 蜜桃久久av一区| 国产精品三级视频| 亚洲欧洲日产国码二区| 国产主播精品| 亚洲一区二区三区乱码aⅴ| 亚洲国产免费看| 亚洲欧美国产va在线影院| 日韩系列在线| 久久免费黄色| 欧美一区二区三区四区高清| 欧美v国产在线一区二区三区| 亚洲视频网在线直播| 麻豆成人精品| 久久久视频精品| 国产精品久久久久永久免费观看 | 欧美日韩精品免费看| 久久久久成人精品免费播放动漫| 欧美日韩中文字幕综合视频| 欧美国产三区| 怡红院av一区二区三区| 性做久久久久久久久| 亚洲性夜色噜噜噜7777| 欧美国产精品日韩| 亚洲电影免费| 亚洲国产专区| 久久米奇亚洲| 久久综合中文字幕| 韩国欧美一区| 久久黄金**| 久久综合久久综合久久| 韩国女主播一区| 久久国产精品亚洲va麻豆| 久久成人18免费网站| 国产啪精品视频| 欧美亚洲专区| 久久人体大胆视频| 在线电影院国产精品| 久久精品最新地址| 男女av一区三区二区色多| 在线播放国产一区中文字幕剧情欧美 | 国产一区二区电影在线观看| 亚洲欧美国产日韩天堂区| 欧美一区二区三区久久精品茉莉花| 欧美午夜剧场| 亚洲免费影院| 久久婷婷亚洲| 亚洲欧洲日产国产网站| 麻豆精品在线观看| 亚洲精品免费一二三区| 亚洲私人影吧| 国产精品一区二区黑丝| 久久av红桃一区二区小说| 麻豆国产精品va在线观看不卡| 在线看不卡av| 欧美日韩国产色站一区二区三区| 一区二区三区精品| 久久久亚洲高清| 亚洲日本成人| 国产精品99一区二区| 欧美亚洲一区二区三区| 欧美激情在线播放| 亚洲一区二区日本| 狠狠色狠狠色综合系列| 欧美99久久| 亚洲一区免费| 欧美成人精品一区二区| 亚洲小说春色综合另类电影| 国产亚洲第一区| 欧美福利一区| 欧美在线亚洲综合一区| 亚洲激情第一区| 久久精品免视看| 日韩视频不卡中文| 国产一区二区三区四区老人| 美国成人直播| 亚洲欧美日韩一区二区在线| 亚洲国产欧美另类丝袜| 欧美中文字幕视频| 一区二区精品国产| 亚洲第一视频网站| 国产精品久久亚洲7777| 欧美激情久久久| 久久精品国产亚洲高清剧情介绍| 99re国产精品| 欧美国产91| 久久躁狠狠躁夜夜爽| 亚洲女同精品视频| 亚洲乱码国产乱码精品精98午夜| 国产亚洲综合在线| 国产精品视频网站| 欧美日韩免费一区二区三区视频| 久热re这里精品视频在线6| 午夜精品久久久久久久99樱桃| 亚洲伦理在线观看| 亚洲国产精品999| 久久婷婷久久| 久久精品1区| 欧美淫片网站| 午夜亚洲性色福利视频| 亚洲视频一二三| 日韩一区二区免费高清| 亚洲国产一二三| 伊人久久久大香线蕉综合直播| 国产欧美一区在线| 国产美女精品视频免费观看| 国产精品v片在线观看不卡 | 亚洲精品一区二区三区福利| 欧美1区2区| 免费看亚洲片| 免费在线观看日韩欧美| 久久影院午夜片一区| 久久久久久久精| 欧美在线啊v| 欧美在线视频在线播放完整版免费观看 | 亚洲国产婷婷| 亚洲黄色片网站| 亚洲狠狠丁香婷婷综合久久久| 极品少妇一区二区三区精品视频| 国产亚洲精品美女| 国产一区二区精品久久99| 国产主播一区二区三区四区| 国模吧视频一区| 好看的日韩av电影| 亚洲高清资源综合久久精品| 亚洲国产高清高潮精品美女| 91久久在线观看| 国产精品99久久久久久久女警 | 亚洲国产一区二区精品专区| 亚洲精品黄色| 亚洲一级特黄| 欧美一区二区三区四区夜夜大片| 久久男女视频| 免费在线观看日韩欧美| 亚洲精品视频一区| 亚洲在线观看| 久久亚洲私人国产精品va| 欧美精品一区二区三| 国产精品久久久久aaaa九色| 狠狠色丁香久久婷婷综合丁香| 91久久精品www人人做人人爽| 99精品99| 久久精品在线视频| 91久久在线视频| 午夜一区不卡| 欧美国产精品人人做人人爱| 国产精品亚洲аv天堂网| 国产在线拍揄自揄视频不卡99 | 国产精品一区二区三区久久| 激情综合网址| 亚洲综合不卡| 欧美成人免费小视频| 亚洲视频一区二区在线观看 | 亚洲综合三区| 免费影视亚洲| 国产欧美一区二区精品性色 | 欧美性淫爽ww久久久久无| 国模大胆一区二区三区| 亚洲一区亚洲| 欧美激情中文不卡| 欧美一区二区三区播放老司机| 欧美国产日韩一区二区在线观看 | 欧美剧在线免费观看网站| 国产亚洲福利社区一区| 亚洲一区久久| 亚洲欧洲日产国产网站|