【发布时间】:2012-01-11 14:00:08
【问题描述】:
我正在开发一个需要实时协作的应用程序。我打算使用 cshtml 文本区域来允许用户输入。是否可以使用文本区域实现实时协作?
另外,我读过一些关于运营转型的文章。使用.net框架可以实现吗?
我只是一个初学者,对有助于我实现实时协作的算法了解不多。任何帮助将不胜感激。
提前谢谢你。
【问题讨论】:
标签: asp.net-mvc-3 razor real-time
我正在开发一个需要实时协作的应用程序。我打算使用 cshtml 文本区域来允许用户输入。是否可以使用文本区域实现实时协作?
另外,我读过一些关于运营转型的文章。使用.net框架可以实现吗?
我只是一个初学者,对有助于我实现实时协作的算法了解不多。任何帮助将不胜感激。
提前谢谢你。
【问题讨论】:
标签: asp.net-mvc-3 razor real-time
我正在开发一个需要实时协作的应用程序。我打算使用 cshtml 文本区域来允许用户输入。是否可以使用文本区域实现实时协作?
这实际上取决于您想要提供的用户体验。如果您想在另一个用户正在编辑的同时锁定一个用户的文本区域,那么这可能不是最好的用户体验,但绝对相对容易做到。
如果您希望两个或更多用户能够同时编辑同一个文本区域,那么使用realtime web technology 在用户之间发送data_changed 事件相当容易,但您需要处理文本区域内容的同步用户之间并处理碰撞检测。这方面的用户体验也复杂得多。
另外,我读过一些关于运营转型的文章。使用.net框架可以实现吗?
我不得不查找operational transformation,它部分回答了有关用户体验的问题——它是非阻塞的。浏览 wiki 文档后,我会问一个问题:为什么不可能?您可以在所有用户/应用程序之间立即进行通信,以通知他们更改(如前所述:使用实时- web 技术)所以你只需要实现和管理所有聪明的算法东西 :) (我不知道是否有一个组件可以为你管理)
对于自托管 .NET 实时 Web 技术,您可能需要查看 SignalR、XSockets、SuperWebSocket 或 WebSync。
如果您想更快地启动和运行,您可以查看hosted realtime web technology
【讨论】:
这是一个老问题,但有一些额外的信息可能会有所帮助。正如前面的答案所提到的,基于文本的数据同步有几个选项。其中许多基于Operational Transformation 或CRDTs。这些方法在多种语言的 SDK 中实现。 (完全披露,我恰好是Convergence 的作者之一)。
但是,您还需要考虑实施协作编辑所需的其他一些功能。例如:
这些只是协作编辑中需要考虑的几个示例,而不仅仅是数据同步。当这些问题出现时,大多数答案只集中在数据同步框架上。在Convergence Labs,我们帮助人们设计协作编辑应用程序,并且已经实现了数十个这样的应用程序。我们已经多次看到,如果你只输入数据同步,那么用户体验会很差,用户不会喜欢这个应用程序。
因此,在选择框架时,请寻找可以帮助您实现实时编辑的其他一些方面的东西,或者至少准备好在您选择的任何工具之上自己实现它们。
【讨论】: