私は現在、WCF を介して多くのメソッドを持つサービスを提供しています。単一のサービスが複数のクラスに分割され、それぞれが異なる機能セットを提供するようにリファクタリングしたいと思います。ただし、クライアントへの接続は 1 つだけにしておきたいと思います。これは可能ですか?
答えはノーだと思いますが、どうすればこの問題を解決できますか? 回避策はありますか? それとも、私のアイデアは完全にばかげているので、アプリケーションのデザインを変更する必要がありますか?
E = ABC (エンドポイント = アドレス、バインディング、コントラクト) を思い出してください。別のコントラクトを使用すると、他のすべてが同じであっても、別のエンドポイントが得られます。
ただし、1 つのサービスで複数のサービス コントラクトを実装できます。これにより、1 つの .svc ファイルを複数の異なるサービス コントラクトのターゲットにすることができ、すべてが .svc に関連する URL として構成されます。
単一のインターフェイスとエンドポイントを維持しながら、個々の 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 "";
}
}