应用设想实现01-远程绘图Web显示

需求:不将数据传输到客户端,通过web请求远程绘图,返回图像url显示。

实现:
1.2000年左右就有实现了,当时是基于ISAPI,所有处理代码包括绘图都用VC实现。不过当时的数据是小时采样的时序数据,量不大,可以很容易处理。
**后来windows环境变化,停止了此模式。

2.2010年左右用WCF实现了新方式。用dotNet进行客户端和服务端实现,用C#进行绘图实现,通过WCF通信,不但可以绘图,还可以进行图形的交互处理。
**但是由于WCF的复杂性,而且后期放弃windows平台,也停止了此模式。

插入:
一直测试在客户端进行绘图的可能。早期用java applet,ActiveX控件都可以实现,后期用asp.net、php也可以实现,一直到html5等。客户端越来越方便,甚至可以直接使用第三方绘图库,不需要自己写绘图代码了。
**不过数据情况越来越不适合。首先是数据可能保密,是不允许传输到本地的;其次是数据量也越来越大,不仅有分钟采样,设置有秒采样数据了,请求的量也不能限定,如果是10年分钟采样数据就有400多万个点,传输到客户端绘图也不现实。
****所以当前需求不适合在客户端绘图。

3.因为2013年后放弃windows平台的web实现了,于是需要采取其他新的方式了。最近刚刚完善,基本达到目标了。
感觉其中需要的核心问题就是:用仿照异步模式解决web请求超时问题。以前几乎所有功能都需要自己写代码,但是现在有很多好的处理库,直接调用就行了,很方便。
因为积累了很多年的数据,都是允许调用的。而请求数据量不确定,是允许很大的,必须要应对超时问题。异步可以有多种技术实现。曾经在dotNet中用过Web Service的异步方法,不过感觉客户端是浏览器就会面临很多问题,干脆不试验。当前选择的是web方式就不考虑RPC调用了。
**最后的解决方法是自己模拟,暂时用的是用ajax查询server处理状态。当然可能存在访问量问题,如果用户多了就不行了。不过着用模式的应用是不会有太多用户的,太专业了。而且即使改进,因为服务器用的是tornado,可以尝试长连接估计就行了。

目前采样的技术:
客户端:
PHP/Yii
Javascript
Ajax

Web服务器:
Linux
Apache

数据库服务器:
Linux
mySQL

绘图处理服务器:
Linux
Tornado
Python
Gnuplot

目前运行效果还不错,大约半年分钟数据20万个点,需要2-4秒。当然还有很多细节需要完善。

另外:
需要特别说明的就是Gnuplot。最早时候采样的是用Pandas绘制时序图形,结果调用多了速度变慢,并且会出现类似阻塞的问题。而改用Gnuplot后,不但调用简单了,而且速度非常快。



相同的技术实现了在线绘制数字地震波形的功能。服务器上的数据文件是MiniSeed,使用Python实现的解压缩和输出。效果如图:





更多相关推荐

Tornado应用笔记01-简介

笔者因为工作的原因接触到Tornado(/tɔrˈneɪdoʊ/,龙卷风),在学习的过程中参考不少文章,虽然其中...

继续阅读

Tornado框架01-高性能简介

01-简介Tornado全称TornadoWebServer,是一个用Python语言写成的Web服务器兼Web应用框架,由Fr...

继续阅读

【django】01-连接远程redis

第一步:修改setting配置第二步:编写views代码和添加urls第三步修改远程redis的###redis.conf...

继续阅读

Flask搭建应用实现前后端实践

文章目录web应用搭建前端搭建web应用搭建通过调用flask创建应用实例Flask扩展Bootstrap一般都...

继续阅读

Django笔记01-基础:一个完美主义...

浅谈Web框架一,什么是框架?软件框架就是为实现或完成某种软件开发时,提供了一些基础的软件产品...

继续阅读

01- ajax, 登录验证,json数据...

1、ajax简介  1.向服务器发送请求的途径 2、简介AJAX(AsynchronousJavascriptAndXML)翻译...

继续阅读

Tornado Web学习笔记---写在最前...

Torando是目前比较流行的pythonweb开发框架回想起自己半年前还在搞Flask和Django,现在Torando...

继续阅读

python实现web应用_【技术分享】...

稿费:200RMB(不服你也来投稿啊!)投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投...

继续阅读