2

我有两个接口

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);
}

一个接口用于 WCF 通信,另一个用于远程处理。为此创建两个接口让我很恼火。将有两个不同的代理来实现这些接口。

这可以只用一个界面来完成吗?或者最好有两个接口。此外,在未来,除了 WCF 和远程处理之外,可能还会出现其他一些进程间通信模式,因此也不想为此创建另一个接口。

至于删除远程处理和使用 WCF 仅作为其庞大的代码库无法做到这一点。不想进行额外的测试等工作。

谢谢

4

1 回答 1

2

我将遵循封装不同概念的建议。在您的情况下,服务接口似乎是一致的,但通信模式可能会改变。

为客户端创建一个接口并通过工厂暴露接口。在 Factory 中,根据使用的通信模式,创建代理对象并将调用委托给代理对象。这也将封装服务接口,即服务接口可能是一个或可能不同,除非服务接口提供相同的操作,否则客户端不需要更改。引入新的通信模式只需要对 Factory 类进行单元测试,客户端代码不需要进行单元测试。

于 2012-10-25T06:41:31.097 回答