前言 html
首先奉上我的网站地址传送门:aehyok.com。前端
aehyok.com的成长之路一——开篇 中主要阐述了本身为何创建本身的网站,以及我的网站的大体方向。web
aehyok.com的成长之路二——技术选型 中主要简单归纳了本身搭建网站过程当中使用或者之后可能使用的技术。数据库
本篇博客主要简单的来介绍一下,本身目前网站的架构,以及本身的一些想法。固然这其中很大程度受益于大神@郭明峰的开源框架以及他的指点。缓存
本人最近也创建了一个QQ技术群,本人我的网站所涉及的全部源码也将会在群内共享。欢迎各位喜欢学习技术的朋友们入住。架构
群帐号为:206058845,记住群验证码为:aehyok。框架
框架项目结构简要说明 工具
1-Infrastructure(基础设施)单元测试
一、aehyok.Utility:通用技术工具类 学习
说明: 分类封装通用的与技术无关的辅助工具类功能
依赖项:无
二、aehyok.Model:各类实体类的定义
说明:一、业务实体模型
二、数据传输模型
三、展示视图模型
依赖项:无
三、 aehyok.Core:aehyok框架核心组件
说明: 1. 定义aehyok框架的核心,是整个框架运行的骨架。
2. 该骨架提供数据存储、日志、缓存、权限等模块的基础接口或基类,不提供具体实现。
3. 业务层依赖于此层的接口及基类进行业务操做,而不依赖于具体实现。
4. 此层定义的接口与基类的具体实现,都是可替换的。以适应不一样的业务对基础模块功能的需求。
依赖项:aehyok.Utility
四、aehyok.Core.Data.Entity:EntityFramework数据存储组件
说明: 1.提供aehyok.Core中定义的数据存储功能的EntityFramework的实现方案
2.数据库初始化策略
3.业务实体类映射
依赖项: 1.aehyok.Utility
2.aehyok.Model
3.aehyok.Core
4.EntityFramework
2-Application(应用的接口和对应的实现)
五、aehyok.Contracts:服务契约层
说明: 包含业务功能的接口的定义
依赖项: 1. aehyok.Utility
2. aehyok.Core
3.aehyok.Model
六、 aehyok.Services:服务实现层
说明: 包含数据功能初始化及服务业务功能实现
依赖项:1. aehyok.Utility
2. aehyok.Model
3. aehyok.Core
4. aehyok.Core.Data.Entity
5. aehyok.Contracts
3-Presentation(各类可视化UI展示层)
七、aehyok.WebMvc和aehyok.Admin.Mvc:先后台Web 展示层
说明: 先后台UI展示层
依赖项:1.aehyok.Utility
2.aehyok.Model
3.aehyok.Core
4.aehyok.Core.Data.Entity
5.aehyok.Contracts
6.aehyok.Services
4-UnitTest
简要说明:
一、面向接口的方式来开发,而后经过IOC来接触模块之间的耦合。
二、aehyok.Core:提供数据存储、日志、缓存、权限等模块的基础接口或基类。
三、aehyok.Core.Data.Entity:EntityFramework数据存储组件,很明显该层是实现aehyok.Core中的数据存储组件的接口和基类。为何这样设计呢?这样就能够很好的被替换掉,好比你如今的项目用的是EntityFramework开发的,项目经理忽然说EntityFramework有这样的的问题知足不了咱们系统,如今决定使用NHibernate,那么如今就只须要将该层进行研究实现,进行IOC注入就能够了,其余层的任何代码都不须要进行修改(本身想的暂时是这样的,不知道实现起来难度到底有多大)。
四、aehyok.Core.Logging.Log4Net:Log4Net日志组件,该层也是实现aehyok.Core中日志组件的接口和基类。一样能够很好的替换掉。能够本身实现,也能够采用其余日志组件NLog等等吧,都是能够的。
五、可能还有会Cache组件、权限组件,固然可能还会有其余的……按道理都是能够被替换的。
六、aehyok.Contracts和aehyok.Services能够说是业务逻辑层吧。实现中调用各组件进行拼装完成须要的方法。供UI层进行调用便可。
七、固然对于UI层的展示考虑最好也是能够被替换的。打个比方:如今后台用的是Bootstrap模版进行开发的,而后忽然有个公司以为这框架很不错,想来买大家的源码,可是他们对Bootstrap不熟悉,或者不想用Bootstrap,想用其余的前端UI框架。不清楚经过MVVM可否实现前端UI的良好解耦。
八、可能还有其余未知的问题吧,暂时考虑的就这么多,还要在之后的实践中不断的思考不断的来完善吧,计划没有变化快,但没有计划怎么来的变化呢?
总结
本身的小站还在持续不断的更新的,虽然更新速度如蜗牛般缓慢,可是网站仍是在一每天的进步,本身也在一点点的积累。以上也只在于技术的学习,而无论其项目大小、技术学习成本等现实因素关联起来,其实我就是为了学习技术,让本身可以进步成长罢了。
本人最近也创建了一个QQ技术群,如今里面人数不是不少,是在写上一篇博客的时候开始加人的。因为本人最近在使用TFS OnLine,看到他对于团队开发项目来讲绝对是利器,想多多的学习了解一下。 本人我的网站所涉及的全部源码也将会在群内共享。群帐号为:206058845,记住群验证码为:aehyok。欢迎各位喜欢学习技术的朋友们入住。。期待咱们的共同成长。同时但愿本身可以一直坚持学习下去。
最后再次奉上我的网站地址传送门:aehyok.com