- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分层架构与业务逻辑实现方式
分层架构与业务逻辑实现方式一、分层架构在当今软件系统中,常用的软件架构思想就是分层,分层思想是现代软件架构的主要思想。无论是企业级应用系统(如:CRM,ERP,OA,电子商务平台),专用软件(如:OS、SVN、IDE 等),还有协议之类(TCP/IP,OSI等) 绝大部分都采用分层架构思想进行设计的。分层(Layer)不一定就是人们常说的二,三层,多层系统,因为这些说法都是分层架构的一些具体表现形式,分层是一种设计思想,也可以称之为一种软件架构模式(Pattern),这种思想的核心在于:划分系统的职责(Responsibility),如果这个系统的职责你分析清楚了,你的基于设计思路差不多就定下来了。你可以去看看,很多的现在代软件,不是一定是web方面。例如:SVN这样的源代码管理软件、图一:SVN架构图.NET Framework也是分层,Eclipse也是,TCP/IP更加是,还有像操作系统(OS)、编译器(Compiler),很多流行框架(Framework)也是分层。其实,MVC不也是分层,也就是把模型(Model)、视图(View)、控制器(Controller)三个不同职责分开。那我们看看今天的企业级应用系统(很多说是web项目,其他我不认为是这样,因为web只是一种外在表现形式,我们可以用desktop程序,flash等作为表现形式),企业级应用系统很多人一说就是三层架构,其实确实也是这样的。即:表示层,业务层,数据层。当然还有其他的分层,如:表示层,服务层(服务外观层),业务逻辑层,数据映射层,数据层。也有分成:表现层,中间层,数据访问层等等。(注意这些都是逻辑上分层结构一般用Layer,物理上的分层结构,一般讲的是部署结构一般用tier)总体上都可以看成是三层:表现层,业务逻辑层(也可以说是领域层或领域逻辑层),数据层。像Spring,Structs、ORM等一些框架,他们都是在不同的层上的相关实现技术。二、业务逻辑几种实现方式现在我们再看看,企业级系统中最核心是哪一层?肯定是业务层,因为企业级系统主要是与业务打交道(其实几乎所有软件都是实现业务,企业级系统业务逻辑主要偏向于商业逻辑,其他系统,像游戏,自动化控制、支撑系统等把业务看成是算法),而且业务是每个系统都不尽相同的。“业务逻辑是最没有逻辑的东西”[Fowler PoEAA,2003]。而且企业级系统的变化与改变大多都在业务层上。那么,做好企业级系统,首先主要分析好业务系统。你可以看看,现今所有的框架在整体结构(spring,structs,等要求系统按MVC结构来开发),表示层(jquery,extjs等),与数据层(ORM之类)做得最多,有没有业务的框架?(有,但是很少,而且只能是业务比较有规律的地方,像一些财务系统,有些权限系统,当然还有工作流系统)因为业务逻辑每个系统都很可能不一样,没办法通用。那么有什么办法以比较好的方式实现业务逻辑呢。现在终于说到主要问题 上来了:也就是业务逻辑(Business Logic)的实现方式,也叫做领域逻辑(Domain Logic)的实现方式。一般来说,有以下几种:1.事务脚本(Transaction scripts)2.领域模型(Domain Model)3.表模块(Table Module)4.活动记录(Active Record)我们用得最多就是事务脚本方式(像微软的Petshop4.0,很多国内的三层结构代码生成工具生成的系统,而且这种方式很多公司,很多企业级的项目都在用,还有一些框架引导你用这种方式实现)。这种方式最大的特点就是:简单实用。为什么叫事务脚本(Transaction scripts)呢?也就是实现一个功能,就直接写一个过程(方法),系统的业务就是分散在一个个这样的过程里,像早期用ASP做的大部分系统,一些使用存储过程系统等,尤其是使用存储过程系统,所有业务逻辑都写在存储过程里,很明显的事务脚本实现方式。想一想,我们在业务层实现一个业务时,一般就是这么做的,要实现一个什么功能,在脑子里想一想,然后找到那个对应的类,然后再定义一个方法,加上一堆参数。就开始写这个方法的实现代码,要是逻辑复杂点,这方法里一堆ifesle,是不是?如果逻辑不复杂,这种实现到没什么问题,也很方便的。而且,有时候,发现一个类里好多方法,而且大部分是public的。有时候仔细看看,这个类已经不再是按面向对象方式来实现,虽然你用的是OO语言(java,C#,Ruby等),也用了类,接口,继承、多态等技术手段,但是你是否发现系统中对象之间的协作是多么难,甚至你都觉得系统都不存或很少有几个对象协作完成一件事情的,有时你会迷惑很多业务层的类是否应该直接定义成静态类就可以了,根本不需要实例化成一个对象。你还发现,有些方法(功能职责
文档评论(0)