将服务器端计算与客户端可视化连接起来

时间:2013-08-13 15:19:11

标签: javascript python plot visualization data-visualization

我正在研究一个项目,它可以通过某些方法为平原上的点设置动画。我打算在服务器端计算python中的点的移动,并通过javascript库(raphaeljs.com)在客户端进行可视化。

首先我想到了以下内容:运行进程(python)并将点的状态保存到xml文件中,而不是从javascript加载并可视化。现在我意识到它可能会运行无限,因此我需要在可视化部分和计算部分之间进行实时数据交换。

你会怎么做?

1 个答案:

答案 0 :(得分:0)

首先,我建议将JSON而不是XML用于交换格式,在javascript端解析JSON要容易得多。

然后,谈到您的应用程序的体系结构,我认为最好用Python编写服务器Web应用程序来动态生成JSON内容,而不是修改和提供静态文件(至少就是这样的事情是这样的通常做完。)

所以,这给了我们系统的三个组成部分:

  1. 客户端应用(javascript)。
  2. 一个Web应用程序(你喜欢什么框架或库并不重要:django,gevent,甚至Twisted都可以正常工作,以及其他一些)。它应该做的是,首先,在请求时将点状态提供给客户端应用程序,其次,从下一个应用程序接受点状态的更新并将它们存储在数据库中(或者在全局变量中:当运行多进程Web服务器的应用程序应该使用数据库时,单个进程gevent应用程序可能会使用变量,这在很大程度上取决于您如何运行它。
  3. 执行计算的应用程序,通过将其发送到Web应用程序定期发布点状态,可能是POST请求中的JSON正文。由于Web应用程序的典型环境,这个应用程序很可能应该是一个单独的应用程序:通常在Web应用程序中执行后台进程是一个问题,而且,无论如何,这种方式强烈取决于您运行的环境你的应用程序。
  4. 当然,这种架构基于“服务器发布数据,客户端请求数据”模型。该模型简单易行,其主要问题是动画可能不像人们想要的那样平滑。如果某些更改需要紧急更新客户端界面,您也无法立即通知客户端。但是,当javascript客户端在浏览器中运行时,通常很难实现平滑性和即时客户端通知。