WCF配置の心得

4413 ワード

蒋金楠先生のブログによると、WCFの終了点は住所(Address)、バインディング(Binding)、契約(Contract)の3つの要素からなり、簡単にEndpoint=ABCと書くことができます。 住所:住所はサービスの位置を決めて、サービスの住所を探した問題を解決しました。 バインディング:バインディングは、ネットワーク送信、メッセージ符号化、および他の何らかの機能を実装するためのメッセージに対する対応する処理を含む通信のすべての詳細を実現する。バインディングのタイプは、BaicHttpBinding、WsHttpBinding、NetTcpBindingなどがあります。 契約:サービス操作に対する抽象的な契約であり、メッセージ交換モード及びメッセージ構造の定義でもあります。 以上の内容は蒋先生のブログから抜粋しました。これらの理解はWCFの構成に非常に役立つ。次は一歩ずつWCFを配置します。まずサービスエンドです。WCFの核心は終端点です。終端点を先に列記してください。 いくつかの属性からaddress(住所)binding(バインディング)、Contract(契約)、これらの属性はまさに上述の「ABC」です。  bindingにはBaicHttpBinding、WsHttpBinding、NetTcpBindingといった値が記入されていますが、正確にどのbindingを使うかは、bindingCofigrationに設定する必要があります。値は使用する「binding」のname値です。contractプロジェクトでは、contractの契約インターフェースの完全な制限名について、ここでbindingの配置について、これから紹介します。addressは値を記入していません。ここで「host」に住所を与えました。      紹介してから、外のを見てください。endpointは「services」の「service」に含まれています。ここの「serivces」は一つのセットです。中には複数のサービスが含まれています。各サービスには特定のネーミングがあります。nameはプロジェクトの中で契約を達成するサービス(Service)の種類の完全な限定名です。ここでservicebehaviorに対していくつかの設定を行いましたが、具体的な内容はteという「servicebehavior」にあります。上に配置されている以上は、bindingとbehaviorに関するものがあり、下にはそれぞれ両者を配置する。

<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>
 bindingsのこの部分はservicesと同じで、集合でもあります。中には様々な種類のbindingが含まれています。bindingの中のサブノードと属性はもういちいち紹介しません。WCFを通じて比較的大きいデータを伝送する場合は、bindingの属性とに設定してください。

<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>

は最後にbehaviorsに着きました。同じように、behaviorsも一つの集合です。中には二つのタイプがあります。一つはserviceBehaviorsで、serviceを配置するためのものです。もう一つはendpointを構成するためのendpoint Behaviorsです。この2つのタイプは1つのセットです。サブノードはそれぞれのサブアイテムです。それぞれのbehaviorをnameで区別します。中にはどの属性とサブ項目がありますか?サービスの配置はここまでくどくど言って、下はクライアントのまで。

  <behaviors>
      <serviceBehaviors>
        <behavior name="te">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
は、まず終了点であり、クライアントの終了点をclientに置くと、中にも「ABC」があります。ここのaddressはサービスの配置と同じでなければなりません。bindingのタイプもサービスと同じで、contractはsvcutilまたは他のツールで生成されたコードの中のその種類の完全な限定名です。

<client>
      <endpoint address="http://localhost:9091/logicService" binding="ws2007HttpBinding"
          bindingConfiguration="WS2007HttpBinding_ILogic" contract="Proxy.ILogic"
          name="WS2007HttpBinding_ILogic">
      </endpoint>
    </client>
のもう一つのポイントは、このbindingであり、クライアントのbindingは、サービス端末のより多くのものを配置するclose Timeout、openTimeout、receive Timeoutは、ほぼサービスエンドと同じである。また、比較的大きなデータを転送する場合は、私のように配置することができますが、実はこの構成は何Mの画像を転送するのに適しています。初心者ですから、多くのものの理解がまだ十分ではありません。以上に言い間違いがありましたら、ご指摘ください。ありがとうございます。