• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • [WCF REST] Web HTTP編程模型——WebHttpBinding(2)

    發表于:2012-02-09來源:博客園作者:Artech點擊數: 標簽:Web HTTP編程模型
    11: public override MessageVersion MessageVersion { get; set; } 12: public XmlDictionaryReaderQuotas ReaderQuotas { get; } 13: public Encoding WriteEncoding { get; set; } 14: } 除此之外,WebMessa

      11: public override MessageVersion MessageVersion { get; set; }

      12: public XmlDictionaryReaderQuotas ReaderQuotas { get; }

      13: public Encoding WriteEncoding { get; set; }

      14: }

      除此之外,WebMessageEncodingBindingElement具有CrossDomainScriptAccessEnabled 和ContentTypeMapper這兩個重要的屬性。前者表示是否支持跨域(Corss-Domain)腳本訪問,默認值為False。后者類型為WebContentTypeMapper。WebContentTypeMapper用于進行消息的內容類型(Content Type,有時候也成為媒體類型或者MIME類型)與具體的格式(比如XML、JSON等)之間的映射。

      1: public abstract class WebContentTypeMapper

      2: {

      3: protected WebContentTypeMapper();

      4: public abstract WebContentFormat GetMessageFormatForContentType(string contentType);

      6: }

      7: public enum WebContentFormat

      8: {

      9: Default,

      10: Xml,

      11: Json,

      12: Raw

      13: }

      如上面的代碼所示,WebContentTypeMapper是一個抽象類,包含的唯一的抽象方法GetMessageFormatForContentType用于根據指定的內容類型返回與之匹配的通過枚舉WebContentFormat表示的內容格式。WebContentFormat枚舉的Xml、JSON和Raw體現了Web HTTP編程模型支持三種基本格式,其中Raw表示原始的二進制。

      最終的消息編碼/解碼工作是通過繼承自MessageEncoder的消息編碼器實現的,消息編碼器又是通過繼承自MessageEncoderFactory的編碼器工廠創建出來的,而消息編碼綁定元素最終通過方法CreateMessageEncoderFactory創建了編碼器工廠。對于WebMessageEncodingBindingElement來說,它的CreateMessageEncoderFactory方法會創建一個具有如下定義的WebMessageEncoderFactory對象。

      1: internal class WebMessageEncoderFactory : MessageEncoderFactory

      2: {

      3: public WebMessageEncoderFactory(Encoding writeEncoding, int maxReadPoolSize,int maxWritePoolSize, XmlDictionaryReaderQuotas quotas,

      4: WebContentTypeMapper contentTypeMapper, bool javascriptCallbackEnabled);

      5: public override MessageEncoder Encoder { get; }

      6: public override MessageVersion MessageVersion { get; }

      7: }

      8:

      WebMessageEncoderFactory是一個繼承自MessageEncoderFactory的內部類型。除了布爾類型的參數javascriptCallbackEnabled對應著WebMessageEncodingBindingElement的屬性CrossDomainScriptAccessEnabled之外,WebMessageEncoderFactory的構造函數參數與WebMessageEncodingBindingElement的同名屬性一一對應。代表消息版本的MessageVersion屬性依然返回None,而真正用于最終消息編碼/解碼工作的是通過Encoder屬性返回的具有如下定義的WebMessageEncoder對象。

      1: internal class WebMessageEncoderFactory : MessageEncoderFactory

      2: {

      3: private class WebMessageEncoder : MessageEncoder

      4: {

      5: //其他成員

      6: private MessageEncoder TextMessageEncoder { get; }

      7: private MessageEncoder JsonMessageEncoder { get; }

      8: private MessageEncoder RawMessageEncoder { get; }

      9: }

      10: }

      如上面的代碼片斷所示,WebMessageEncoder實際上是內嵌于WebMessageEncoderFactory類型中繼承自MessageEncoder的內部類型。WebMessageEncoder本身并不真正地實施消息的編碼/解碼,最終的消息編碼/解碼工作是通過三個屬性TextMessageEncoder、JsonMessageEncoder和RawMessageEncoder體現的具體消息編碼器完成的,而它們又分別對應著通過WebContentFormat枚舉表示的三種內容類型Xml、JSON和Raw。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>