我目前通过 WCF 提供具有多种方法的服务。我想重构,以便将单个服务拆分为多个类,每个类都提供一组不同的功能。但是,我更愿意与客户端保持单一连接。这可能吗?
我想答案是否定的,那么我应该如何解决这个问题呢?有解决方法吗?还是我的想法完全愚蠢,我应该改变应用程序的设计?
记住 E = ABC(端点 = 地址、绑定、合同)。使用不同的合同,即使其他条件相同,您仍然有不同的端点。
但是,单个服务可以实现多个服务契约。这将允许单个 .svc 文件成为多个不同服务合同的目标,所有服务合同都配置为相对于 .svc 的 URL。
您可以实现部分类,允许您在单独的 cs 文件中分离内容,同时维护单个接口和端点。这不是最理想的方式,因为归根结底它仍然是由部分类组成的单个类,但至少它在您的文件结构中看起来像它,因此提供了一些分离而不是大量的类文件.
IMyService.cs
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GenericMethod()
[OperationContract]
string GetUsers(int companyId)
[OperationContract]
string GetMessages(int userId)
}
我的服务.cs
//Put any attributes for your service in this class file
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public partial class MyService : IMyService
{
public string GenericMethod()
{
return "";
}
}
用户服务.cs
public partial class MyService
{
public string GetUsers(int companyId)
{
return "";
}
}
消息服务.cs
public partial class MyService
{
public string GetMessages(int userId)
{
return "";
}
}