【问题标题】:WCF, Windows service - needs to notify client applicationWCF,Windows 服务 - 需要通知客户端应用程序
【发布时间】:2013-10-03 17:26:03
【问题描述】:

我是 WCF 和 Windows 服务的新手开发人员。我知道c#。该方案需要在 Windows 7 上运行的各种自定义应用程序来调用另一个应用程序中的方法。这是一种客户端/服务器关系,都在同一台计算机上运行。当指定条件发生时,服务器必须能够通知每个客户端(一次一个)。

我只需要开发服务器代码。

以下是可接受的解决方案吗:

使服务器成为使用 WCF 的 Windows 服务。服务器可以通过为每个客户端使用不同的命名管道来通知客户端?

谢谢...任何建议将不胜感激。

【问题讨论】:

标签: c# wcf windows-services


【解决方案1】:

只需通过 tcp/命名管道/msmq/http (WSDualHttpBinding) 通道使用duplex 通信。 AFAIK 你需要两个端口(输入/输出)通过 http 进行双工

【讨论】:

  • 如果都在同一台机器上运行,他为什么要使用http?
  • 而 AFAIK WCF tcp/命名管道现在是一种推荐的跨进程方式,而不是远程处理。套接字编程和使用mamory-mapped文件仍然可用,但复杂
  • 我的意思是为什么在这种情况下你需要退出进程? “soa”并没有真正回答这个问题。
  • “该场景需要在Windows 7上运行的各种自定义应用程序调用另一个应用程序中的方法”->进程外
  • 嗯。没有正确阅读问题。那么同意命名管道在这种情况下是合适的。已对您的答案投了赞成票
【解决方案2】:

我会完全放弃 wcf。尽管正如 Brian 所说,您可以使用双工绑定,但充其量是复杂的。

如果这一切都将在同一台计算机上运行,​​为什么还需要客户端/服务器?只需构建一个客户端即可满足您的所有需求。

【讨论】:

  • 其他组织将提供调用我的应用程序的应用程序。此外,我的应用程序必须能够在其应用程序中调用回调方法来通知它们某些事件。您是对的,所有应用程序(由其他组织提供的应用程序以及我的应用程序)都将安装并运行在同一台计算机上。我不知道如何把它变成一个客户。
【解决方案3】:

这是一个可接受的解决方案,应该可以正常工作。

需要考虑的其他选项(本着学习的精神)是创建路由服务作为中间服务,它会产生对多个服务的调用。因此,在您的场景中,您的客户端将调用路由服务,而路由服务将依次调用您的每个服务

以下链接应提供有关路由服务的更多信息...

[路由服务][1]

http://msdn.microsoft.com/en-us/library/ee517423.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-19
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多