【问题标题】:How to do full duplex programming with .NET?如何使用 .NET 进行全双工编程?
【发布时间】:2009-06-02 14:09:05
【问题描述】:

在看过 Google Wave 演示后,我想到了将“实时”功能整合到我的 Web 应用程序中,一个用户将能够看到另一个用户正在输入的文本...

除了基于框架如何处理线程的 .NET 中内置的软实时功能...

还有什么我需要的吗? 是否有任何实时 Web 应用程序的模式或架构参考?我应该读什么?

谢谢!

【问题讨论】:

  • 您可能还想将其重新命名为使用 .Net 进行双向通信或使用 .Net 进行全双工编程。与双向通信相比,您并不是真正在寻找实时编程。

标签: .net real-time google-wave


【解决方案1】:

查看WebSync。它是一个 .NET comet 服务器,应该可以满足您的需求。

【讨论】:

    【解决方案2】:

    您可以尝试在 Silverlight 中使用全双工通道。类似于 Java 小程序的想法,但在 .Net 中除外。

    WCF + Silverlight

    【讨论】:

    • 除非你有一个你想提出的替代标准,否则你可能会尝试坚持建设性的 cmets 而不是抱怨
    • @Matthew - 我没有对您的建议进行批评,只是在双向通信需要嵌入式组件作为最佳解决方案的情况下。无意冒犯。
    • 对反击感到抱歉。我明白你对标准的看法。但与此同时,我们采用了一种最初为检索静态内容而设计的协议,并创造了一个可交互的世界。如果我们从不改变底层平台,我们可能不会有太多进展。 (想想 RS-232 和 IRQ)
    • @Matthew,我同意,随着标准中的各种新提案,情况正在变得更好。业务将永远首先满足需求。我想企业推动了标准的发展。有时只是为了进行狂野的西部开发 :) 我害怕“新插件 x”风靡一时并使事情变得更糟。
    • 好消息是 Silverlight 不应该让事情变得更糟。在 Windows 方面,随着时间的推移,它可能会与操作系统合二为一。对于 OS-X 和 Linux,Silverlight 可能会带来更好的 .Net 支持(由 Microsoft 和 Novell 提供支持)
    【解决方案3】:

    不使用 Java 小程序或类似的,您的 HTML/JavaScript 前端将需要轮询服务器以获取相关事件和更改。

    在后端,有多种方法可以实现分布式事件队列或类似的方法,以便在服务请求的各个进程之间共享。

    【讨论】:

    • 为什么要投票? AJAX 是怎么说的?
    • 我的意思是浏览器不能仅仅被神奇地通知服务器端事件。它必须问。
    • 您的 Java 小程序想法与 Silverlight 有何不同,除了他要求的是 .Net 解决方案?
    • “使用不足”,我试图暗示它不太理想。
    【解决方案4】:

    Ajax、SUPXMPP 将在这方面为您提供帮助。还要研究 Twitter 搜索和 Friendfeed 的工作原理。

    【讨论】:

      【解决方案5】:

      Comet,虽然并不总是合适的,但从某种意义上说它是“轮询”,尽管它只在一个可能很长的工作开始时轮询一次;然后服务器保持 HTTP 连接打开,直到它准备好响应。

      根据维基百科的定义: “在 Web 开发中,Comet 是描述 Web 应用程序模型的新词,在该模型中,长期持有的 HTTP 请求允许 Web 服务器将数据推送到浏览器,而无需浏览器显式请求。”

      发现这对于可能需要服务器五分钟才能完成的工作很有用,而不是每 x 秒轮询一次,客户端发出请求,服务器基本上说“等待...”并完成工作完成后返回数据。

      有几个库支持这种类型的 Ajax 实现,包括 Dojo (dojo.com) 和 ExtJS 3.0 (extjs.com)。

      【讨论】:

        【解决方案6】:

        我们开发了一个操作转换引擎,它是支持 Google Wave 的技术后端,并使用 Silverlight 上的 DuplexChannel 进行了同步绘图和文本编辑演示。您可以从http://www.corvalius.com/blog/index.php/technology/announcing-the-availability-of-the-beweevee-sdk-september-ctp/ 下载。

        我们计划为非商业/学术目的完全免费发布 SDK(目前为预览版);因此,您可能会感兴趣。至少您将能够找到一个非常简单的示例,说明如何在源代码(包括小型 WCF 服务器)中为协作应用程序执行全双工。

        【讨论】:

          【解决方案7】:

          因为它是一个网络应用程序,我建议你试试etherpad

          有一个.NET Client example on HTTP APIa page on other examples

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-01-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-17
            • 1970-01-01
            • 2011-10-08
            • 1970-01-01
            相关资源
            最近更新 更多