5

私はWCFの使用に取り掛かろうとしているだけで、エンドポイントについて正しいアイデアがあるかどうか誰かに教えてもらえないかと迷っています。

私はmsdnのビデオを処理してきましたが、現在、WCFサービスを構成する方法について迷っています。シナリオは、複数のIServiceがある場合、たとえばIThisとIThatがあり、クライアントが両方にアクセスする必要がある場合です(注:これらはnet.tcpを使用します)。

  • IThisはデータベースクエリを処理し、

  • IThatは、データベースとは独立して計算を処理します。

クライアントで別々に参照されるIThisとIThatに別々のエンドポイントを定義する必要があると思います。または、クライアントで参照され、両方の機能を含む全体的なIThisAndThatサービスを作成しますか?

または、複数のIServiceを使用してWCFサービスを開発および処理する他の方法はありますか?私が尋ねている間、あなたはtcpまたはhttpだけのベースアドレスを定義できますか?

〜すべてに感謝します、どんな助けやポインタも素晴らしいでしょう。

4

2 に答える 2

4

クライアントで別々に参照されるIThisとIThatに別々のエンドポイントを定義する必要があると思います。または、クライアントで参照され、両方の機能を含む全体的なIThisAndThatサービスを作成しますか?

あなたは両方を行うことができます:

  • 別のサービス実装クラスを作成できます-1つIThisは、、もう1つはIThat
  • IThisまたは、との両方を実装する単一のサービス実装クラスを作成できます。IThat

その選択は完全にあなた次第です。

使用しているサービス実装クラスごとに、必要なエンドポイントをいくつでも定義できます。したがって、ThisService実装がある場合は、IThisそのためのHTTPおよびTCPエンドポイントを定義できます。また、TCPエンドポイントを定義するためのThatService実装もIThatあります。それは完全にあなた次第です。

ただし、エンドポイントはサービス実装クラスごとにのみ定義できます。両方ThisAndThatServiceのサービスコントラクトを実装している場合、3つのエンドポイントIThisと2つの異なるエンドポイントを定義することはできません。定義するエンドポイントはサービス実装クラスIThatごとです。

私が尋ねている間、あなたはtcpまたはhttpだけのベースアドレスを定義できますか?

はい、もちろんです。さまざまなアドレス指定スキーム(http、net.tcp、net.msmq、net.pipeなど)ごとにベースアドレスを定義できます。

于 2011-05-30T04:50:48.820 に答える
1

いくつかの基本:

各サービスには1つ以上のエンドポイントがあります。エンドポイントは関連するサービスに固有です。つまり、各エンドポイントは1つのサービスにのみ属することができ、サービス間で共有することはできません。

エンドポイントは、サービスへのエントリポイントを定義します。これには、クライアントが利用できるアドレス、バインディング、およびコントラクトが含まれます。

エンドポイントが異なれ、アドレスも異なり、バインディングやコントラクトも異なる可能性があります(つまり、そうである必要はありません)。通常、エンドポイントが異なれば、バインディングも異なります。つまり、トランスポートプロトコルです。特定のクライアントが特定の操作にのみアクセスできるようになっている場合は、異なる契約を結ぶことができます。

最後に、サービスは、さまざまなエンドポイントが公開するすべてのコントラクトを実装する必要があります。

これらの概念を説明する非常に簡潔でわかりやすいMSDNページを次に示します。 http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/9f4391e9-8b9f-4181-a081-860d42b992a9/

Web上のWCFには多くの情報があり、学ぶべきことがたくさんあります。あなたがやろうとしていることに焦点を当てたいくつかのチュートリアルやガイドを見るのが最善です。

于 2011-05-30T04:24:05.050 に答える