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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[老老实实学WCF] 第七篇 会话

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [老老实实学WCF] 第七篇 会话 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文:[老老實實學WCF] 第七篇 會話

老老實實學WCF

第七篇 會話

?

通過前幾篇的學習,我們已經掌握了WCF的最基本的編程模型,我們已經可以寫出完整的通信了。從這篇開始我們要深入地了解這個模型的高級特性,這些特性用來保證我們的程序運行的高效、穩定和安全。

?

首先我們來學習會話。

?

1. 什么是會話

會話是通信雙方進行通信的一個時間片、一個語境或者說一個上下文,在這個特定的環境中,通信的雙方是彼此認識的,就像兩個人在聊天,他們都很清楚誰在聆聽自己講話,也很清楚對方講的話是給自己聽的,簡單的說就是通信雙方是可以記住彼此的。

?

一旦會話結束了,通信雙方就忘記了彼此,即使他們再次建立會話,他們也不會記得他們上次會話的內容,也就是他們不記得他們曾經見過面。

?

這在我們現實世界中或許很難想象,但是在通信的世界里就是這樣的。服務端不可能記住每個跟他通信的人,他只能在一段時間內(會話)記住一個人。

?

這個特性是很有用的,有些邏輯需要客戶端和服務端通信多次才能完成,在這個期間雙方需要記住彼此,而且會話也是很多其他特性實現的基礎,例如雙工通信。

2. 如何建立會話

那么我們要想建立一個會話通信,應該具備怎樣的條件呢?

(1) 需要支持會話的綁定。綁定描述了雙方的通信方式,不同的綁定對會話的支持是不同的,比如basicHttpBinding是不支持會話的,而wsHttpBinding就是支持的。要建立會話通信,這個通信必須首先使用支持會話的綁定。

(2) 讓服務協定支持會話,服務協定實際上就是通信的通道(見第四、五篇),讓服務協定支持會話,那么就可以在這個通信通道上支持會話了。

?

選擇支持會話的綁定我們知道怎么做,可如何讓服務協定支持會話呢?要用到在修飾服務協定的SeviceContract屬性,我們知道被這個屬性修飾的接口是一個服務協定,其實這個屬性也擁有屬性,其中一個屬性叫做SessionMode。這是一個枚舉,我們通過設置這個枚舉的值來配置服務協定是否支持會話。例如:

[ServiceContract(SessionMode = SessionMode.Required)]public interface IHelloWCF{[OperationContract]string HelloWCF();}

這段代碼中,我把SessionMode設置為了Required,這表示調用這個服務協定的客戶端必須使用會話。

SessionMode有三個可能的值:

1) Allowed:這是默認值,表示這個服務協定是允許會話的,客戶端可以選擇用會話連接,也可以選擇不用會話連接。

2) Required:表示服務協定要求客戶端連接必須使用會話。

3) NotAllowed:表示服務協定不允許使用會話連接。

?

這些配置需要搭配其他的配置才能起到實際意義,比如服務實例模式,服務端和客戶端調用模式等等,等我們了解到這些特性的時候再展開,現在我們只需要知道,前兩種配置是支持會話的,第三種是不支持的。

3. 一個簡單的例子

我們通過一個簡單的例子來看看允許會話與不允許的區別,我修改了前幾篇中寄存在IIS中的服務,代碼如下:

using System; using System.ServiceModel;namespace LearnWCF {[ServiceContract(SessionMode = SessionMode.Allowed)]public interface IHelloWCF{[OperationContract]string HelloWCF();}public class HelloWCFService : IHelloWCF{private int _Counter;public string HelloWCF(){_Counter++;return "Hello, you called " + _Counter.ToString() + " time(s)";}} }

首先我們把服務協定的會話模式設置為允許會話(Allowed),在服務實現中,我為服務實現類定義了一個計數器成員,每次調用都會將這個計數器加一,然后返回一句話告訴客戶端調用了多少次。

服務端的配置文件如下:

<configuration><system.serviceModel><services><service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange"><endpoint address="" binding="wsHttpBinding" contract="LearnWCF.IHelloWCF"/><endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/></service></services><behaviors><serviceBehaviors><behavior name="metadataExchange"><serviceMetadata httpGetEnabled="true" /></behavior></serviceBehaviors></behaviors></system.serviceModel> </configuration>

在這里我配置了支持會話的wsHttpBinding。

?

