在我的架构经验小结(三)-- 深入三层架构 一文中,我们详细的讨论的三层架构,本文将介绍如何将DataRabbit融入到三层架构中的经验。
DataRabbit包括三个项目:DataRabbit.Basic、DataRabbit、DataRabbit.Application。它们的层次关系如下:
![](https://i-blog.csdnimg.cn/blog_migrate/b266dfedfb04cb9a2a9525191fe47e31.jpeg)
DataRabbit.Basic提供了一些最基础的元素定义,比如IsmartEntity接口、EntityAttribute特性等。
DataRabbit是DataRabbit框架的核心,所有的数据访问器(Accesser)都在其中定义和实现。
DataRabbit.Application主要是为了方便应用而做的一些封装,如TransactionScope、TransactionScopeFactory等。
通常的三层架构包括:UI层、BL(业务逻辑)层、数据访问层(对应图中的BEM层)。Entity层不属于三层架构(为此我将其称为“侧层”),但是各层之间通过Entity object在来传递数据。所以,UI、BL、BEM都依赖于Entity侧层。
Entity侧层需要引用DataRabbit.Basic程序集来实现其中的IsmartEntity接口以使得Entity具有“Smart”的能力。注意,Entity侧层不需要引用DataRabbit、DataRabbit.Application程序集。
BEM层即通常的数据访问层,由于它需要提供核心的数据访问能力,所以它肯定依赖于DataRabbit程序集,它借助于DataRabbit来实现数据访问。另外,由于BEM通常都需要在事务上下文中执行,所以,它需要使用到DataRabbit.Application中定义的TransactionScope类。
BL层用于开启一个事务、并执行一个完整的业务流程,所以它需要依赖DataRabbit.Application。特别要注意,BL层不需要引用DataRabbit.Basic和DataRabbit程序集。
下图简明地反映了将DataRabbit融入到三层架构后的依赖关系:
![](https://i-blog.csdnimg.cn/blog_migrate/361b88cc195f89573143113226bdac5c.jpeg)
我在实践中,要求严格遵守上述的依赖关系,不得出现跨层调用或图中未指出的依赖,这对整个系统的结构维护是非常关键和有利的。
(插一点题外话,有很多朋友要求给出一个关于使用DataRabbit的完整示例,非常感谢我的朋友getsun已经帮我完成了这件事情,大家可以到此下载示例的所有的文档和源码。)
转到:DataRabbit 轻量的数据访问框架 -- 序
DataRabbit包括三个项目:DataRabbit.Basic、DataRabbit、DataRabbit.Application。它们的层次关系如下:
![](https://i-blog.csdnimg.cn/blog_migrate/b266dfedfb04cb9a2a9525191fe47e31.jpeg)
DataRabbit.Basic提供了一些最基础的元素定义,比如IsmartEntity接口、EntityAttribute特性等。
DataRabbit是DataRabbit框架的核心,所有的数据访问器(Accesser)都在其中定义和实现。
DataRabbit.Application主要是为了方便应用而做的一些封装,如TransactionScope、TransactionScopeFactory等。
通常的三层架构包括:UI层、BL(业务逻辑)层、数据访问层(对应图中的BEM层)。Entity层不属于三层架构(为此我将其称为“侧层”),但是各层之间通过Entity object在来传递数据。所以,UI、BL、BEM都依赖于Entity侧层。
Entity侧层需要引用DataRabbit.Basic程序集来实现其中的IsmartEntity接口以使得Entity具有“Smart”的能力。注意,Entity侧层不需要引用DataRabbit、DataRabbit.Application程序集。
BEM层即通常的数据访问层,由于它需要提供核心的数据访问能力,所以它肯定依赖于DataRabbit程序集,它借助于DataRabbit来实现数据访问。另外,由于BEM通常都需要在事务上下文中执行,所以,它需要使用到DataRabbit.Application中定义的TransactionScope类。
BL层用于开启一个事务、并执行一个完整的业务流程,所以它需要依赖DataRabbit.Application。特别要注意,BL层不需要引用DataRabbit.Basic和DataRabbit程序集。
下图简明地反映了将DataRabbit融入到三层架构后的依赖关系:
![](https://i-blog.csdnimg.cn/blog_migrate/361b88cc195f89573143113226bdac5c.jpeg)
我在实践中,要求严格遵守上述的依赖关系,不得出现跨层调用或图中未指出的依赖,这对整个系统的结构维护是非常关键和有利的。
(插一点题外话,有很多朋友要求给出一个关于使用DataRabbit的完整示例,非常感谢我的朋友getsun已经帮我完成了这件事情,大家可以到此下载示例的所有的文档和源码。)
转到:DataRabbit 轻量的数据访问框架 -- 序