私はWCFを初めて使用します。wcfWebサービスに複数のエンドポイントを作成する利点を教えてください。
また、IISでそのようなサービスをホストする方法と、wcfクライアントが提供された正確なエンドポイントに接続する方法の例を教えてください。
ありがとう。
私はWCFを初めて使用します。wcfWebサービスに複数のエンドポイントを作成する利点を教えてください。
また、IISでそのようなサービスをホストする方法と、wcfクライアントが提供された正確なエンドポイントに接続する方法の例を教えてください。
ありがとう。
異なるエンドポイントを提供する利点は、各エンドポイントが異なるバインディングを使用できることです。このようにして、クライアントの機能に基づいて、適切なバインディングを選択できました。たとえば、Java、PHP などのクライアント用の相互運用可能なエンドポイントと、より高速であるが .NET クライアント専用の独自のバイナリ エンドポイントを公開できます。
各エンドポイントには、アドレス、バインディング、およびコントラクトがあります。したがって、クライアントは、使用するサービス エンドポイントを選択できます。
IIS で WCF サービスをホストするには、次の 2 つの可能性があります。HTTP バインディングのみが使用可能な ASP.NET アプリケーション (basicHttpBinding、wsHttpBinding、webHttpBinding、...) またはバイナリ バインディングを使用できる WAS (IIS 7.0 のみ) のいずれかです。 . クライアントの観点から、特定のサービス URL を指すクライアント プロジェクトにサービス参照を追加し、サービスを使用します。そして、これについて説明している別の記事があります。
経験から:
異なるバインディングを使用します。たとえば、.NETクライアントBasicHttpBinding
で使用している場合のJavaクライアント用です。WsHttpBinding
また、一部のHTTPSとその他のHTTP ...
異なるコントラクト/インターフェースを分割して公開します。たとえば、多くの操作を公開する1つのインターフェイスがあり、基本的なことを行うカットダウンインターフェイスがあり、2つ目のインターフェイスを外部に公開して、内部クライアントは拡張インターフェイスのエンドポイントを使用し、外部クライアントはもう1つのインターフェイスを使用します。
例えば
interface IFoo
{
void DoBasic();
}
interface IFooInternal : IFoo
{
void DoMore();
}
これで、両方を実装する1つのクラスができました。
public class Foo : IFooInternal
{
....
}
そして今、実装が同じクラスにある間、1つだけを外部に公開します。