偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

WCF中幾個基本知識點整理

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

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

1、WCF中的Message

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

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

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

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

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

狀態(tài),導(dǎo)致再次讀取會有異 常。這時,可以使用Message定義的CreateBufferedCopy方法。

它的簽名如下:

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

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

Text、MTOM、Binary。Text格式是與平臺無關(guān)的;MTOM,基于WS-*MTOM規(guī)范,是大數(shù)據(jù)量二進制數(shù)據(jù)以SOAP傳輸時優(yōu)化使用的格式,也與平臺無關(guān);Binary是以二進制格式編碼,只用于.Net平臺上。

3、元數(shù)據(jù)交換終結(jié)點

元數(shù)據(jù)交換終結(jié)點是一類特殊的終結(jié)點,也成為MEX 終結(jié)點,它支持元數(shù)據(jù)交換的標(biāo)準;服務(wù)可以根據(jù)他發(fā)布自己的元數(shù)據(jù)。

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

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

WCF自動為服務(wù)宿主自動提供了IMetadataExchange接口的實現(xiàn)。對于元數(shù)據(jù)交換終結(jié)點,

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

mexHttpBinding;對于Tcp則對應(yīng)mexTcpBinding;對于IPC則對應(yīng)mexNamedPipeBinding。

以下就是對于HTTP、TCP、IPC這幾種協(xié)議下元數(shù)據(jù)交換終結(jié)點的配置:

  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> 

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

進而訪問服務(wù)。

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

通過httpGetEnabled="true"的方式來發(fā)布服務(wù)的元數(shù)據(jù)信息,而它不支持其他協(xié)議。

對于其他協(xié)議我們希望發(fā)布元數(shù)據(jù)信息,通過配置的方式顯然是一種很好的方式。

 對于元數(shù)據(jù)交換終結(jié)點配置,如<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的屬性值。如下圖 :

使用元數(shù)據(jù)交換終結(jié)點時,如果服務(wù)所支持的終結(jié)點綁定支持HTTP協(xié)議,不論如下配置:
 
  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初接觸實作之服務(wù)發(fā)布和使用
  2. 利用WCF實現(xiàn)將服務(wù)器端的錯誤信息返回
  3. 看WCF Web API的***印象
  4. jQuery調(diào)用WCF開發(fā)實例經(jīng)驗分享
  5. 手把手教你如何應(yīng)用WCF中的REST

 

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

2016-10-31 19:22:24

JavaScript語法

2010-08-30 19:42:45

DHCP服務(wù)器

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數(shù)據(jù)庫查詢優(yōu)化

2010-07-28 15:52:00

Flex

2011-11-23 10:35:53

2020-07-16 15:00:56

MySQL索引數(shù)據(jù)庫

2017-04-12 11:47:32

2009-06-26 14:42:08

2017-10-20 22:40:54

電線電纜導(dǎo)體

2018-09-13 12:21:54

數(shù)據(jù)挖掘數(shù)據(jù)庫算法

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內(nèi)存

2017-02-20 23:05:14

JavaScript

2010-06-13 13:49:14

點贊
收藏

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