客戶端的調用代碼如下:

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace ConsoleApplication2 {class Program{static void Main(string[] args){ConsoleApplication2.ServiceReference1.HelloWCFClient client = new ServiceReference1.HelloWCFClient();Console.WriteLine(client.HelloWCF());Console.WriteLine(client.HelloWCF());client.Close();Console.Read();}} }

就是連續調用兩次服務端的方法并輸出結果。

F5運行一下,會看到下面的結果:

我們看到提示調用了兩次,也就是說服務端記住了客戶端,當他第二次調用的時候將將計數器加一,就返回了調用兩次。當然這個局面的形成還受到實例上下文模式為PerSession的影響,我們后面會展開,總之服務協定支持會話,才出現了這個局面。

?

如果我們把SessionMode改成NotAllowed,其他不改動,結果就會是下面的樣子:

結果兩次都是1,說明服務器在第二次受到調用的時候已經忘記了之前那個客戶端,他又分配了一個新的計數器給這個客戶端,所以計數就總是1了。

?

其實這個例子是很粗糙的,這里面還有些其他的影響因素,我們就是通過這個例子來看看SessionMode的一方面影響。

?

4. 總結

這一篇的內容比較少,我們應該記住一些要點,在以后接觸更多特性的時候才不會混淆。

(1) 是否支持會話首先取決于選擇的綁定。

(2) 是否支持會話通過配置服務協定的ServiceContract屬性的SessionMode屬性實現的。

?




?


版權聲明:本文為博主原創文章,未經博主允許不得轉載。

總結

以上是生活随笔為你收集整理的[老老实实学WCF] 第七篇 会话的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 丁香婷婷综合激情五月色 | 激情小视频 | 黄色网在线播放 | 亚洲桃色av | 亚洲人成免费 | 天天干天天上 | 中文字幕自拍 | 午夜免费福利在线 | 1000部做爰免费视频 | 在线免费成人网 | 国产5区 | 国产成人免费视频网站 | 亚洲国产精一区二区三区性色 | 中文字幕97 | 鲁丝一区二区三区 | 天天操天天撸 | 女女互慰吃奶互揉调教捆绑 | 欧美激情亚洲综合 | xxxⅹ少妇少妇xxxx | 国产精品一二三区视频 | 欧美一区二区三区爽爽爽 | 欧美在线一级视频 | 男生桶女生肌肌 | 欧美国产日韩精品 | 欧美色图激情 | 麻豆免费看片 | 国产男女猛烈无遮挡免费视频动漫 | 亚洲第一黄色网 | 免费视频国产 | 国产精品久久91 | 亚洲在线a | 国产免费无遮挡 | 日韩精品视频免费播放 | 污视频网站在线 | 欧美另类videos | 蜜桃视频日韩 | 毛片基地免费观看 | 国产人妖网站 | 日本捏奶吃奶的视频 | 日本老熟妇毛茸茸 | 美女一区二区三区 | 91精品国产一区二区无码 | 91一区二区 | 精品人妻无码一区 | 小妹色播 | 无码人妻少妇色欲av一区二区 | 一出一进一爽一粗一大视频 | 午夜视频在线观看视频 | 国产精品一区在线免费观看 | 青青青国产视频 | julia一区二区三区在线观看 | 91成人在线免费 | 青青操网站 | 操操网| 韩国三级视频在线观看 | 久久动态图 | 久久天堂av | 国产特级视频 | 天天谢天天干 | 爆乳2把你榨干哦ova在线观看 | 男人的天堂一区二区 | 黄页在线观看 | 日韩中文娱乐网 | 久久伊人热 | 狠久久 | 亚洲一区二区三区久久久 | h网站在线播放 | 欧美影院久久 | 欧美爱爱小视频 | 精品丰满少妇一区二区三区 | 免费在线观看的av | 玖玖视频国产 | 天天射天天干天天色 | 精品视频一区二区三区四区五区 | 中文字幕色哟哟 | 在线观看www视频 | 亚洲精品一区在线观看 | 一级精品毛片 | 日本女人性视频 | 91丝袜在线观看 | 久草这里只有精品 | 女同av在线播放 | 琪琪原网址 | 欧美乱妇视频 | 97免费在线观看视频 | 亚洲欧美国产精品 | 2020av视频| 国产夫妻精品 | 国产激情一区二区三区视频免樱桃 | 18被视频免费观看视频 | 日日精| 天堂久久久久久 | 狠狠网站| 肉大榛一进一出免费视频 | caopeng在线视频 | 一区二区三区四区欧美 | 久久精品播放 | 天天艹日日干 | 波多野结衣av中文字幕 |