3

我开发了一个 .NET UI 和 windows 服务,它们使用 WCF 通过 NetNamedPipeBinding 协议相互通信。我选择 NetNamedPipe 是因为它是在同一台机器上进行进程间通信的最佳且高效的选择。

但是,应用程序的关键要求之一是 UI 应该能够向 Windows 服务发送操作,反之亦然。这意味着 windows 服务应该能够回调 .NET UI 应用程序,而无需 .NET UI 应用程序首先连接到 windows 服务。

牢记这一点,我在 windows 服务中托管了一个 WCF 服务,在 .NET UI 应用程序中托管了一个单独的 WCF 服务,这样它们就可以异步通信,而无需保持通信通道始终处于活动状态。

我想知道这是否具有良好的设计意义。

我会很感激你的评论。

提前致谢。

副部

4

3 回答 3

1

在客户端中托管另一个 WCF 服务以接收来自主 WCF 服务的调用不是一个好主意。您需要使用 WCF 双工通信(如 Subbu 发布的那样),也就是 WCF 回调。

WCF:双工操作和 UI 线程

于 2012-11-12T18:01:27.663 回答
0

这种方法的问题是您的服务需要作为主机连接到客户端。

更好的选择可能是在您首次启动客户端时设置 WCF 回调。然后,服务可以使用回调为客户端通知提供服务。有关详细信息,请参阅此 MSDN 文章,该文章显示使用 WCF 回调。

于 2012-11-12T17:40:35.973 回答
0

WCF 回调允许服务器将事件驱动到客户端。在此处查看一个简短的示例:一个简单的 WCF 回调示例

于 2017-07-06T12:39:07.403 回答