Web应用工作方式
内容在发送到浏览器之前由Web站点动态生成
基于浏览器/服务器模式(B/S)
浏览器
Microsoft Internet Explorer, Netscape Navigator, Safari
服务器
- Web Server
如MS IIS/IBM Http Server/Apache
- Web Application Server
如 IBM WebSphere Application Server
访问Internet的基本机制
客户通过指定URL地址,向位于特定位置的计算机提交文件访问请求
存储请求文件的计算机称为服务器
服务器为向其发起文件服务请求的任何客户提供服务
服务器必须一直运行
Web应用结构组成
Web服务器
是安装在Web服务器计算机上的一个软件包
负责接收用户请求并响应之
HTTP
基于请求/应答模式
是一个支持web浏览器与Web应用之间通信的应用层协议
无状态、面向对象
HTTP会话处理
当用户在浏览器地址栏输入URL时
客户浏览器建立到服务器的TCP/IP连接
浏览器向服务器发送服务请求
服务器发送应答信息给客户
服务器关闭连接
注意
请求页面发送给客户后,服务器通常主动关闭连接,而不管该客户是否会继续向该服务器发送服务请求
工业界对Web应用的关注
Web技术变得越来越重要,Web应用成为未来的标准应用模式
在客户端,IE占有主流地位
在服务器端,J2EE和.NET成为两个主流且相互竞争的Web服务器架构技术
企业级应用开发面临的问题
面向Web环境
分布式、可移植、可装配
旧系统集成支持
满足企业计算要求
- 一致性
- 事务性
- 安全性
要有好的特性
- 可伸缩
- 可扩展
- 易维护
“企业”是指一个为了实现某个共同目的而在一起工作的人或实体的组织
这些组织的形式和大小并不限定,有大有小、是盈利性的或非营利性的、可能是政府机关也可能是非政府机构
一般使用术语“企业”时,极有可能指的就是大型营利性组织,如Intel、GE、Wal-Mart、摩根银行或eBay等等
企业通常都有一些共同的需求,例如信息共享与处理、资产管理与跟踪、资源规划、客户机用户管理、商业机密保护等等
术语“企业软件”就是能够支持企业共同需求的这类软件的总称
企业软件与中间件
在软件开发过程中,出现面向对象开发软件的方法后,可以实现代码重用,但只能部分实现,原因之一是对象都细粒度化,造成对象间紧密耦合状态,从而使得大范围的重用变得很困难
解决途径——设计软件组件
与对象不同,软件组件是在更高的抽象级别中设计的,可以提供一个完整的功能或服务
组件间的耦合更为松散。利用组件的接口,可以将组件迅速组合在一起构建更大的应用程序,这样所用的成本也比较合算
J2EE的优势
提供一套完整的解决所有这些问题的框架方案
提供分布式、可移植组件的框架
为组件与应用服务器提供标准API
简化服务器端中间层组件的设计
对开发者及用户而言
更短的开发时间
可重用组件
JSP(Java Server Pages)
EJB(Enterprise JavaBeans)
更简化的连接
XML,JDBC,RMI-IIOP
客户/服务器结构
“胖”客户端
用户界面和程序逻辑绑在一起,代码难以重用
服务器的数据库必须同每一个活动的客户保持连接,消耗大量的运算资源,随着客户数目的增加性能不断下降,且存在死锁及崩溃的可能
数据模型“紧耦合”在每一客户端,数据库结构改变将导致全体客户端改变,不利于更新和维护
客户端应用程序越来越大,对使用者的要求越来越高
浏览器/服务器模式
WWW浏览方式带来的变化
“Browser-based” 的客户端与 “Internetworking”(网际互连)
计算方式向服务器端的集中转化
客户端
业务数据模型与UI分开,更“瘦”
业务逻辑在中间层
通过连接池,多线程可以处理多客户端
早期应用编程困难且性能比较差
CGI(C/C++, VB, Perl等等),ISAPI ,NSAPI
N层计算模式
从逻辑角度看,系统分成客户端、Web服务器、应用服务器、数据库服务器四层
从物理角度看,应用服务器可以视用户并发数从1到N台进行扩充,以保证客户端用户的响应要求
每一层可以被单独改变,而无需其它层的改变
降低部署与维护的开销,提高灵活性、可伸缩性
引入“瘦客户端”,计算被集中至服务器端,使性能提高成为可能
J2EE的三层结构部件视图
N层计算模型特征分析
优点
应用程序各部分松耦合,各部分的更新相互独立
业务逻辑集中放在服务器上由所有用户共享,使得系统的维护和更新变得简单,也更安全
弱化客户端,计算被集中至服务器端,使性能提高成为可能
数据库不再和每一个活动的用户保持一个连接,而是由应用程序组件负责与数据库打交道,降低数据库服务器的负担,提高了性能
缺点
对企业级应用开发人员要求太高:需熟悉分布式协议(IIOP、IIOPS、HTTP、HTTPS、ISAPI、NSAPI),进行一致性事务处理,负载平衡,考虑安全性……
J2EE的四层模型描述
J2EE规范
一个多层次的分布式应用模型和一系列开发技术规范
简化和加速企业级应用开发
J2EE Blue Prints
是一组集成的企业API库软件和开发工具
参考实现
快速原型化J2EE应用
提供对J2EE平台的操作定义
兼容性测试组件
测试J2EE平台产品是否与J2EE规范兼容
WebSphere Application Server 5.0与J2EE 1.3兼容
WebSphere Application Server 6.0与J2EE 1.4兼容
客户层(Client Tier)
通常是一台桌面计算机,客户可以使用GUI与应用程序进行交互
中间层(Middle Tier)
由表示层和业务层组成
通常由一个或者多个Web服务器和应用服务器组成
应用服务器处理客户的请求,执行复杂的表示形式和业务逻辑,然后将结果返回给客户层
企业信息系统层(Enterprise Information System,EIS)
也称为数据层
是驻留业务数据的地方,在处理业务逻辑时,由中间层访问EIS层
J2EE应用程序构成
J2EE技术提供了一个基于组件的方法来设计、开发、装配和部署企业级应用程序
一个J2EE应用程序可能包含一个或多个EJB组件、Web组件,或应用程序客户端组件
组件(component)是一个应用程序级的软件单元
J2EE组件
客户端组件
客户端应用程序和Applet
服务器端Web组件
Java Servlet和JSP
服务器端的商业组件
Enterprise JavaBeans
Web客户端 vs. Applet
Web客户端
瘦客户
包括Web组件生成的动态页面及服务器返回的页面
Applet
用Java编写的小的客户端程序,嵌入在Web浏览器
两者比较
易用性
Web表现方式丰富、形式多样; Applet交互性强
性能
Web页面更新需要经过servlet从服务器获取;Applet直接访问数据库,可保留静态数据,提高了效率
可维护性和可扩展性
Web易于定制界面;Swing技术开发Applet较为复杂
安全性
Applet需要配置访问策略来控制对本地资源的访问;而Web可通过HTTP来控制
J2EE容器
运行在服务器上的软件实体,为J2EE组件提供执行环境
通过容器,J2EE体系结构能在开发和部署间提供无关性,并在不同类型中间层服务器间提供可移植性
依赖于容器的类型,还可访问一些或全部J2EE API
每个Web组件、EJB或者应用程序客户端组件都必须在执行前被装配到一个J2EE应用程序中,并部署到相应容器
设置并定制由J2EE服务器提供的底层支持
J2EE安全模型:配置Web组件或Enterprise Bean,支持授权访问
J2EE事务管理:让用户指定组成一个事务中所有方法之间的关系,并将这些方法看成一个整体
JNDI寻址服务:为企业内的多重名字和目录服务提供一个统一的接口,以便访问名字和目录服务
J2EE远程连接:管理客户端与EJB间的交互
生存周期管理:管理EJB的创建/删除
数据库连接池:提高数据库访问效率