<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                wcf已經說到第六天了,居然還沒有說到這玩意有幾種通信模式,慚愧慚愧,不過很簡單啦,單向,請求-響應,雙工模式,其中的第二種“請求-響應“ 模式,這個大家不用動腦子都清楚,這一篇我大概來分析下。 ## 一:“請求-響應“模式   ? 如果你看了我上一篇的博文,你應該非常清楚這種類似“本地調用”的方式,wcf同樣也分為“同步”和“異步”兩種,不過不管是異步還是同步,最終都逃 不過是“請求-響應”這個事實,對吧。 1: 同步方式   這種方式我想沒什么好說的,前面幾篇我已經說的非常清楚了,具體使用方法可以參考我的前面幾篇文章。。。謝啦~~~~ 2: 異步方式   通常我們都有這樣的一個思維,遇到耗時的東西第一反應就想到了多線程,畢竟多線程也是一種負載均衡,在wcf這種”請求-響應“模式,同樣也支持異 步,很神奇吧,而且神奇到可以在“服務引用“界面上做到一鍵生成,什么???你不信!!!!不信你看。。。 ![](https://box.kancloud.cn/2015-08-04_55c0b3ce7bd13.png) 然后我非常好奇的看下XXXClient給我們生成的是個什么代碼。。。 ![](https://box.kancloud.cn/2015-08-04_55c0b3cf33723.png) 通過client端的proxy代碼,你可以清楚的看到,這雞巴WCF真的不容易,給我們生成了兩種“異步模式”,第一種是最古老的beginXXX,endXXX模式, 還有一種是被Jeffrey Richter 嚴重鄙視的“事件異步模式”。。。沒什么好說的,截圖一下給大家看看。 ![](https://box.kancloud.cn/2015-08-04_55c0b3cfaafe9.png) ## 二:“單向“模式   很多時候,我們或許都有這樣的需求,比如說訂單提交成功的時候,我需要給客戶發送郵件,但是你想想,我發送郵件這個任務只是我訂單流程的 一個“額外任務“,也就是說,它的失敗不應該會阻止我的訂單流程,并且它的邏輯時間不應該會阻礙我的下單總時間,對吧。。。這樣的話,我的訂單時 間才會最小化,為了達到不影響下單總時間的效果,我的想法就是,client端直接把消息丟給信道就好了,然后不管server端有沒有真的接收到,處理的 慢不慢,過的好不好,等等,非常開心的是,這些對wcf來說真的是小菜一碟,只需要一個輕輕松松的”IsOneWay=true“屬性就可以了。。。牛逼的要 死。。。還有就是因為是單向的,所以契約方法就沒有存在返回值的必要了,我說的對吧。。。嘿嘿~~~ ~~~ [ServiceContract] public interface IHomeService { [OperationContract(IsOneWay = true)] void Update(Student message); } ~~~ ~~~ namespace MyService { public class HomeService : IHomeService { public void Update(Student message) { Console.WriteLine(message.Name); } } [DataContract] public class Student { [DataMember] public string Name { get; set; } [DataMember] public int Age { get; set; } } } ~~~ 為了驗證是否真的是單向通訊,我可以用二種方法驗證下。 1\. wsdl中是否有output這個message   通過下面的圖,我想你看的很清楚了,你再也沒有找到我們熟悉的“output”這個message,這就說明貌似真的是單向的了,因為wsdl就是web服務的清單。   ![](https://box.kancloud.cn/2015-08-04_55c0b3d02f23b.png) 2\. 使用fillder監視一下請求消息 ~~~ class Program { static void Main(string[] args) { HomeServiceClient client = new HomeServiceClient(); client.Update(new Student() { Name = "hxc" }); } } ~~~   ![](https://box.kancloud.cn/2015-08-04_55c0b3d10aef7.png) 正如我在圖中說的那樣,非常奇怪,我的IsOneWay模式,竟然在http模式下行不通,但是你要記住,http模式天生就是“請求-響應”模式,它完全做不了 單向模式,說明白一點就是:“wcf發現你的bingding不支持單向“的時候,它并不會報錯,還是用自己天生的”請求-相應“模式來模擬”單向通信“,這就是你 看到的非常奇怪的Http 202這個http狀態碼,很多人包括我,都不知道http202 是幾個意思,沒關系,我們百科一下就好了。。。下面框框的里面的字, 已經說的非常清楚了,感謝感謝。。。 ![](https://box.kancloud.cn/2015-08-04_55c0b3d1ac0e6.png) ## 三:“雙向“ 模式   這個通訊其實沒什么好講的,也只有tcp模式才會天生支持,而http模式天生就不支持,就像上面一樣,如果非要用http來支持“雙向通訊“,那又是在 坑"wcf"他爹,這樣就會逼著他爹在底層再建立一個“請求-響應“模式來支持所謂的”雙向通訊“,而且”雙向通訊“這個玩意還不如用兩個單向的”請求-響應”模 式或者兩個“單向模式”來支持,而且兩個”請求-響應“模式比”雙向通訊“有更大的靈活性,反正我是對它不感冒,了解一下即可,如果大家比較感興趣,可以 在wcf官網上看一下:https://msdn.microsoft.com/zh-cn/library/ms735119.aspx。 ? 好了,就說到這里,洗洗睡了,晚安~~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看