组件化设计
“软件组件化”是一种理想的软件开发理念,它主张软件产品的开发应当像制造工业产品那样,首先通过专业化分工生产出不同功能的“零部件”,然后再将这些“零部件”合理地组装起来,形成所需的产品。“软件组件化”,真正实现了软件复用和组件化生产,极大节约软件产品的开发时间和开发成本。
组件技术与面向对象的开发方法不同的是,面向对象的技术强调对个体的抽象,组件则更推广了对象封装的内涵,侧重于复杂系统中组成部分的协调关系,强调实体在环境中的存在形式。 为了说明组件化为什么是软件工厂的技术基础,我们先来看看组件的基本属性。
从广义上来说,组件有如下的几个基本属性:
1、组件是可独立配置的单元,因此组件必须自包容;
2、组件强调与环境和其他组件的分离,因此组件的实现是严格封装的,外界没机会或没必要知道组件内部的实现细节;
3、组件可以在适当的环境中被复合使用,因此组件需要提供清楚的接口规范,可以与环境交互;
4、组件不应当是持续的,即组件没有个体特有的属性,理解为组件不应当与自身副本区别。
面向对象
面向对象是一种自下而上的程序设计方法,不像过程式设计那样一开始就要用main概括出整个程序,面向对象设计往往从问题的一部分着手,逐步构建出整个程序。面向对象设计以数据为中心,类作为表现数据的工具,是划分程序的基本单位,而函数在面向对象设计中成为类的接口。
面向对象设计自下而上的特性,允许开发者从问题的局部开始,在开发过程中逐步加深对系统的理解。这些新的理解以及开发中遇到的需求变化,都会再作用到系统开发本身,形成一种螺旋式的开发方式。在这种开发方式中,对于已有的代码,常需要运用Refactoring技术来做代码重构以体现系统的变化。
1.1.1 以SOA体系结构和组件化的设计为主要技术路线
采用SOA架构有利于项目的建设,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
在基于SOA架构的系统中,具体应用程序的功能是由一些松耦合并且具有统一接口定义方式的组件(也就是service)组合构建起来的。
SOA架构模型如下图所示:
本项目将基于SOA架构模型进行系统的规划、设计与建设。
1.1.2 基于J2EE技术体系开发应用系统
技术体系上选用J2EE技术,采用Browser/WebServer/DataBaseServer三层结构进行应用系统的开发。
1.1.3 系统架构采用B/S
本系统架构采用比较灵活的B/S方式实现,浏览器Browser/WEB服务器Server/数据库服务器Database是解决公共信息服务以及交互相应动态服务最适用的一种应用模型。实现了真正意义上的瘦客户,大大简化了应用系统的分发、配置管理和版本管理工作。
1.1.4 构建总线式的应用系统集成环境
服务总线是一种体系结构模式,支持虚拟化通信参与方之间的服务交互并对其进行管理。它提供服务提供者和请求者之间的连接,即使它们并非完全匹配,也能够使它们进行交互,此模式可以使用各种中间件技术和编程模型实现。另外,连接到 ESB 是集成部署决策,应用程序源代码不会受到影响。
如上图,在总线模式中,服务交互的参与方并不直接交互,而是通过一个总线交互,该总线提供虚拟化和管理功能来实现和扩展 SOA 的核心定义。因此 ESB 模式使请求者不用了解服务提供者的物理实现——从应用程序开发人员和部署人员的角度来看均是如此。
总线负责将请求交付给提供所需功能,提供者接收他们要响应的请求,而不知道消息的来源。数据服务总线本身对使用它的服务请求者和提供者均不可见。应用程序逻辑可以使用各种编程模型和技术调用或交付服务,而无需考虑是直接连接还是通过总线传递的。
应用组件和应用功能可根据各类用户的需要,按照统一的规范包装成webService注册到总线上,由数据服务总线统一管理,统一编排,统一提供外部服务。