2011-08-14 5 views
2

WCFサービスアプリケーションで、複数のサービスのエンドポイントを1つだけ持つことが可能ですか?あなたが何かを意味する場合WCFで複数のサービスに対して1つのエンドポイントを設定するにはどうすればよいですか?

はあなたに

+1

つのサービスを1持つことができます:nのエンドポイントを - しかし、各エンドポイントは、1つのサービスに属します。複数のサービス間でエンドポイントを「共有」することはできません。 –

答えて

2

ありがとう:

Service1 
Service2 
Service3 
. 
. 
. 
Service n 

を、すべてのサービスが1つのエンドポイントで、あるし、私は答えは何であると信じていない、http://localhost/MyServices/Servicesを言います。アドレス、バインド、および契約(ABC)がエンドポイントを構成し、各エンドポイントには一意のアドレスが必要です。

エンドポイント1:

住所:http://localhost/MyServices/Services
バインディング:サービス1

エンドポイント2:


契約をwsHttpBindingあなたのような何かを試してみましたので、場合でも

住所:http://localhost/MyServices/Services
バインディング:wsHttpBinding
契約:サービス2を

それはエンドポイント1

Specifying an Endpoint Address

Hosting Multiple Services

1

すべてのサービスと同じアドレスを持っているとして、あなたは、エンドポイント2の問題に実行したいです/バインディング/契約の組み合わせは離散アドレスを使用しなければならず、したがって別個のエンドポイントでなければならない。

クライアントに関しては、同じトランスポートプロトコルを使用する限り、WCF 4ルーティングサービスを使用して宛先指定可能な単一のエンドポイントを指定し、他の条件(アクションやその他のSOAPヘッダーなど)を使用してルーティングできます正しいサービスに何ができるか

0

は、あなたが公開してからちょうど委譲する権利クラスに要求一つのクラスを持っているしたいすべてのインターフェイスを公開する新しいインターフェイスを作成することです。

1

部分クラスを実装すると、単一のインターフェイスとエンドポイントを維持しながら個々のcsファイルでコンテンツを分離することができます。これはもっとも理想的な方法ではありません。なぜなら、それは部分的なクラスで構成された単一のクラスですが、サービスごとにクラスファイルがあるため、少なくとも別々のサービスを持つように見えるからです。

例の構造:

IMyService.cs

[ServiceContract] 
public interface IMyService 
{ 
    [OperationContract] 
    string GenericMethod() 

    [OperationContract] 
    string GetUsers(int companyId) 

    [OperationContract] 
    string GetMessages(int userId) 

} 

MyServiceで。CS

//Put any attributes for your service in this class file 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
public partial class MyService : IMyService 
{ 
    public string GenericMethod() 
    { 
    return ""; 
    } 
} 

UserService.cs

public partial class MyService 
{ 
    public string GetUsers(int companyId) 
    { 
     return ""; 
    } 
} 

MessagingService.cs

public partial class MyService 
{ 
     public string GetMessages(int userId) 
     { 
      return ""; 
     } 
} 
関連する問題