成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF中幾個基本知識點整理

開發 后端
我們今天將介紹WCF中幾個基本知識點,包括Message和WCF中的消息編碼格式、元數據交換終結點。

整理了幾個WCF里幾個基本知識點:

1、WCF中的Message

 WCF中的消息對象Message,是有狀態的。它的狀態是MessageState枚舉。共有以下幾種類型:

  1. public enum MessageState  
  2. {  
  3.     Created,  
  4.     Read,  
  5.     Written,  
  6.     Copied,  
  7.     Closed  

對Message對象,只有在Create狀態下,才能讀,否則讀取會有異常。Message

同樣定義了許多Write之類的方法,這些Write方法同樣也只能用于處于Created的消息。

在WCF中,有可能需要對消息進行一些讀取、等操作。但是讀取操作會改變Message的 

狀態,導致再次讀取會有異 常。這時,可以使用Message定義的CreateBufferedCopy方法。

它的簽名如下:

public MessageBuffer CreateBufferedCopy(int maxBufferSize);
 
它返回的是MessageBuffer對象,它能進行多次Create而返回Message對象,并且Message的狀態為Created。

2、WCF中的消息編碼格式:

Text、MTOM、Binary。Text格式是與平臺無關的;MTOM,基于WS-*MTOM規范,是大數據量二進制數據以SOAP傳輸時優化使用的格式,也與平臺無關;Binary是以二進制格式編碼,只用于.Net平臺上。

3、元數據交換終結點

元數據交換終結點是一類特殊的終結點,也成為MEX 終結點,它支持元數據交換的標準;服務可以根據他發布自己的元數據。

對于WebService來說,它是通過WSDL的方式發布元數據,這樣對于WebService來說,是自動發布服務的元數據信息,于是我們可以通過WSDL工具生成WebService的代理類。

在WCF中,服務是可以選擇不發布元數據信息的,即使是對于它所支持跨平臺HTTP協議。但是我們可以通過發布元數據交換終結點,生成服務的代理。

WCF自動為服務宿主自動提供了IMetadataExchange接口的實現。對于元數據交換終結點,

WCF提供了專門的綁定元素用以對不同的協議(如:HTTP、TCP、IPC)的支持。如HTTP則對應

mexHttpBinding;對于Tcp則對應mexTcpBinding;對于IPC則對應mexNamedPipeBinding。

以下就是對于HTTP、TCP、IPC這幾種協議下元數據交換終結點的配置:

  1. <system.serviceModel> 
  2.         <behaviors> 
  3.             <serviceBehaviors> 
  4.                 <behavior name="mex"> 
  5.                     <serviceMetadata/> 
  6.                 </behavior> 
  7.             </serviceBehaviors> 
  8.         </behaviors> 
  9.         <services> 
  10.             <service name="Service.CalculatorService" behaviorConfiguration="mex"> 
  11.                 <host> 
  12.                     <baseAddresses> 
  13.                         <add baseAddress="net.tcp://127.0.0.1:3636/mexTcp" /> 
  14.                         <add baseAddress="http://127.0.0.1:6363/mexHttp"/> 
  15.                         <add baseAddress="net.pipe://127.0.0.1"/> 
  16.                     </baseAddresses> 
  17.                 </host> 
  18.                 <endpoint address="net.tcp://localhost:3636/SessionfulCalculator" binding="netTcpBinding" contract="Contract.ICalculator"></endpoint> 
  19.                 <endpoint address="http://localhost:6363/SessionfulCalculator" binding="wsHttpBinding" contract="Contract.ICalculator"></endpoint> 
  20.                 <endpoint address="netpipe" binding="netNamedPipeBinding" contract="Contract.ICalculator"></endpoint> 
  21.                 <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange">    </endpoint> 
  22.                 <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">    </endpoint> 
  23.                 <endpoint address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange">    </endpoint> 
  24.             </service> 
  25.         </services> 
  26.     </system.serviceModel> 

這樣,不管服務所支持的HTTP、TCP、IPC等方式,我們都可以通過SVCUtil工具生成代理類

進而訪問服務。

 在WCF中,對于HTTP協議而言,我們可以通過直接配置服務的行為,

通過httpGetEnabled="true"的方式來發布服務的元數據信息,而它不支持其他協議。

對于其他協議我們希望發布元數據信息,通過配置的方式顯然是一種很好的方式。

 對于元數據交換終結點配置,如<endpoint address="mex" binding="mexNamedPipeBinding"  
contract="IMetadataExchange"></endpoint>

 如果address配置為空或者與behavior中 name配置相同,則可以直接通過SVCUtil

加上 baseAddress生成代理類。如下圖:

如果address和behavior中 name配置不同則生成代理類時SVCUtil 需要加上

baseAddress +<endpointaddress="mex" binding="mexNamedPipeBinding"

contract="IMetadataExchange" />中的address的屬性值。如下圖 :

使用元數據交換終結點時,如果服務所支持的終結點綁定支持HTTP協議,不論如下配置:
 
  1. <behavior name="mex">   
  2. <serviceMetadata httpGetEnabled="false"/> 
  3.    
  4.  
  5. </behavior> 

httpGetEnabled的值如何,都能生成代理類。

原文鏈接:http://www.cnblogs.com/tyb1222/archive/2012/05/08/2489480.html

【編輯推薦】

  1. WCF初接觸實作之服務發布和使用
  2. 利用WCF實現將服務器端的錯誤信息返回
  3. 看WCF Web API的***印象
  4. jQuery調用WCF開發實例經驗分享
  5. 手把手教你如何應用WCF中的REST

 

責任編輯:彭凡 來源: 博客園
相關推薦

2016-10-31 19:22:24

JavaScript語法

2010-08-30 19:42:45

DHCP服務器

2012-04-23 15:49:04

2016-12-06 10:52:07

JavaScript易錯知識點

2011-12-26 09:50:05

.NET垃圾回收

2021-12-20 10:55:05

Git命令Linux

2018-11-27 15:51:10

MySQL數據庫查詢優化

2010-07-28 15:52:00

Flex

2011-11-23 10:35:53

2020-07-16 15:00:56

MySQL索引數據庫

2017-04-12 11:47:32

2009-06-26 14:42:08

2017-10-20 22:40:54

電線電纜導體

2018-09-13 12:21:54

數據挖掘數據庫算法

2009-06-11 14:40:32

Java list

2010-01-28 11:18:14

Android界面布局

2010-05-06 17:41:19

Unix命令

2012-06-05 00:41:07

JavaJava內存

2017-02-20 23:05:14

JavaScript

2010-06-13 13:49:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一二三区 | 亚洲国产午夜 | 天天操伊人 | 亚洲美女网站 | 久久99精品久久 | 国产精品人人做人人爽 | 国产精品久久久久久久毛片 | 亚洲国产欧美国产综合一区 | 国产精品国产精品国产专区不蜜 | 一区二区在线 | 亚洲精品乱码久久久久久蜜桃91 | 丁香久久 | 日韩二区 | 麻豆国产精品777777在线 | а_天堂中文最新版地址 | 精品日韩欧美一区二区 | 一区二区三区免费在线观看 | 国产亚洲精品综合一区 | 欧美精品日韩精品国产精品 | 国产精品久久 | 一级黄色短片 | 亚洲人成人网 | 成人激情视频在线观看 | 欧产日产国产精品99 | 亚洲视频在线观看 | 日本一二区视频 | 在线男人天堂 | 亚洲午夜视频 | 久久久久久亚洲精品 | 亚洲免费视频在线观看 | 天天干天天玩天天操 | 成人免费看片网 | 五月综合激情婷婷 | 久久久久久国产免费视网址 | 日韩欧美国产一区二区三区 | 欧美日韩精品综合 | 亚洲导航深夜福利涩涩屋 | 国产高清精品一区二区三区 | 久久国产精品视频免费看 | 国产精品日韩欧美一区二区三区 | 日韩一区二区三区视频在线观看 |