使用 WCF 在 Windows 服务和前端应用程序之间进行通信是一种非常好的方法。我过去曾成功地使用过这种方法。
WCF 基本上是围绕传输机制的一个抽象层。您定义需要交换的数据;WCF 负责如何交换数据。WCF 的真正好处在于它将您的数据交换转换为形式化的方法调用。从您的角度来看,从 Windows 服务向应用程序发送状态消息就像进行方法调用一样简单。在幕后,WCF 序列化消息,将其发送到远程端点,并在交换完成时将控制权返回给您。
WCF 在同一台机器上或跨机器上运行良好。如果您在同一台机器上,NetNamedPipeBinding可能是您想要使用的。对于跨机器通信,有多种选项可供选择,包括NetTcpBinding。我发现此流程图在选择绑定时很有帮助。
.
为了全面披露,我对 WCF 感到沮丧有以下三个原因:
- 与 WCF 相关的陡峭学习曲线。
- 缺乏与 Visual Studio IDE 的无缝集成。
- 表现。
学习曲线是一次性成本,但它可能是巨大的。大约 3 年前我最后一次使用 WCF 时,Visual Studio 并没有使它易于使用,这只会加剧我的学习曲线。Visual Studio 今天可能会让它变得非常容易;我只是不确定。不过,我真正的挫败感是性能。根据我的经验,第一次调用方法时 WCF 很慢,之后几乎是瞬间的。我的软件的用户不止一次评论了性能,所以我今天使用基于 TCP 的解决方案来缓解这个问题。
至于您的特定问题,如果您的服务和应用程序在同一系统上运行,则防火墙应该不是问题。只要确保您使用本地主机地址 (127.0.0.1)。如果它们位于不同的系统上,WCF 可以通过其中一种 http 绑定来帮助缓解防火墙问题。
我希望这有帮助。