我有两个接口(interface)
public interface IServer1
{
[OperationContract(IsOneWay = false)]
void Subscribe();
[OperationContract(IsOneWay = false)]
[ServiceKnownType(typeof(ABC))]
List<ABC> GetActiveData();
}
和另一个界面
public interface IServer2
{
void Subscribe(IClient client);
List<ABC> GetActiveData(IClient client);
}
一个接口(interface)用于 WCF 通信,另一个接口(interface)用于远程处理。 为此创建两个界面让我很恼火。将有两个不同的代理来实现这些接口(interface)。
仅用一个界面就可以完成此操作吗?或者也许最好有两个接口(interface)。 此外,将来可能会出现除 WCF 和远程处理之外的其他进程间通信模式,因此也不想为此创建另一个接口(interface)。
至于删除远程处理并使用 WCF 无法做到这一点,因为它的代码库庞大。不想进行额外的测试等工作。
谢谢
最佳答案
我将遵循封装不同概念的建议。在您的情况下,服务接口(interface)似乎是一致的,但通信模式可能会改变。
为客户端创建一个接口(interface)并通过工厂公开该接口(interface)。在 Factory 内,根据所使用的通信模式,创建代理对象并将调用委托(delegate)给代理对象。这也将封装服务接口(interface),即服务接口(interface)可以是一个,也可以是不同的,除非服务接口(interface)提供相同的操作,否则客户端不需要更改。引入新的通信模式只需要对Factory类进行单元测试,客户端代码不需要进行单元测试。
关于c# - 界面设计(WCF/远程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13061811/