.NET逻辑分层架构总结_实用技巧

一.基础知识准备:

  1.层的原则:

  (1)每一层以接口方式供上层调用。
  (2)上层只能调用下层。
  (3)依赖分为松散交互和严格交互两种。

  2.业务逻辑分类:

  (1)应用逻辑。
  (2)领域逻辑。

  3.采用的层:

  (1)表示层(用户接口层):领域无关。
  (2)服务层(应用层):应用逻辑。
  (3)业务逻辑层(领域层):领域逻辑。
  (4)共享层:提供通用代码。
  (5)实现层:提供接口实现。

  4.约定:

  (1)领域层默认采用领域模型
  (2)数据访问层默认需要引用领域模型

二.分层架构

  分层架构的三个基本层次为:表示层、业务逻辑层和数据访问层。如果按照业务逻辑的分类将业务逻辑层分解为服务层和领域层,则三层扩展为四个层次:表示层、服务层、领域层和数据访问层。数据访问层一般必须了解领域模型,这将在层之间产生双向依赖,通常我们有如下两种解决方案:

  1.将领域模型放置在共享层:

  评价:PetShop采用此种模型,但缺点众多:业务逻辑层名不副实,领域模型实为数据模型,保持了层间依赖,引入了更多依赖,明显的数据驱动思想,没有以领域为核心。

  2.将数据访问接口定义在业务逻辑层:

  评价:NopCommerce采用此种模型,即使采用分离出了服务层和采用了资源库命名方式,但NopCommerce不是DDD分层架构,只是采用了领域模型和接口分离原则的普通三层架构。缺点:除了数据房产,没有将其他具体的技术依赖从业务逻辑层中分离。

三.DDD分层:

  DDD分层明确的将业务逻辑层分成了应用层(服务层)和领域层两部分。同时将数据访问和其他接口的具体技术实现部分统一到了基础设施层。

  1.原始的DDD分层:

  评价:优点是将具体技术实现从领域分离,基础设施层复用价值增加。缺点是没有使用共享和实现的概念细分基础设施层,导致在基础设施层中实现仓储会产生反向依赖,虽然在单项目解决方案中没有影响(仅命名空间层次的形式上的依赖),但在.NET多项目解决方案中,只能通过接口分离方式将仓储实现独立成类似数据访问层的方式。

  2.改善的DDD分层:

  评价:基础设施层同时具有共享层和实现层的特征。优点是终于做到了形式上领域为核心且同时解决了在基础设施层中实现仓储不能引用领域模型的尴尬,缺点是同样没有区分共享和实现的概念。

  3.最新的DDD分层:

  评价:优点是这是真正的以领域为核心,再也不用为基础设施层无法引用领域层而再服务层中再次适配了。使用依赖倒置原则彻底各层对具体技术的依赖倒置。缺点,依赖倒置应用过了头,同样是在单项目解决方案中没有问题,但在.NET多项目解决方案中会导致命名空间形式上的双向依赖。基础设施层作为实现层基本上没有了复用的价值。更好的方式是调换图中用户接口层和基础设施层的位置。

  可以根据需要考虑在上图添加适当的共享层。

四.架构的趋势:

  (1)以业务逻辑为核心,更加重视业务逻辑。
  (2)将业务逻辑层的具体依赖划分到一个层次统一管理。
  (3)更加重视降低解决方案内的依赖性而不是解决方案间的代码复用。
  (4)共享层和实现层的分离将会越来越多的体现。例如洋葱型架构。

以上所述就是本文的全部内容了,希望大家能够喜欢。

时间: 2024-08-03 17:41:29

.NET逻辑分层架构总结_实用技巧的相关文章

ASP.NET MVC5 网站开发框架模型、数据存储、业务逻辑(三)_实用技巧

前面项目的层次和调用关系都说明了,关系如下图 采用三层架构的时候,研究过BLL层的必要性,觉得业务逻辑完全可以在controller里实现,没有必要单独做一个项目,另一个分层多了会影响性能.后来我还是把业务逻辑独立出来,原因如下: 业务逻辑写进controller里代码看着比较混乱,时间久了代码容易理不清. 在controller里直接写逻辑重复代码会不较多,开发效率低. 分项目有利于代码重用,有时候可以直接拿到其他项目中稍作修改就可以用. 对于性能我觉得分层多了肯定会有影响,但是不会很大.现在

