- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MVC的多层架构实例
多层架构是什么?
多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为
主的应对策略,关于多层架构的标准,我认为有一句话是比较有代表性的“每一层都可以单
独部署”,最传统,最简单的就是从三层开始的:
将整个项目自下而上的分为:数据持久(数据访问)层,逻辑(业务)层,UI(展现)层。
数据访问层:负责将数据持久化响应的数据存储设备上,如DataBase,Txt,Excel等。
业务逻辑层:负责处理为满足软件需求而订制的一系列的逻辑与业务,如用户在前端下
订单之后,整个业务流可能涉及 到,获取用户信息,获取商品信息,获取购物车信息,验
证商品可购买数量是否满足本次购买,针对用户身份产生不同的优惠策略,同时会验证
Cookie,Session等端产生数据的有效性,最终才会产生订单,而订单产生之后会涉及到仓储
物流等一系列的Erp系统业务,所有的这一套都属于“下订单”这一需求的业务逻辑。
展示层:负责与用户交互的界面,良好的用户体验多是使用在这里。
学习过Petshop的话,对于三层都不会陌生:
但是随着业务的复杂每一层都会有自己的进化,最终有了无数附加在三层之上的框架与
开发思想。
MVC与MVP:
首先我一直认为这两种事属于展现层的,“展现层MCV”,“展现层MVP”。
然后我们站在展现层的角度思考一下“Mvc”与“MVP”。
Mvc:分为model,Controller,View,相信大家对于他已经很熟悉了,在此不再累述。
MVP:MVP有Model-Presenter-View三个层次
业务逻辑:
从描述上可以看的很清楚,整个自上而下的结构,最复杂,最可能失控的就是业务逻辑
层,因为其中包含着许多的不可控因素,每个行业领域的需求都有可能包含自身的领域知识。
于是在之后的多层架构发展构成当中,更多的变化与智慧是体现在这里。
领域驱动:限于本人才学不能在这里分享太多,以防误导大家,想了解更多可参考园子
里的其他大牛,其实没有3,5 年相关经验是很难理解的,个人感觉如果你不理解的话也不
会对你有什么影响,因为领域驱动是建立在良好的面相对象分析,边界划分基础之上的,在
学习的过程当 中已经能帮助你去学习到足够多的知识了,最终到不到山巅其实已经无所谓
了。
简单的说,这个思想最重要的是以业务领域为核心进行发散,期望在变更程序的其他部
分,不会影响到领域模型,也就是那句话为了“复杂的系统应用程序中业务规则行为方式(就
是“领域逻辑”)是会经常变化的,我们要去拥抱这种变化”。结构图:
CQRS:是指命令查询职责的分离,是一个小的模式形态,该模式的关键在于:“一个方法
要么是用来改变某个对象的状态的,要么就是返回一个结果,这两者不会同时并存”。将整
个系统分拆为两个部分:
Commands (命令) - 改变某一个对象或整个系统的状态(有时也叫做 modifiers 或者
mutators)。
Queries (查询) - 返回值并且不会改变对象的状态。
架构图:
不管 DDD 也好,CQRS 也好,其实这两种都不会100%适合所有的项目架构的,这就需
要架构师结合项目本身特点及需求有所选择,但是其中的思想我们可以运用在项目的任何地
方。
基于消息的分布式:
其实不管使用怎样的架构,加入怎样的架构思想(soa ),核心或者是开发者最想达到的
就是层次,系统之间的解耦,复杂的东西没人会喜欢。
随着系统的发展,我们的程序会涉及到多台服务器,多种终端,同时为了解耦我们引入
了基于消息的分布式架构。
首先,所以系统的通信基于消息,逻辑联系不会涉及到具体的业务实现,同时消息的
递更加的廉价可适配多种终端。
其次,由于所用逻辑只是基于消息实现,迭代的成本也会相对于其他耦合项目更快更方
便。
展示层:
随之Web2.0 的到来单一页面展示的信息也更加的丰富,Ajax ,js 的流行也使得Ui 端的
操作也愈加变重,于是大家有期望以一种工程的思想去拥 抱这种变化,于是MVVM,js 的
Mvc 框架陆续出现。同时随着移动互联网的兴起,不同终端对于系统的对接也非常重要,于
是我们考虑在Ui 与Logic 之 间引入Application 或Service 层应对不同终端配置。
如:我们在Client Presenter Layer 上加入WCF 适配多
原创力文档


文档评论(0)