日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

十五天精通WCF——第六天 你必须要了解的3种通信模式

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十五天精通WCF——第六天 你必须要了解的3种通信模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
十五天精通WCF——第六天 你必須要了解的3種通信模式 原文:十五天精通WCF——第六天 你必須要了解的3種通信模式

  

? ? ?wcf已經說到第六天了,居然還沒有說到這玩意有幾種通信模式,慚愧慚愧,不過很簡單啦,單向,請求-響應,雙工模式,其中的第二種“請求-響應“

模式,這個大家不用動腦子都清楚,這一篇我大概來分析下。

?

一:“請求-響應“模式

  ? 如果你看了我上一篇的博文,你應該非常清楚這種類似“本地調用”的方式,wcf同樣也分為“同步”和“異步”兩種,不過不管是異步還是同步,最終都逃

不過是“請求-響應”這個事實,對吧。

?

1: 同步方式

  這種方式我想沒什么好說的,前面幾篇我已經說的非常清楚了,具體使用方法可以參考我的前面幾篇文章。。。謝啦~~~~

?

2: 異步方式

  通常我們都有這樣的一個思維,遇到耗時的東西第一反應就想到了多線程,畢竟多線程也是一種負載均衡,在wcf這種”請求-響應“模式,同樣也支持異

步,很神奇吧,而且神奇到可以在“服務引用“界面上做到一鍵生成,什么???你不信!!!!不信你看。。。

?

然后我非常好奇的看下XXXClient給我們生成的是個什么代碼。。。

?

通過client端的proxy代碼,你可以清楚的看到,這雞巴WCF真的不容易,給我們生成了兩種“異步模式”,第一種是最古老的beginXXX,endXXX模式,

還有一種是被Jeffrey Richter 嚴重鄙視的“事件異步模式”。。。沒什么好說的,截圖一下給大家看看。

?

二:“單向“模式

  很多時候,我們或許都有這樣的需求,比如說訂單提交成功的時候,我需要給客戶發送郵件,但是你想想,我發送郵件這個任務只是我訂單流程的

一個“額外任務“,也就是說,它的失敗不應該會阻止我的訂單流程,并且它的邏輯時間不應該會阻礙我的下單總時間,對吧。。。這樣的話,我的訂單時

間才會最小化,為了達到不影響下單總時間的效果,我的想法就是,client端直接把消息丟給信道就好了,然后不管server端有沒有真的接收到,處理的

慢不慢,過的好不好,等等,非常開心的是,這些對wcf來說真的是小菜一碟,只需要一個輕輕松松的”IsOneWay=true“屬性就可以了。。。牛逼的要

死。。。還有就是因為是單向的,所以契約方法就沒有存在返回值的必要了,我說的對吧。。。嘿嘿~~~

1     [ServiceContract]
2     public interface IHomeService
3     {
4         [OperationContract(IsOneWay = true)]
5         void Update(Student message);
6     }
 1 namespace MyService
 2 {
 3     public class HomeService : IHomeService
 4     {
 5         public void Update(Student message)
 6         {
 7             Console.WriteLine(message.Name);
 8         }
 9     }
10 
11     [DataContract]
12     public class Student
13     {
14         [DataMember]
15         public string Name { get; set; }
16 
17         [DataMember]
18         public int Age { get; set; }
19     }
20 }

為了驗證是否真的是單向通訊,我可以用二種方法驗證下。

?

1. wsdl中是否有output這個message

  通過下面的圖,我想你看的很清楚了,你再也沒有找到我們熟悉的“output”這個message,這就說明貌似真的是單向的了,因為wsdl就是web服務的清單。

  

?

2. 使用fillder監視一下請求消息

1     class Program
2     {
3         static void Main(string[] args)
4         {
5             HomeServiceClient client = new HomeServiceClient();
6 
7             client.Update(new Student() { Name = "hxc" });
8         }
9     }

  

正如我在圖中說的那樣,非常奇怪,我的IsOneWay模式,竟然在http模式下行不通,但是你要記住,http模式天生就是“請求-響應”模式,它完全做不了

單向模式,說明白一點就是:“wcf發現你的bingding不支持單向“的時候,它并不會報錯,還是用自己天生的”請求-相應“模式來模擬”單向通信“,這就是你

看到的非常奇怪的Http 202這個http狀態碼,很多人包括我,都不知道http202 是幾個意思,沒關系,我們百科一下就好了。。。下面框框的里面的字,

已經說的非常清楚了,感謝感謝。。。

?

三:“雙向“ 模式

  這個通訊其實沒什么好講的,也只有tcp模式才會天生支持,而http模式天生就不支持,就像上面一樣,如果非要用http來支持“雙向通訊“,那又是在

坑"wcf"他爹,這樣就會逼著他爹在底層再建立一個“請求-響應“模式來支持所謂的”雙向通訊“,而且”雙向通訊“這個玩意還不如用兩個單向的”請求-響應”模

式或者兩個“單向模式”來支持,而且兩個”請求-響應“模式比”雙向通訊“有更大的靈活性,反正我是對它不感冒,了解一下即可,如果大家比較感興趣,可以

在wcf官網上看一下:https://msdn.microsoft.com/zh-cn/library/ms735119.aspx。

 

? 好了,就說到這里,洗洗睡了,晚安~~~~

?

posted on 2015-07-20 09:22 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/4660521.html

總結

以上是生活随笔為你收集整理的十五天精通WCF——第六天 你必须要了解的3种通信模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。