【问题标题】:Is real time collaboration possible using a text area?是否可以使用文本区域进行实时协作?
【发布时间】:2012-01-11 14:00:08
【问题描述】:

我正在开发一个需要实时协作的应用程序。我打算使用 cshtml 文本区域来允许用户输入。是否可以使用文本区域实现实时协作?

另外,我读过一些关于运营转型的文章。使用.net框架可以实现吗?

我只是一个初学者,对有助于我实现实时协作的算法了解不多。任何帮助将不胜感激。

提前谢谢你。

【问题讨论】:

    标签: asp.net-mvc-3 razor real-time


    【解决方案1】:

    ShareJS是免费的,使用node.js来实现你想要的,实现一个OT2算法

    对于.Net,没有开箱即用的操作转换,但是您可以查看BeWeeBee SDK,(尽管是商业软件)

    【讨论】:

    • ShareJS 看起来很酷 - 4 行代码来实现这个问题的要求。可惜它不是 .net 解决方案。
    • 那么,刚才BeWeeBee似乎是对的,至少是唯一的.Net可用实现
    【解决方案2】:

    我正在开发一个需要实时协作的应用程序。我打算使用 cshtml 文本区域来允许用户输入。是否可以使用文本区域实现实时协作?

    这实际上取决于您想要提供的用户体验。如果您想在另一个用户正在编辑的同时锁定一个用户的文本区域,那么这可能不是最好的用户体验,但绝对相对容易做到。

    如果您希望两个或更多用户能够同时编辑同一个文本区域,那么使用realtime web technology 在用户之间发送data_changed 事件相当容易,但您需要处理文本区域内容的同步用户之间并处理碰撞检测。这方面的用户体验也复杂得多。

    另外,我读过一些关于运营转型的文章。使用.net框架可以实现吗?

    我不得不查找operational transformation,它部分回答了有关用户体验的问题——它是非阻塞的。浏览 wiki 文档后,我会问一个问题:为什么不可能?您可以在所有用户/应用程序之间立即进行通信,以通知他们更改(如前所述:使用实时- web 技术)所以你只需要实现和管理所有聪明的算法东西 :) (我不知道是否有一个组件可以为你管理)

    对于自托管 .NET 实时 Web 技术,您可能需要查看 SignalRXSocketsSuperWebSocketWebSync

    如果您想更快地启动和运行,您可以查看hosted realtime web technology

    【讨论】:

      【解决方案3】:

      这是一个老问题,但有一些额外的信息可能会有所帮助。正如前面的答案所提到的,基于文本的数据同步有几个选项。其中许多基于Operational TransformationCRDTs。这些方法在多种语言的 SDK 中实现。 (完全披露,我恰好是Convergence 的作者之一)。

      但是,您还需要考虑实施协作编辑所需的其他一些功能。例如:

      • Presence:谁和你一起编辑?
      • 协作意识:诸如共享光标和选择之类的东西?
      • 本地与组撤消:当用户点击 control-z 时会发生什么?他们是在撤消他们所做的最后一个操作,还是其他远程用户所做的最后一个操作?
      • 历史:当多人同时编辑时,知道谁做了什么更复杂。当一个用户点击保存(如果有保存)时,他们可能正在保存另一用户执行的操作。

      这些只是协作编辑中需要考虑的几个示例,而不仅仅是数据同步。当这些问题出现时,大多数答案只集中在数据同步框架上。在Convergence Labs,我们帮助人们设计协作编辑应用程序,并且已经实现了数十个这样的应用程序。我们已经多次看到,如果你只输入数据同步,那么用户体验会很差,用户不会喜欢这个应用程序。

      因此,在选择框架时,请寻找可以帮助您实现实时编辑的其他一些方面的东西,或者至少准备好在您选择的任何工具之上自己实现它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-29
        • 1970-01-01
        • 2016-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多