有一个任务提交的页面, 提交后会由另一个server长时间运行, 期望运行完后页面自动显示完成并回显server 返回的信息, 各位大牛指点下有哪些技术可以达成 #被墙专心讨论技术#
1
lk09364 2015-02-27 22:29:03 +08:00 1
|
2
seraphimhj OP ok, 我还搜到了WAMP, 但是总感觉这类技术是用来做实时交互的, 这个其实不必那么实时.
|
3
lk09364 2015-02-27 22:39:19 +08:00
@seraphimhj WAMP只是架构网站的平台,不一定涉及实时交互。
|
4
ETiV 2015-02-27 23:17:16 +08:00 1
"长时间运行" 多长算是长?
长到使用者已经没耐心, 关了页面的话, 这种技术也没必要去实现了吧. 我之前给我们公司做的是, 长时间运行的任务, 从网页上提交之后交给服务器. 然后提交的人该干嘛干嘛去. 服务器跑完结果, 再把结果页面的地址通过RTX发消息给发起任务的人. |
5
maemual 2015-02-27 23:30:28 +08:00 1
简单的 ajax 定时从服务器拉一下结果有这么复杂么?
|
6
kn007 2015-02-27 23:46:10 +08:00 1
websocket?
|
7
zkd8907 2015-02-27 23:48:19 +08:00 2
0、我们这里一般称这种场景叫Job,跑超长时间的Job一般会创建一个Job Manager来管理(以C#为例);
1、每次需要跑Job的时候,不管是怎么样的Job,都需要包装在一个继承IJob对象中,IJob中需要实现几个接口,比如Job本身的任务、成功的委托(回调)、失败的委托、Progress的委托、超时设置、异常邮件、优先级、起止时间之类的。 2、一般在用户点击完某个按钮以后,后台便会创建相应的Job对象,然后将对象放进Job Manager中,Job Manager会立即返回一个Job ID(保存在数据库中)返回到前台,前台根据显示的ID指引用户去Job Manager中监视Job的执行情况。 3、Job Manager会根据Job的信息安排执行的时间、优先级,并更新数据库中对应Job的信息。 4、终端用户可以在Job Manager中监视相关的Job执行情况,输出日志等信息,也可以对Job进行相应的调度,比如强制启动、强制关闭之类的。 5、Job执行完毕以后会将输出文件、日志等信息通过Job Manager保存到指定的位置,用户可以在线浏览也可以下载归档。 6、部分Job会在执行的过程中发送邮件,不过这个不归Job Manager管理,只需要在相当的逻辑实现里写就行了。 7、这个设计在我们的系统中使用效果还不错,不过也不是原创的,参照了.Net ThreadPool以及Oracle PeopleSoft中的作业管理器两个模型,根据我们自己的业务做了很大的简化。 |
8
seraphimhj OP |