是否可以使用文本区域进行实时协作?

时间:2012-01-11 14:00:09

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

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

另外,我已经阅读了一些关于运营转型的内容。可以使用.net框架实现吗?

我只是一个初学者,并且对于帮助我实现实时协作的算法知之甚少。任何帮助将不胜感激。

提前感谢你。

3 个答案:

答案 0 :(得分:5)

ShareJS是免费的,使用node.js来实现您的目标,并实现OT2算法

对于.Net,没有开箱即用的运营转型,但您可以查看BeWeeBee SDK,(虽然是商业软件)

答案 1 :(得分:4)

  

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

这实际上取决于您想要提供的用户体验。如果你想为一个用户锁定textarea而另一个用户正在编辑那么这可能不是最好的用户体验,但它绝对相对容易。

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

  

另外,我已经阅读了一些关于运营转型的内容。可以使用.net框架实现吗?

我必须查找operational transformation,它会部分回答有关用户体验的问题 - 它是非阻止的。浏览维基文档时,我会问一个问题:为什么不可能?您可以在所有用户/应用程序之间即时通信,以通知他们更改(如上所述:使用实时 - 网络技术)所以你只需要实现和管理所有聪明的算法:)(我不知道是否有一个组件可以为你管理)

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

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

答案 2 :(得分:0)

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

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

  • 在场:谁在跟你编辑?
  • 协作意识:共享游标和选择等内容?
  • 本地与群组撤消:当用户点击control-z时会发生什么?他们是撤消他们做的最后一个动作,还是撤消其他远程用户的最后一个动作?
  • 历史记录:了解当多人同时进行编辑时,谁做了更复杂的事情。当一个用户点击保存时(如果有保存),他们可能正在保存另一个用户执行的操作。

这些只是协作编辑中除了数据同步之外需要考虑的几个例子。当出现这些问题时,大多数答案都只关注数据同步框架。在Convergence Labs,我们帮助人们设计协作编辑应用程序并实施了数十个此类应用程序。我们已经多次看到,如果你所有的数据同步,用户体验非常差,用户将不喜欢该应用程序。

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