【问题标题】:WCF client hosted in a windows service with a WPF UIWCF 客户端托管在具有 WPF UI 的 Windows 服务中
【发布时间】:2012-11-02 20:56:41
【问题描述】:

我现在有一个 WCF 服务托管在 WPF 应用程序中。它在 WCF 服务器-客户端场景中运行,客户端也可以调用服务器(双工通信)。

我想在 Windows 服务中托管 WCF 客户端,但我想保留 WPF UI,因为它在回调服务器时提供了功能(例如请求信息)。我知道 Windows 服务没有 UI,但在这种情况下我需要它。

在 WPF 应用程序和 Windows 服务之间进行通信的最佳方式是什么? (可能比套接字更好?)

一个有用的场景是这样的:

  • 从 WPF 应用程序中,我可以选择充当服务器的 WCF 服务需要什么样的信息,

  • 此“命令”将被发送到托管 WCF 客户端实例的 Windows 服务,并且 使用实例调用服务器和

  • 通过 Windows 服务托管的 WCF 客户端服务在 WPF 应用程序中显示信息。

谢谢, 阿德里安

【问题讨论】:

    标签: wpf wcf


    【解决方案1】:

    既然服务已经作为 WCF 运行,那么如何在 WCF 接口上公开一些额外的“管理”方法并让 WPF 应用程序通过这些方法与服务交互?

    您必须添加一个安全层以确保只有合法用户才能调用这些新方法,但由于 WCF 基础架构已经到位,此解决方案可能是工作最少的。

    【讨论】:

    • 我会将 WCF 客户端服务限制为仅允许 1 个连接,并且我会提供一个密钥或类似的东西,我可以在两个应用程序中进行硬编码。通过在 WCF 接口上公开额外的方法,您的意思是我还应该在 WPF 应用程序中实现一个 WCF 客户端,以便我可以调用这些方法(并且基本上在 WPF 应用程序和 Windows 服务之间有一个双工方案?)
    • 是的,这基本上就是我的意思。这篇文章的公认答案:stackoverflow.com/questions/9125442/… 解释了为什么实际的双工是一个坏主意,并建议只在客户端设置一个 WCF 主机。出于兴趣,服务器需要向 WPF 客户端发送哪些消息?如果它只是用于状态更新或有关服务的其他信息,并且只有一个客户端实例,您是否可以使用常规轮询来更新 WPF 客户端中的内容?
    • 该死,为什么我在开始实施之前没有找到答案? :) 谢谢你的帮助!
    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2014-08-06
    • 2011-10-09
    • 1970-01-01
    相关资源
    最近更新 更多