Board logo

标题: 延续、Web 开发和 Java 编程(1) [打印本页]

作者: look_w    时间: 2018-7-16 12:27     标题: 延续、Web 开发和 Java 编程(1)

一般的 Web 开发有时候很有趣,但是通常却是令人烦恼的。Java Web 开发人员要花费很长时间来提供无状态模型,但是产生的性能和部署的简单性使得这种努力是值得的。在本文中,我将讨论一种完全不同的 Web 开发方式,称为延续服务器(continuation server)。延续服务器提供了一个有状态的编程模型,同时又没有舍弃无状态所固有的可伸缩性,从而使 Web 应用程序开发更加容易。
Web 的出现当 20 世纪 90 年代中期整个行业转向 Web 开发时,软件开发人员们欣喜若狂。与 “终端加主机” 模式相比,我们现在构建的客户机-服务器应用程序对用户更友好,但是也有几个问题困扰着我们:
客户机-服务器计算仍然向前发展。公司常常是根据比较低的软件和硬件开销来做出财务决策,但是在进入生产阶段之后管理开销会大大增加。到了 1995 年,客户机-服务器模型需要进行重大的改进,而且这种改进确实出现了。
进入 Web 开发Web 开发在 20 世纪 90 年代中期迅速发展起来。由于 Java 语言的出现,开发人员可以用新功能来构建分布式 Web 应用程序,同时解决了最严重的客户机-服务器问题。这些新功能包括:
性能、可伸缩性、可管理性和可移植性都大大提高了,互联网革命因此进入了快车道。但是,您必须面对一些重要的问题。
不是乌托邦无状态(stateless)这个简单的单词将沉重的负担从系统转移到了开发人员身上。其后果是不容质疑的:尽管由于不必为每个用户维护一个服务(或 servlet),而获得了很好的可伸缩性;但是,对状态进行管理的责任从编程语言转移到了开发人员身上。目前,可以将 Web 开发看成一系列无状态的请求,见图 1:
图 1. Web 应用程序由请求/响应对组成采用这种模型,浏览器得到了严格控制。应用程序只对浏览器发出的请求进行响应。如果请求是小型的独立请求,那么这个模型是有效的;但不幸的是,对于驱动有多个应用组成部分的 Web 应用程序,它是不合适的。最常见的例子是在线购物。点击 Submit 按钮两次,常常会意外地重复订购同一商品。以后当您发现购物车中有重复的商品时会大感意外。
向用户提供有状态体验的方法通常是:将与一次交谈相关的所有数据放进一个会话中,并用 cookie、隐藏字段或 URL 变量在客户机上标识用户会话。对于每个新的请求,必须依次执行以下步骤:
我对这个问题说得太轻描淡写了,因为使用无状态模型来模拟有状态应用程序可能造成更严重的问题。最严重的问题从 Web 开发刚出现时就存在了,就是如何处理 Back 按钮。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0