基于Struts和EJB的Web Service框架研究
2008-01-05 08:22:22 来源:WEB开发网前言
Struts与EJB结合进行B/S模式的开发,解决了“表示”与“业务逻辑”的分离,“业务逻辑”与“数据”的分离问题以及页面的多变性问题,发挥EJB基于组件分布式计算结构的优势,从而大大提高了Web应用的开发效率,数据安全性和可维护性。 EJB组件作为一种成熟的组件技术已经被广泛应用于各个领域,然而随着企业的发展,企业不断实施应用新的系统。如何确保新应用程序与旧应用程序之间的交互,如何将现有的系统集成到新系统?传统的RMI-IIOP和CORBA技术由于自身的局限性,限制了EJB组件与其他类型组件之间的协同工作与信息交互,而Web服务及其相关技术的出现为解决软件开发环境中组件间的互操作问题提供了一种有效手段,它是在Internet上进行分布式计算的基本构造块。为快速高效的开发集成早期应用程序的新系统,我们需要为Web服务构建Struts应用系统。
1、Struts与EJB结合B/S的开发模式
1.1、MVC模式
MVC(Model/View/Controller)模式最早是在Smaltalk中出现的。MVC包括三类对象,简单地说,Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。
MVC设计模式中的“模型”指的是真正执行任务的代码。在模型同界面分离的情况下,代码即可实现可治理性和可重用性。模型通常被称为“业务逻辑”。所谓“视图”就是使用界面,界面的每一部分都只能包含采集数据的足够逻辑,并把它传递给设计模式中的其他组成部分以进行处理。“控制器”控制着模型和视图之间的交互过程。它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型。
在jsp开发中,最长使用Model2。Model2实际上就符合MVC模式,其中各组件的关系如图1所示。
图1:Model2中各组件的关系1.2、Struts+EJB开发模式
Struts是一种符合MVC模式的框架。Struts采用JSP作为MVC的视图,java Servlet作为控制器,JavaBean作为模型。Struts的处理过程如图2所示。
图2:Struts+EJB的MVC首先,控制器(Action Servlet)进行初始化工作,读取配置文件(struts-config.xml),为不同的Struts模块初始化相应的ModuleConfig对象。控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,假如没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否则控制器将请求分发至具体Action类进行处理。在控制器调用具体Action的Execute方法之前,ActionForm对象将利用Http请求中的参数来填充自己。Action要处理的业务逻辑封装在JavaBean中,通过JavaBean调用EJB以完成业务处理。Action执行完后返回一个ActionFroward对象。
2、简单的Web服务体系结构
当您要将企业应用程序转变成与 Web 服务一起使用时,最简单的途径就是将单个操作与单个的企业服务结合在一块,如图3所示。
图3:简单Web服务体系结构在这种设计方法中,实现业务逻辑的服务与实现数据检索的服务是混合在一起的。这样的一种 Web 服务可以很轻易从已有的业务组件中开发出来。然而,它有很多的缺点:对用户没有提供统一认证,提供者与订阅者耦合不紧,业务逻辑没有重用。简而言之,对于一个连贯的解决方案来说这并不是一个非常好的体系结构。
3、采用 Struts的 Web 服务
前面讲过,Struts 架构清楚地区分开了视图、控制器以及模型。模型包含所有必须的业务逻辑,从存储数据仓库中检索数据。您可以构建一个简单的 Web 服务层——称为 WSManager 层——这样的模型可以提供 Web 服务也可以订购 Web 服务。使用这种体系结构的应用程序将基于组件开发的最佳点与Internet结合在了一起,如图4所示。
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››Struts2配置文件中redirect传递中文参数乱码的解决...
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
更多精彩
赞助商链接