c# - 界面设计(WCF/远程)

标签 c# wcf interface remoting

我有两个接口(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/

相关文章:

c# - UWP 等同于用于序列化 XAML 的 XamlWriter

c# - .NET C# "The remote certificate is invalid according to the validation procedure"

c# - Web 应用程序告诉来自 iframe 的请求?

c# - 堆谜语中的对象

c# - WCF 性能

c# - 无法调试 wcf-windows 服务

c# - wsDualHttpBinding 总是超时,而其他服务按预期工作

java - 如何让一个我无法更改的类实现一个接口(interface)?

java - 这是 Java 中接口(interface)的正确结构吗?

c# - 解决多接口(interface)实现