白刃之战:PHP vs. ASP.NET(节选)-架构比较_实用技巧

   作者:Robert Lair and Jason Lefebvr Intensity Software, Inc.   翻译:EasyChen Exlcsoft.com   概观   开发界正在进行的一个争论是PHP和ASP中哪一个平台更适合网站开发.这场争论由于微软的ASP.net带来的巨大变化而进入了新时期.和ASP 3.0比起来,ASP.NET采用了全新的设计,有着很多新的特性和优点.究竟ASP.NET 会给PHP和ASP之间的争论带来什么样的影响呢?本文将为你提供这个问题的答案的相

.NET Web开发之.NET MVC框架介绍_实用技巧

MVC概念 MVC是一种架构设计模式,该模式主要应用于图形化用户界面(GUI)应用程序.那么什么是MVC?MVC由三部分组成:Model(模型).View(视图)及Controller(控制器). Model即应用程序的数据模型.任何应用程序都离不开数据,数据可以存储在数据库中.磁盘文件中,甚至内存中.Model就是对这些数据的抽象,不论数据采取何种存储形式,应用程序总是能够通过Model来对数据进行操作,而不必关心数据的存储形式.数据实体类就是常用的一种Model.例如,一个客户管理应用程序使

Win 2000下ASP.NET开发环境的配置_实用技巧

Win 2000下ASP.NET的配置 Win 2000(包括Professional,Server和Advanced Server)在默认情况下是不支持ASP.NET的.必须对它进行一个环境的配置. 客户端 SQL Server .NET 数据提供程序 Microsoft 数据访问组件 (MDAC) 2.6 或更高版本 对系统管理信息的访问 Windows Management Instrumentation (WMI)(在 Windows 2000操作系统一起安装)COM+ 服务 Windo

asp.net下计算数字1至10的总和_实用技巧

复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { Response.Write(string.Format("数字1~10总和等于{0}.", Sum(1, 10).ToString())); } private int Sum(int min, int max) { int s = 0; for (int i = min; i <= max; i++) { s += i; } return s;

Asp.Net Couchbase Memcached图文安装调用开发_实用技巧

安装服务端 服务端下载地址:http://www.couchbase.com/download 选择适合自己的进行下载安装就可以了,我这里选择的是Win7 64. 在安装服务端如果发生如下所示的错误,我在win7 64安装的过程中就遇到了. 这个时候可以先撤销安装.通过CMD命令运行regedit.展开HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\ CurrentVersion分支,在窗口的右侧区域找到名为"ProgramFilesDir"

如何轻松搭建Windows8云平台的开发环境_实用技巧

准备工作 在搭建环境前,大家需要在Windows Azure平台注册免费账号,注册完成后,即可获得90天免费使用权限.注册方法请参考:免费试用Windows Azure云平台(无须提供信用卡) 如果你具有微软MSDN Subscription账户,可以根据账户权限申请为期一年的Windows Azure账号.   开发环境_实用技巧-windows实用技巧">   具有Windows Azure账号后,请检查本地机器是否安装了远程桌面应用(Remote Desktop),在随后的文章中,将

asp.net计算一串数字中每个数字出现的次数_实用技巧

接下来拆分这一串字符串,每个字符插入一个表变量中,最后使用GROUP BY进行分组. 复制代码 代码如下: CalNumOfChtInStr SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Insus.NET -- Create date: 2012-02-23 -- Description: Calculate the num

asp.net开发中怎样去突破文件依赖缓存_实用技巧

在Web项目中可以使用Session,Application等来缓存数据,也可以使用Cache来缓存. 今天我们特别关注的是Cache缓存.Cache位于命名空间System.Web.Caching命名空间下,看到这里我们想到的是它在Web项目中使用. 说明:Cache 类不能在 ASP.NET 应用程序外使用.它是为在 ASP.NET 中用于为 Web 应用程序提供缓存而设计和测试的.在其他类型的应用程序(如控制台应用程序或 Windows 窗体应用程序)中,ASP.NET 缓存可能无法正常工