文档介绍:
三层架构图三层架构图三层架构图
(User Interface)层的职责是数据的展现和采集,数据采集的结果通常以Entity object提交给BL层处理。Service Interface侧层用于将业务或数据资源发布为服务(如WebServices)。
(Business Logic)层的职责是按预定的业务逻辑处理UI层提交的请求。
(1)Business Function 子层负责基本业务功能的实现。
(2)Business Flow 子层负责将Business Function子层提供的多个基本业务功能组织成一个完整的业务流。(Transaction只能在Business Flow 子层开启。)
,并向上层屏蔽资源的来源。
(1)BEM(Business Entity Manager)ess子层来提供业务需要的基础数据/资源访问能力。
(2)ess子层负责从数据库中存取资源,并向BEM子层屏蔽所有的SQL语句以及数据库类型差异。
DB Adapter子层负责屏蔽数据库类型的差异。
ORM子层负责提供对象-关系映射的功能。
Relation子层提供ORM无法完成的基于关系(Relation)的数据访问功能。
(3)ess子层用于以SOA的方式从外部系统获取资源。
注:Service Entrance用于简化对Service的访问,它相当于Service的代理,客户直接使用Service Entrance就可以访问系统发布的服务。Service      Entrance为特定的平台(如Java、.Net)提供强类型的接口,内部可能隐藏了复杂的参数类型转换。
(4)ess子层用于从配置文件中获取配置object或将配置object保存倒配置文件。
,在这些层之间传递数据。Entity侧层中包含三类Entity,如下图所示:
Aspect贯穿于系统各层,是系统的横切关注点。通常采用AOP技术来对横切关注点进行建模和实现。
Aspect:用于对整个系统的Security提供支持。
Aspect:整个系统采用一致的错误/异常处理方式。
Aspect:用于系统异常、日志记录、业务操作记录等。
。
object 在各个层之间传递数据。
,除此之外,应该使用Entity object传递数据。
(Table)都有一个DB Entity class与之对应,针对每一个Entity class都会有一个BEM Class与之对应。
(如复杂的联合查询)也需要由相应的BEM Class来提供支持。
,可以考虑将Business Function子层和Business Flow 子层合并为一个。
。
         异常可以分为系统异常(如网络突然断开)和业务异常(如用户的输入值超出最大范围),业务异常必须被转化为业务执行的结果。
(该层抛出的异常几乎都是系统异常)。
。比如验证用户的合法性,如果对应的用户ID不存在,不应该抛出异常,而是返回(或通过out参数)一个表示验证结果的枚举值,这属于业务执行的结果。但是,如果在从数据库中提取用户信息时,数据库连接突然断开,则应该抛出系统异常。
,BL层应根据业务的需要捕获某些系统异常,并将其转化为业务执行的结果。比如,某个业务要求试探指定的数据库是否可连接,这时BL就需要将数据库连接失败的系统异常转换为业务执行的结果。
(包括Service层)除了从调用BL层的API获取的返回值来查看业务的执行结果外,还需要截获所有的系统异常,并将其解释为友好的错误信息呈现给用户。
以BAS系统为例。
:
:每个dll的根命名空间即是该dll的名字,。每个根命名空间下面可以根据需求的分类而增加子命名空间,比如,。