1、前言web
做为小菜鸟第一次写博客的我还有点小激动,最近开始打算着手写一个属于本身架构。算下来差很少最近花一周多的下班时间了来写这个框架,原本想总体架构开发完成测试完成后才写博客,怕本身没时间或失去动力,就先把本身架构设计拿出来分享一下,在下一章我会把总体代码公布出来,总体代码。数据库
在刚开始搭建框架时,首先考虑的是简单轻巧结构清晰,此次搭建大多也是靠着本身想象去设计,其中也有大牛的参考,无论作得怎么样,这也是对本身技术能力的提高(从小菜鸟到菜鸟的过程,^_^)相信本身之后会作得更好。也但愿大牛们和大大牛们的指点。不要骂小菜鸟哟,个人当心灵是很脆弱的哦!O(∩_∩)O哈哈~废话很少说了,开始进入主题。api
2、结构图缓存
上图是本项目框架RDF的总体架构,在每一层模块中都只写了基本结构,只简单的标明了他们的关系,详细将在下面介绍。架构
上图是在项目中的RDF的架构图。mvc
3、总体结构说明框架
如今开始从下往上的介绍:测试
一、Infrastructure(基础设施层)
网站
RDF.Infrastructure:这个类库提供了总体架构的基础核心功能,主要用于与数据有关的操做,例如数据库、缓存、mongoDB等。这里Orm框架我用的是SqlSugar,很是轻巧的一个Orm框架,你们有兴趣也能够去官网看一下。这里提供了公共的仓储封装了经常使用的方法和缓存,提供了Aop事务拦截器的特征。这里不进行业务代码编写,只提供核心基础模块的调用,这里能够独立的封装为dll来调用。spa
二、Domain(业务核心层)
RDF.Domain:这个类库主要用于业务最核心,最基本的业务逻辑。这里主要以大模块和小的子模块开发为主,子模块主要实现了基础设施层的仓储的公共方法,每一个小模块的还能够实现本身的方法逻辑。而大模块实际就是用于处理业务的逻辑,只不过这里实现核心业务,这里操做会调用到不少子模块根据业务复杂度,若是之后要修改一个功能模块就不须要修改子模块,只须要找到相对应的业务模块(主模块)进行修改,主模块就是业务流程的处理,能够根据本身的需求进行模块范围的划分。
三、Application(应用层)
RDF.Web.App:这个类库主要对核心业务进行二次处理,这里主要是接受展现层的数据进行与http相关的处理,例如webfrom或mvc或api调用,而后传给核心业务类,根据核心业务的操做进行响应。
四、Common(公共设施层)
4.一、RDF.Common:这个类库主要为整个项目提供的公共操做方法,还有log日志记录,这里日志我用的是Nlog,提供了日志拦截器特征,只要打上标签就能够记录该方法可能会出现的异常,至关于之前的异常捕获并处理,这里的处理只须要打上标签输入可能抛出异常的消息并存入数据库和日志文本,可根据配置进行存储,还能够记录该方法是某某什么时间开发的,这样方便找到维护人员进行维护。(注:这里的日志特征和事务特征都是使用的动态接口aop。)
4.二、RDF.Model:这个类库提供了数据库实体和其它的定义,这里的实体用的是T4模板生成。
五、Presentation(展示层)
RDF.Mvc.Site:网站的展现层,配置了autofac进行依赖注入和aop的操做。
4、总结
这个项目结构只是最第一版本,在下一章开源时,以权限架构为完成目标分享,在代码逐步完成中和测试中,后续框架不合理部分将会重写,架构和代码完善后将会写T4来生成架构。