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の画像を転送するのに適しています。初心者ですから、多くのものの理解がまだ十分ではありません。以上に言い間違いがありましたら、ご指摘ください。ありがとうございます。