V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
seraphimhj
V2EX  ›  问与答

Web 页面与 server 间的通信和交互

  •  
  •   seraphimhj · 2015-02-27 22:13:53 +08:00 · 2310 次点击
    这是一个创建于 3561 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一个任务提交的页面, 提交后会由另一个server长时间运行, 期望运行完后页面自动显示完成并回显server 返回的信息, 各位大牛指点下有哪些技术可以达成 #被墙专心讨论技术#

    8 条回复    2015-02-28 00:16:40 +08:00
    lk09364
        1
    lk09364  
       2015-02-27 22:29:03 +08:00   ❤️ 1
    Keywords: ajax 长连接
    http://www.zhihu.com/question/19876749

    除了回答里的4个方法,还有websocket。
    seraphimhj
        2
    seraphimhj  
    OP
       2015-02-27 22:34:45 +08:00
    ok, 我还搜到了WAMP, 但是总感觉这类技术是用来做实时交互的, 这个其实不必那么实时.
    lk09364
        3
    lk09364  
       2015-02-27 22:39:19 +08:00
    @seraphimhj WAMP只是架构网站的平台,不一定涉及实时交互。
    ETiV
        4
    ETiV  
       2015-02-27 23:17:16 +08:00   ❤️ 1
    "长时间运行" 多长算是长?

    长到使用者已经没耐心, 关了页面的话, 这种技术也没必要去实现了吧.

    我之前给我们公司做的是, 长时间运行的任务, 从网页上提交之后交给服务器. 然后提交的人该干嘛干嘛去.

    服务器跑完结果, 再把结果页面的地址通过RTX发消息给发起任务的人.
    maemual
        5
    maemual  
       2015-02-27 23:30:28 +08:00   ❤️ 1
    简单的 ajax 定时从服务器拉一下结果有这么复杂么?
    kn007
        6
    kn007  
       2015-02-27 23:46:10 +08:00   ❤️ 1
    websocket?
    zkd8907
        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中的作业管理器两个模型,根据我们自己的业务做了很大的简化。
    seraphimhj
        8
    seraphimhj  
    OP
       2015-02-28 00:16:40 +08:00
    @zkd8907 长回复, 多谢. 很有价值, 让我想起了 hadoop 的任务界面.

    @ETiV 其实没那么长, RTX 的方式对内部使用来说可以了, 但是对于用户产品可能不那么合适.
    @maemual
    @kn007
    感谢几位建议
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3123 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:13 · PVG 22:13 · LAX 06:13 · JFK 09:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.