三层架构,够不够---DDD眼中的三层(附C#源代码实现)

本文探讨了三层架构与业务域驱动开发(DDD)的关系,强调以业务域为核心,并提供了DDD实现的三层架构详细设计。文章包括业务域、持久层和测试示例的代码展示,通过Fluent nHibernate和SQLite实现数据层,展示了如何在DDD中应用和理解三层架构。
摘要由CSDN通过智能技术生成

软件复杂度的根本,来源于思维的复杂度。

三层架构

从DDD看三层

DDD的三层实现详细架构

看代码

业务域 (Domain)

持久层 (数据层)

测试和使用的例子

完整代码下载

 


 

 得心应手武器库:

  • Fluent nHibernate

  • nUnit

  • Git (GitHub)

 本文所涉及使用的工具, 见前文: 我的.Net武器库 ------ 新.Net架构必备工具列表

三层架构

相对于目前日新月异的新概念,新名词,三层架构已经算得上元老了。虽仍有争议,但业界更多的是共识。

图1 常用三层的描述图

 

足够简单、清晰,我仍要提醒的是,注意层之间连线的箭头,非常之重要,借用UML的定义,箭头表示依赖关系。也就是说,必须先有数据层,才有业务层,然后才有表现层。这又怎么样,小问题。不,这是一个大麻烦!

从DDD看三层

我们暂时靶这个话题放一放,挑个比较新一点的东西。业务域驱动开发(DDD) 近年也是风生水起,红红火火,但它是什么,是怎么回事,似乎就不如三层架构那么妇孺皆知了。

图2 从DDD的角度看三层架构

 

以业务域为系统的核心,所有其它与业务无关的内容对这个核心来谈,都是外部服务/功能。这里,出于本文说明的需要,独立出了两个较为特别的外部功能,持久层和用户接口。

两个看上去完全不同的架构设计,哪个更对哪个更好?每一个都有大量的拥护者,大量的讨论,互相三间似乎又泾渭分明,至少我们经常看到的文章给我们如此的印象。自然,我们的思考,为什么不能融合在一起呢?其实,它们并不像看起来区别那么大。从名词上,虽然我有意把名称错开,我们也仍能看到之间的对应关系、业务层=业务域,数据层=持久层,表现层=用户接口。当然,这些细节用词的不同仍有必要的,毕竟,它们不完全是一回事。

DDD的三层实现详细架构

好了,抽象的讨论已经足够了,我们也足够糊涂了。细节为王,我们如何实现?来看看这个实际系统的简化架构图。.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
C# WinForm简单三层框架源码共享。 本框架采用三层架构实现,大家可直接在上面扩展,进行自己系统的二次开发等。 框架中数据库字符串的配置在根目录的DBCfg.xml文件中,该文件中部分内容已经加密, 文件中有两个数据库的字符串,实际过程中只用一个即可(案例中是我自己的项目的需求) 系统框架简介: 采用广为人知的简单三层DAL(DBUtility),BLL,UI层实现,习惯开发web的朋友一看就明白了 框架默认提供很多方法,如需添加新的操作表,只需要新建一个类,拷贝下基本的代码即可 同时提供数据库字符串修改窗体,方便您的修改。 运行本框架需要创建一张表 sql如下: CREATE TABLE [dbo].[Infos]( [Iid] [int] IDENTITY(1,1) NOT NULL, [title] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, [details] [text] COLLATE Chinese_PRC_CI_AS NULL, [imgs] [varchar](5000) COLLATE Chinese_PRC_CI_AS NULL, [classify] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL, [publiship] [varchar](30) COLLATE Chinese_PRC_CI_AS NULL, [publishman] [varchar](20) COLLATE Chinese_PRC_CI_AS NULL, [publishtime] [datetime] NULL, [isshow] [varchar](4) COLLATE Chinese_PRC_CI_AS NULL, [istop] [varchar](4) COLLATE Chinese_PRC_CI_AS NULL, [hits] [int] NULL, [notes] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL, CONSTRAINT [PK_Infos] PRIMARY KEY CLUSTERED ( [Iid] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值