1

サービス ベース アドレスとエンドポイント ベース アドレスの違いは何ですか?

次のようなサービスのベース アドレスがあり、サービス"http://hostname:port/svc1"のエンドポイントが、「http」ではなく「net.msmq」というトランスポート スキームを必要とする NetMsmqBinding で構成されているとします。これにより、WCF ランタイムから例外が発生しますよね?

しかし、これは、サービスのすべてのエンドポイントが、サービス ベース アドレスで指定されたトランスポート スキームに準拠する必要があることを意味しますよね?

誰かがこのあいまいさを解決するのを手伝ってくれませんか?

4

1 に答える 1

3

スキームごとに 1 つのベース アドレスを持つことができます。したがって、1 つのベース アドレスを 用に定義しhttp、別のベース アドレスなどを定義できますnet.tcp

ベース アドレスはアドレスのベースです。各エンドポイントは、このベース アドレスに追加される相対アドレスを提供する必要があります。

  • のベース アドレスhttp:http://hostname:port/svc1
  • のベース アドレスnet.tcp:net.tcp://hostname:port/tcp

  • エンドポイント 1: address="test1"--> 完全な URLhttp://hostname:port/svc1/test1

  • エンドポイント 2: address="test2"--> 完全な URLhttp://hostname:port/svc1/test2

  • エンドポイント 1 net.tcp: address="tcp1"--> 完全な URLnet.tcp://hostname:port/tcp/tcp1

  • エンドポイント 2 net.tcp: address="tcp2"--> 完全な URLnet.tcp://hostname:port/tcp/tcp2

もちろん、ベース アドレスが設定されていても、エンドポイントが独自の完全なアドレスを定義している場合は、そのアドレスが使用されます。

  • エンドポイント 3: address="http://hostname:port2/OtherService/EP1"--> その場合、完全なアドレスが指定されているため、定義済みのベース アドレスは適用されhttp、この完全修飾アドレス実際の完全なエンドポイント アドレスです。
于 2013-08-30T08:33:24.000 に答える