为什么选择EJBs
为什么我们需要对应用程序进行分立呢?通常来说,这是一个设计上的好习惯,特别是对于大型的开发计划,清楚的分立应用程序元素,确定哪些是特别针对该程序的,哪些是常用的可以应用在许多程序中的是非常有必要。这种方式推进了软件的重用,缩短了产品的开发周期。
要了解EJBs如何应用在商业环境中,让我们想象这样一种场景。客户需要实现基于目录的在线订单系统。HTML的客户端通过Java Servlet动态的产生,举例来说,客户选特别的商品,那么HTML的搜索页会有Servlet产生。用户输入查询条件并点击“查询”这个按钮。提交的数据透过POST将参数传递到Servlet,用以构建相应的SQL Select语句,然后通过JDBC传递到数据库。数据库处理请求并将结果返回Servlet,Servlet产生查询的结果页。该处理进程如图A。
该应用的最大缺陷是分离了服务器端两个最重要的功能:表示层负责产生客户端HTML和/或者JavaScript,商业逻辑层实现必要的功能如创建,读取,写入,和更新用户数据。这意味着如果封装的不是很好的情况下,每一次客户端的改变都有可能影响到服务器端的功能。
由于封装是面向对象的编程目标,基于一些很好的原因,可以将表示逻辑层和商业逻辑层通过EJBs分离开。同样的情况下,Servlet仍旧是维护表示层的合适选择,将EJBs应用到商业逻辑层。因此,如果站点做了重大的改变,后端的功能不会受到影响。将项目分为几个特定的任务同样使得多人合作项目变得更容易。图B显示了使用EJBs的结构。
图B:表示层和逻辑层完全分离的场景
此外,由于分布式应用程序比那些基于单服务器的应用程序更加复杂,在逻辑上分离不同的功能愈发显得重要。比如说,可能有多个数据库服务器或者多个应用服务器使用循环DNS或者有相似的配置以更有效的处理高压力的,基于WEB的事务处理。在这种情况下表示层可能由一台或多台物理上独立的服务器提供。
------ | ------ |
点击页数,可转到相应的页。 | |
1 2 3 4 5 | 下一页 |
角色和责任 |