程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> WCF設置裝備擺設心得

WCF設置裝備擺設心得

編輯:更多關於編程

WCF設置裝備擺設心得。本站提示廣大學習愛好者:(WCF設置裝備擺設心得)文章只能為提供參考,不一定能成為您想要的結果。以下是WCF設置裝備擺設心得正文


依據蔣金楠先生的博文所說的, WCF的終結點有三個要素構成,分離是地址(Address)、綁定(Binding)和契約(Contract),簡記可寫成Endpoint = ABC。
 地址:地址決議了辦事的地位,處理了辦事尋址的成績。
 綁定:綁定完成了通訊的一切細節,包含收集傳輸、新聞編碼,和其他為完成某種功效抵消息停止的響應處置。綁定的類型包含BasicHttpBinding、WsHttpBinding、NetTcpBinding等。
 契約:契約是對辦事操作的籠統,也是抵消息交流形式和新聞構造的界說。
 以上這些內容摘抄自蔣先生的博文。懂得的這些對設置裝備擺設WCF很有贊助。
那上面就一步步來設置裝備擺設一個WCF。

起首是辦事端,
一個WCF的焦點是終結點,那末先把終結點寫列出來,

<services>
      <service name="BLL.Logic" behaviorConfiguration="te">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:9091/logicService"/>
          </baseAddresses>
        </host>
        <endpoint address="" binding="ws2007HttpBinding" contract="BLL.ILogic"  bindingConfiguration="transportWS2007HttpBinding" />
      </service>
    </services>

 從<endpoint>幾個屬性address(地址) binding(綁定),Contract(契約),這幾個屬性恰是下面所說的"ABC"  留意一下 binding裡填的是BasicHttpBinding、WsHttpBinding、NetTcpBinding這些值,而確實應用哪個binding呢,就須要在bindingConfiguration中設置,值是應用的<binding>的name值。contract項目中contract的契約接口的完整限制名,這裡關於binding的設置裝備擺設接上去會引見。address沒填值,這裡在<host>中曾經給定了一個地址了。
      引見完<endpoint>,再看看<endpoint>裡面的。<endpoint>包括在<services>的<service>下,這裡的<serivces>是一個聚集,外面可以包括多個辦事,每一個辦事都邑有特定的定名(name),而name則是項目外頭完成契約(Contract)的辦事(Service)的類的完整限制名。這裡對servicebehavior停止了一些設置,詳細的內容在名為te的<servicebehavior>中。
既然下面有設置裝備擺設有觸及到binding和behavior,上面則分離對二者停止設置裝備擺設。

<bindings>
      <ws2007HttpBinding>
        <binding name="transportWS2007HttpBinding" maxReceivedMessageSize="2147483647"  maxBufferPoolSize="2147483647">
          <readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
          <security mode="Message">
            <transport clientCredentialType="None"/>
          </security>
        </binding>
      </ws2007HttpBinding>

        <basicHttpBinding>
          <binding name="newBinding" maxBufferPoolSize="21474835647" maxReceivedMessageSize="2147483647" messageEncoding="Text">
            <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
          </binding>
        </basicHttpBinding>
</bindings>

 bindings這部門和services一樣,也是一個聚集,外面包括著各類類型的binding,例如在<ws2007HttpBinding>外面的<binding>才是確實的某一個binding, <endpoint>應用時,bindingConfiguration的稱號要寫對外,binding的類型也不克不及錯。<binding>外面的子節點和屬性就不再逐個引見了,若是要經由過程WCF傳輸比擬年夜的數據時,要在binding的屬性和<readerQuotas>設置一下。

  <behaviors>
      <serviceBehaviors>
        <behavior name="te">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

最初到behaviors了。同理,behaviors也是一個聚集,外面有兩品種型,一種是serviceBehaviors,用於設置裝備擺設service的;另外一種是endpointBehaviors,用於設置裝備擺設endpoint的。這兩品種型都是一個聚集,子節點<behavior>是它們的子項,以name來辨別各個behavior,至於外面有甚麼屬性和子項也不多說了,應用時在響應的service或endpoint的behaviorConfiguration屬性填上behavior的name值就好了。
辦事真個設置裝備擺設就絮聒到這裡,上面到客戶真個。

<client>
      <endpoint address="http://localhost:9091/logicService" binding="ws2007HttpBinding"
          bindingConfiguration="WS2007HttpBinding_ILogic" contract="Proxy.ILogic"
          name="WS2007HttpBinding_ILogic">
      </endpoint>
    </client>

起首也是是終結點,客戶真個終結點放在client裡,外面也是有"ABC",這裡的address必定要與辦事端設置裝備擺設的一樣,不然找不到響應的辦事的。binding的類型也要與辦事真個一樣,contract則是用svcutil或其他對象生成的代碼裡的誰人類的完整限制名。

<ws2007HttpBinding>
        <binding name="WS2007HttpBinding_ILogic" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
            allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="1024" maxArrayLength="2147483647"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
              enabled="false" />
        </binding>
      </ws2007HttpBinding>

另外一個還要提的是這個binding,客戶真個binding比辦事真個要設置裝備擺設多一點器械closeTimeout,openTimeout,receiveTimeout 年夜致與辦事端一樣。
別的若要傳輸比擬的年夜數據時,可以按我如許來配,其實這個設置裝備擺設曾經實用於傳輸幾M的圖片。因為是個入門者,許多器械的懂得還不敷透辟,以上有說錯的還請列位批駁指出。感謝!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved