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

代碼分析WCF通道監(jiān)聽器原理

開發(fā) 后端
這里就WCF通道監(jiān)聽器做出了實(shí)例分析,還對協(xié)議通道的ChannelListener做出了詳細(xì)的介紹,希望對大家有幫助。

隨著時(shí)代的發(fā)展,WCF是比較常用的技術(shù)之一,于是我研究了一下關(guān)于WCF通道監(jiān)聽器,在這里拿出來和大家分享一下,希望對大家有用。之前我們也曾經(jīng)講過通道和監(jiān)聽器的關(guān)系。下面,我們再來回顧一下它們的關(guān)系。我們可以看到,ChannelListeners是非常有趣的家伙。在本例中,在程序中的每一個(gè)通道有一個(gè)ChannelListener。在這里我將指出每一個(gè)ChannelListener的差異。為了簡單起見,我們只看一下協(xié)議通道的ChannelListener。

首先,ChannelListener從 ChannelListenerBase類繼承。我們可以看到,泛型,作為.NET2.0框架的一個(gè)新特性,在WCF中被ChannelListener 和其它的類大量的使用。如果這些語法對于讀者很陌生,我們可以從這個(gè)URL中獲得有用的信息:http://msdn2.microsoft.com/en-us/library/ms379564(VS.80).aspx。下面是ChannelListener類的聲明:

  1. class TestTransportChannelListener : ChannelListenerBase<IInputChannel>   
  2. { private Uri _uri; private EndpointAddress _localAddress;   
  3. public TestTransportChannelListener(TestTransportBindingElement transportElement, BindingContext context) :   
  4. base(context.Binding) { BigHelper.DisplayMessage("Construct " + this.ToString());  
  5. _uri = new Uri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress);  
  6. _localAddress = transportElement.LocalAddress; } 

#T#從上面的代碼可以看出,在構(gòu)造方法的第一個(gè)參數(shù)負(fù)責(zé)建立ChannelListener。我們將在后面的部分看到更多的BindingElement的內(nèi)容。我們可能注意到ChannelListener所存儲的WCF通道監(jiān)聽器只存在于通道棧的底層。我們將本文后面的內(nèi)容學(xué)習(xí)到更多這方面的知識。前面講過,ChannelListener負(fù)責(zé)建立通道。在OnAcceptChannel事件發(fā)生時(shí)接收通道指令。在這個(gè)例子中,OnAcceptChannel方法被其中一個(gè)協(xié)議通道實(shí)現(xiàn),WCF通道監(jiān)聽器代碼如下:

  1. protected override IInputChannel OnAcceptChannel(TimeSpan timeout)  
  2. {  
  3. EndpointAddress address = new EndpointAddress(BigHelper.Uri);  
  4. _innerChannel = _innerChannelListener.AcceptChannel(timeout);  
  5. TestLevel2Channel channel = new TestLevel2Channel(this, address);  
  6. return channel;  

在上面的OnAcceptChannel中可以看出,_innerChannelListener是一個(gè)在ChannelStack中比較底層的ChannelListener。這個(gè)ChannelListener保存了從當(dāng)前監(jiān)聽器的底層到上層的通道。這個(gè)保存被監(jiān)聽器返回的通道的過程從底至一直延續(xù)到上層,然后,應(yīng)用程序獲得了棧頂?shù)囊粋€(gè)引用。由于傳輸通道是最底層的通道,因此,在代碼中,傳輸通道簡單地建立了一個(gè)Message對象。GetProperty方法允許WCF的其他層使用通道棧。在本文的下面部分將討論GetProperty方法的使用。

責(zé)任編輯:田樹 來源: 博客
相關(guān)推薦

2010-02-22 15:06:31

WCF信道監(jiān)聽器

2009-09-27 17:46:22

Hibernate監(jiān)聽

2011-03-21 16:21:49

Oracle監(jiān)聽口令監(jiān)聽器

2009-07-08 17:39:23

Servlet監(jiān)聽器

2011-05-16 10:14:11

Hibernate

2009-11-06 09:22:46

WCF應(yīng)用

2011-06-01 14:55:24

Android Service 監(jiān)聽器

2010-04-23 18:00:31

2009-07-06 13:48:53

Servlet監(jiān)聽器

2010-01-13 09:49:09

注釋監(jiān)聽器Listener

2009-01-03 13:37:26

Oracle監(jiān)聽器Oracle服務(wù)器Oracle網(wǎng)絡(luò)配置

2009-11-18 18:28:27

Oracle監(jiān)聽器

2023-01-06 08:55:00

2012-02-03 13:27:16

2010-08-09 11:06:01

Flex事件機(jī)制

2010-04-19 15:38:10

2010-04-23 10:13:18

Oracle監(jiān)聽

2009-11-09 09:41:25

WCF通道

2020-04-20 11:09:49

過濾器監(jiān)聽器 Web

2009-12-08 13:06:15

WCF通道
點(diǎn)贊
收藏

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