.NET WCF - 在服务器处理时更新客户端 GUI

标签 .net wcf client-server

在客户端/服务器应用程序方面,我是新手。 (我只编写了 asp.net 应用程序)

我想创建一个包含 的应用程序多个 WinForm 客户端和一个 .NET 服务器(我正在考虑 WCF)。
客户端和服务器之间的通信应该在 http(端口 80)上。

应用场景:

客户端会将关键字传递给服务器,例如“books”。

然后,服务器将开始一个 1 秒到 10 分钟的过程,根据这个关键字搜索匹配数据。

服务器将查找结果列表(从 1 个结果到 N 个结果)。

我希望客户端在服务器搜索时使用找到的结果更新 GUI。 (不要等到服务器完成)。

我的问题是:

WCF 是服务器端的正确选择吗?

什么样的 WCF 协议(protocol)?双工、轮询、基于 MSMQ?

欢迎任何指向相关示例代码、入门工具包等的链接:)

最佳答案

如果您使用 WCF,MSMQ 将是传输层(“绑定(bind)”以使用 WCF 术语)并且与您在此处尝试执行的操作并不真正相关(您可以在 NetMsmqBindingWsHttpBinding 与. NetTcpBinding ,仅举几例)。您可以使用轮询或双工绑定(bind),两者都是完全有效的,尽管实现会大不相同。

要实现轮询方法,我建议使用基于 session 的 WCF 服务。只要您在客户端中保留 WCF 服务的代理,您的 session 就会持续,并且您将继续使用相同的代理来获取您的请求的更新,直到它最终返回完成状态。对于客户端和服务来说,这似乎相当简单。

使用双工服务也是一种有效的方法,但如果您从未使用过 WCF,则实现起来可能会更加复杂。使用双工服务,在您的 ServiceContract 的定义中你定义一个 CallbackContract ,这是另一个 ServiceContract您的服务用于将消息发送回客户端。在您的情况下,我认为您需要在 CallbackContract 中进行 2 个不同的操作。 ,一个用于报告每个结果,另一个用于指示已检索到所有结果,以便您的客户知道不再期待任何结果并关闭 channel 。 The MSDN documentation on Duplex services相当彻底,但 WCF 肯定有一点学习曲线。

关于.NET WCF - 在服务器处理时更新客户端 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5837507/

相关文章:

java - 发送图片到Flash客户端。使用什么技术?

c# - 为什么不能推断出嵌套的泛型类型?

.net - 我可以创建一个反向引用匹配相反情况的正则表达式吗

WCF 代理连接打开导致错误

.net - 如何使用 Android 使用 WCF 服务

java - 向 TCP 服务器指示 Java TCP 客户端已完成写入流

c# - 大开关的替代品?

c# - 将 JSON 数据添加到通用集合

c# - WCF : Service receiving "null" string after being sent a full string

java - 保持远程对象更新