日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

WCF从理论到实践(5):Binding细解(转)

發布時間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WCF从理论到实践(5):Binding细解(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
WCF從理論到實踐(5):Binding細解


本文的出發點:

通過閱讀本文,您能了解以下知識:

  • WCF中的Binding是什么?
  • Binding的組成?
  • Binding Element 的分類?
  • Binding描述了那些層面的信息?
  • 選擇正確的Binding
  • 本文適合的讀者:

    本文適合WCF的初學者

    WCF中的Binding是什么?

    在弄清Binding是什么之前,我們先看一下WCF的中的Endpoint結構,一個Endpoint就類似于xml web service中的一個asmx文件,它包括三個組成部分1)Address 2) Binding 3) Contract,此三者被稱為組成Endpoint的"ABC",下圖闡述了Endpoint的組成結構:

    ABC分別解決了Endpoint的如下問題:

    A解決了Endpoint在哪的問題,也就是"Where is the endpoint?"

    B 解決的是如何與Endpoint通訊的問題,也就是"How to communicate with endpoint?"

    C解決了Endpoint提供什么功能的問題,也就是"What functionalities do the endpoint provide?"

    上面的兩篇文章WCF從理論到實踐三:八號當鋪之黑色契約和WCF從理論到實踐四:路在何方分別闡述了Contract和Address,本文著重討論Binding, Binding實現的是在客戶端和服務端進行通訊的底層細節,包括數據如何傳輸(比如采用Tcp,Http等),如何解決安全問題(SSL,Message Level Security等),傳輸的消息的格式(如text/xml,MTOM,binary等)。

    Binding的組成?

    Binding包括三個組成部分:NameSpace,Name和BindingElement,如下圖所示:

    Name和NameSpace是服務元數據(meta date)的唯一標志,換句話說,二者就像Binding的姓名一樣,而BindingElement則描述Binding的特征,我們說Binding能解決通訊方式的問題,關鍵是靠BindingElement來進行描述。

    Binding Element 的分類

    Binding Element中最核心的組成部分,它分為以下三種類型

  • Encoding Binding Element:它用于描述傳輸數據的編碼方式,比如用text/xml進行編碼,用binary編碼,用MTOM進行編碼都是在這個上面定義,每個Binding Element必須包含一個Encoding Binding Element。
  • Transport Binding Element:它用于描述數據的傳輸方式,例如使用tcp進行傳輸,還是用http進行傳輸,還是用msmq,這些都是由Transport Binding Element來定

    義,每一個Binding Element 必須包含一個Transport Binding Element

  • Protocol Binding Element: 指定諸如安全性、可靠性、上下文流設置(context flow settins)
  • Binding描述了哪些層面的信息

    一個Binding包含著豐富的信息,每種信息都描述了服務端和客戶端交互過程中的一方面,如下表所示,Binding描述了這些層面的信息:

    層次

    備注說明

    Transactions(事務)

    TransactionFlowBindingElement,用于指定事務流程

    Reliability(信賴)

    ReliableSessionBindingElement,用于指定對會話方式

    Security(安全)

    SecurityBindingElement,指定安全方式

    Encoding(編碼)

    Text, Binary, MTOM, Custom,指定數據傳輸格式

    Transport(傳輸)

    TCP, Named Pipes, HTTP, HTTPS, MSMQ, Custom,指定傳輸方式

    ?

    選擇正確的Binding

    Binding是可以自定義實現的,可WCF框架已經為我們實現了足夠多的Binding,供我們來選擇,如下表所示:

    Binding名稱

    Configuration Element

    描述

    BasicHttpBinding

    basicHttpBinding

    一個指定用符合基本網絡服務規范通訊的binding,它用http進行傳輸,數據格式為text/xml

    WSHttpBinding

    wsHttpBinding

    一個安全的通用的binding,但它不能在deplex中使用

    WSDualHttpBinding

    wsDualHttpBinding

    一個安全的通用的binding,但能在deplex中使用

    WSFederationHttpBinding

    wsFederationHttpBinding

    一個安全的通用的支持WSF的binding,能對用戶進行驗證和授權

    NetTcpBinding

    netTcpBinding

    在wcf應用程序中最適合跨機器進行安全通訊的binding

    NetNamedPipeBinding

    netNamedPipeBinding

    在wcf應用程序中最適合本機進行安全通訊的binding

    NetMsmqBinding

    netMsmqBinding

    在wcf應用程序中最適合跨機器進行安全通訊的binding,并且支持排隊

    NetPeerTcpBinding

    netPeerTcpBinding

    一個支持安全的,多機交互的binding

    MsmqIntegrationBinding

    msmqIntegrationBinding

    一個用于wcf與現有msmq程序進行安全通訊的binding

    ?

    下面的表格分別刪除了上表中的Binding在互操作性(Interoperability), 安全性(Security), 是否支持會話(Session), 是否支持事務(Transactions)和是否為全雙工(Duplex)上不同。

    Bingding

    Interoperability

    Security

    Session

    Transactions

    Duplex

    BasicHttpBinding

    Basic Profile 1.1

    (None), Transport, Message

    None, (None)

    None

    n/a

    WSHttpBinding

    WS

    Transport, (Message), Mixed

    (None), Transport, Reliable Session

    (None), Yes

    n/a

    WSDualHttpBinding

    WS

    (Message)

    (Reliable Session)

    (None), Yes

    Yes

    WSFederationHttpBinding

    WS-Federation

    (Message)

    (None), Reliable Session

    (None), Yes

    No

    NetTcpBinding

    .NET

    (Transport), Message

    Reliable Session, (Transport)

    (None), Yes

    Yes

    NetNamedPipeBinding

    .NET

    (Transport)

    None, (Transport)

    (None), Yes

    Yes

    NetMsmqBinding

    .NET

    Message, (Transport), Both

    (None)

    (None), Yes

    No

    NetPeerTcpBinding

    Peer

    (Transport)

    (None)

    (None)

    Yes

    MsmqIntegrationBinding

    MSMQ

    (Transport)

    (None)

    (None), Yes

    n/a

    例外,《Programming WCF Services》有一幅圖也能說明各自的特征:

    下面的圖給出了我們選擇Binding的方式

    本文參考資料:

  • http://www.cnblogs.com/wayfarer/archive/2006/04/10/370957.html
  • http://www.cnblogs.com/artech/archive/2007/02/28/659331.html
  • http://blog.csdn.net/TianBin_Su/archive/2006/10/08/1326566.aspx
  • http://www.rainsts.net/article.asp?id=439
  • ?

    轉載于:https://www.cnblogs.com/yanbinboy/archive/2008/06/05/1214355.html

    總結

    以上是生活随笔為你收集整理的WCF从理论到实践(5):Binding细解(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。