TCPポートを介してWCFサービスをホストするにはどうすればよいですか。また、これらのTCPポートを介してWCFサービスをリッスンし、サービスを利用するにはどうすればよいですか。
つまり、net.tcpバインディングとは別に、TCPポートを使用してホストおよび消費する方法はありますか?
TCPポートを介してWCFサービスをホストするにはどうすればよいですか。また、これらのTCPポートを介してWCFサービスをリッスンし、サービスを利用するにはどうすればよいですか。
つまり、net.tcpバインディングとは別に、TCPポートを使用してホストおよび消費する方法はありますか?
WCF では、ServiceHost クラスのインスタンスを作成し、適切なエンドポイントと公開するサービス実装を使用してそれを構成し、それを呼び出すことで、任意のサービスを自分でホストできますOpen
。これは、独自のアプリケーション内からサービス (およびそのポート リスナー) をホストするため、セルフ ホスティングと呼ばれます。
別の方法として、IIS でサービスをホストすることもできますが、IIS 6 で WCF をホストすることはできますが、HTTP および HTTPS エンドポイントしかホストできないことに注意してください。IIS で TCP エンドポイントをホストする場合 (これは良い考えです)、IIS 7 が必要になります。
詳細はこちらをご覧ください。
(許可を得ている場合は)任意のポートを使用して、wcfサービスをホストできます。IISを使用してwcfサービスをホストする場合は多少異なりますが、セルフホスティング環境では、ポート番号をベースアドレスに追加するだけで完了です。(VistaまたはServer 2008を使用している場合、管理者権限で実行していないとき(たとえば、netshを使用しているとき)は、ポートへのアクセスを許可する必要があります)
たとえば、httpサービス(またはnet.tcp)にポート1337を使用するには、ベースアドレスに「:1337 /」を追加するだけで、残りは自動的に行われます。
すべてのHTTPバインディングは、トランスポート層のTCPで機能します。したがって、HTTPバインディングとIIS.6を使用して、特定のTCPポートで実行されるWCFサービスをホストできます。
これを実現する方法についてのウォークトラフは次のとおりです。
構成ファイル(またはコード)から目的のポートで実行するようにサービスを構成します。
<service name="WCFService" behaviorConfiguration="DefaultBehaviour"> <host> <baseAddresses> <add baseAddress="http://localhost:8000/WCFService" /> </baseAddresses> </host> <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="WCFService_mexEndpoint" contract="IMetadataExchange" /> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="DefaultBinding" name="WCFService_Endpoint" contract="WCFService.IService1" />
IISで、Webサイト(または仮想ディレクトリ)を作成し、baseAddressサービス構成で選択したポート(上記の例では8000)で実行するようにバインドを構成します。
上記の手順の結果は、トランスポートプロトコルとしてHTTPを使用して、トランスポート層のTCPポート8000で実行されるWCFサービスです。
編集:あなたはここで少し混乱していると思います。達成しようとしているのがバイナリ送信パッケージである場合、手元にある唯一の解決策は、IIS.6と互換性のないnet.tcpバインディングです。接続のTCPポートを選択できるようにしたいだけの場合は、上記の例で示したように、どのHTTPバインディングでもこれを実行でき、IIS.6で使用できます。
少し遅いことはわかっています..しかし、Visual Studioに付属の「WCF Service Host」アプリを使用できると思います。
このヘルプかもしれません
<services>
<service behaviorConfiguration="configname"
name="servicename">
<endpoint address="" binding="netTcpBinding" bindingConfiguration="MyServiceBinding"
name="NetTcpBindingEndpoint" bindingName="MyServiceBinding"
contract="Interface">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="customBinding" bindingConfiguration="myMexTcpBinding"
name="MexTcpBindingEndpoint" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:prot/TestService" />
</baseAddresses>
</host>
</service>
</services>