【问题标题】:WCF, how to self-host callback?WCF,如何自托管回调?
【发布时间】:2012-05-10 16:36:07
【问题描述】:

我有一个由自主机 [Winform] 和客户端 [Winform] 运行的 WCF 服务库,并且我使用 NetTcpBinding。

我希望客户端从 WCF 服务调用一个方法来在 Self-host Winform 上弹出一个 MessageBox。
重点:我想发送一个图像到服务器端,它应该以新的形式出现,但我无法在 WCF 服务库与其自承载形式之间进行通信。

请您提供一个示例,向我展示当客户端从 WCF 服务库调用方法时,我将如何在自托管 winform 上显示消息框。

【问题讨论】:

    标签: c# wcf self-hosting


    【解决方案1】:

    您可以将服务创建为单例,并在其构造函数中传递表单。然后将这个服务对象传入ServiceBase。

    然后,当您收到函数调用时,您将获得对表单的引用并可以以这种方式对其进行操作。请注意使用表单应用程序时的线程限制。

    【讨论】:

    • 我是 WCF 新手,你能给我发一个简单的例子吗!
    • @kevinGreen 将用户用户界面特定的东西添加到服务是违反 SOA 原则的。您的服务不应该真正关心表示逻辑处理事物的方式。
    • 这个问题非常具体,关于如何在表单和服务之间进行通信。尽管这可能不是最佳实践,但它回答了这个问题。如果您想真正分离服务和 GUI,那么正确的建议是在服务中包含一些 GUI 可以绑定的事件,然后当服务器从客户端接收到图像时,它会触发一个事件。然后这个事件将被 GUI 捕获,GUI 会弹出一个新表单。
    【解决方案2】:

    您可以从将图像发送到服务器端的服务调用返回成功或失败消息。假设您成功地将消息发送到服务器,您可以打开一个新表单并填充消息框或您希望向用户显示的任何用户界面控件。正如我在评论中提到的,服务是多租户的,你不应该在服务层混合用户界面相关的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      相关资源
      最近更新 更多