自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

WCF會(huì)話服務(wù)基本應(yīng)用技巧分享

開發(fā) 開發(fā)工具
WCF會(huì)話服務(wù)可以幫助開發(fā)人員在客戶端每次連接時(shí)進(jìn)行一個(gè)服務(wù)實(shí)例的分配。那么具體的操作步驟我們將會(huì)在這里給大家詳細(xì)介紹。

WCF開發(fā)工具是一款由微軟公司開發(fā)的建立于.Net Framework 2.0基礎(chǔ)上的一個(gè).Net Framework 3.0的重要組成部分。在這里我們可以通過對(duì)WCF會(huì)話服務(wù)做一個(gè)詳細(xì)了解,以方便大家對(duì)此的掌握。

會(huì)話服務(wù)(Sessionful Service):為每次客戶端連接分配一個(gè)服務(wù)實(shí)例。類似于Net Remoting的客戶端激活模式。為每個(gè)客戶端創(chuàng)建一個(gè)專門的服務(wù)實(shí)例。只要會(huì)話沒有結(jié)束,該實(shí)例就不會(huì)被銷毀。 對(duì)于會(huì)話服務(wù)而言,是一個(gè)客戶端代理對(duì)應(yīng)一個(gè)服務(wù)實(shí)例。也就是說,WCF會(huì)話服務(wù)中的服務(wù)是與代理相對(duì)應(yīng)的,而不是對(duì)應(yīng)于一個(gè)客戶端。

配置私有會(huì)話

服務(wù)實(shí)例的默認(rèn)激活方式為WCF會(huì)話服務(wù)模式。我們也可以顯示配置會(huì)話服務(wù)的方式,使用[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)],具體代碼如下所示:

 

  1. [ServiceBehavior(InstanceContextModeInstanceContextMode = 
    InstanceContextMode.PerSession)]  
  2. public class WCFServicePerSession : IWCFService  
  3. {  

服用要支持會(huì)話要依靠傳輸層的持久連接,例如NetTcpBinding會(huì)保持一個(gè)連接,而與連接無關(guān)的HTTP協(xié)議是因?yàn)闊o法保持連接,所以BasicHttpBinding是不支持會(huì)話的

 

如果服務(wù)要跨越服務(wù)邊界,那么就要在服務(wù)契約這一層使用ServiceContact的SessionMode屬性,SessionMode為枚舉類型:

 

  1. public enum SessionMode  
  2. {  
  3. Allowed,  
  4. Required,  
  5. NotAllowed  

SessionMode.Allowed

SessionMode.Allowed是SessionMode的默認(rèn)屬性,一個(gè)服務(wù)端方法被標(biāo)記了SessionMode.Allowed屬性,表示它是允許傳輸會(huì)話的,但并不強(qiáng)制要求綁定必須支持會(huì)話,而服務(wù)的行為是采用單調(diào)還是會(huì)話這要取決于服務(wù)的配置和使用的綁定#t#

SessionMode.Required

SessionMode.Required 要求必須使用傳輸層會(huì)話,也就是說服務(wù)終結(jié)點(diǎn)的綁定一定得支持傳輸層會(huì)話,若要設(shè)計(jì)一個(gè)會(huì)話契約,我們還是使用SessionMode.Required而非SessionMode.Allowed

SessionMode.NotAllowed

SessionMode.NotAllowed指定契約永不使用傳輸會(huì)話,也不使用應(yīng)用層會(huì)話,不管服務(wù)配置如何,總是采用單調(diào)服務(wù)方式。我們將一個(gè)契約標(biāo)記SessionMode.NotAllowed以后,就不能使用NetTcpBinding等支持傳輸層會(huì)話的綁定,而如果像WSHttpBinding這樣模擬傳輸層會(huì)話則是允許的,考慮到代碼的可讀性建議在使用SessionMode.NotAllowed時(shí)總是把服務(wù)配置為單調(diào)服務(wù)

一致性配置

為了方便,如果一個(gè)契約是會(huì)話契約那么***把所有契約都配置為會(huì)話契約,要避免將單調(diào)服務(wù)于會(huì)話契約混合定義在相同的WCF會(huì)話服務(wù)類型中

編寫如下服務(wù)端代碼

 

  1. [ServiceContract(SessionModeSessionMode = SessionMode.Required)]  
  2. interface IMyContract  
  3. {  
  4. [OperationContract]  
  5. void MyMethod();  
  6. }  
  7. [ServiceBehavior(InstanceContextModeInstanceContextMode=
    InstanceContextMode.PerSession)]  
  8. class MyService : IMyContract,IDisposable  
  9. {  
  10. int m_Counter = 0;  
  11. public MyService()  
  12. {  
  13. MessageBox.Show("Counter = " + m_Counter,"MyService.MyService()");  
  14. }  
  15. public void MyMethod()  
  16. {  
  17. m_Counter++;  
  18. string sessionID = OperationContext.Current.SessionId;  
  19. Trace.WriteLine("Service session ID: " + sessionID);  
  20. MessageBox.Show("Counter = " + m_Counter,"MyService.MyMethod()");  
  21. }  
  22. public void Dispose()  
  23. {  
  24. MessageBox.Show("Thread ID = " + Thread.CurrentThread.
    ManagedThreadId,"
    MyService.Dispose()");  
  25. }  

以上就是我們?yōu)榇蠹医榻B的有關(guān)WCF會(huì)話服務(wù)的相關(guān)內(nèi)容。

責(zé)任編輯:曹凱 來源: CSDN
相關(guān)推薦

2010-02-25 10:52:29

WCF響應(yīng)服務(wù)

2010-03-01 15:40:04

WCF實(shí)例停用

2010-02-25 18:04:02

WCF IIS宿主

2010-03-01 16:04:31

WCF服務(wù)契約

2010-02-26 13:40:28

WCF消息頭

2010-03-01 18:11:40

WCF數(shù)據(jù)契約變更

2010-03-01 11:24:31

WCF面向服務(wù)

2010-02-06 16:16:01

C++冒泡排序

2010-02-23 15:58:57

WCF Session

2010-03-01 13:06:49

WCF繼承

2010-01-21 18:26:16

VB.NET拆分合并語

2010-02-22 15:20:54

WCF WS-Disc

2010-02-22 17:21:02

WCF消息交換

2010-02-25 15:25:19

WCF通道

2013-12-12 16:10:21

Lua腳本語言

2010-03-02 10:50:57

WCF元數(shù)據(jù)交換

2010-02-23 13:03:34

WCF序列化

2010-02-26 10:46:12

WCF行為擴(kuò)展

2010-02-25 16:45:13

WCF應(yīng)用技巧

2010-02-24 17:07:26

WCF序列化引擎
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)