这是一个基于我的博客的一个项目,虽然博客根本不必作这么复杂的设计。可是公司有需求,因此先本身弄个项目练练手。项目须要知足下列需求数据库
1.层与层之间须要解耦,在后期上线更新维护时不须要覆盖,只须要更新局部dll便可,也就是插件机制安全
2.代码安全性,公司有找外包公司要些人,可是又不想让他们获得全部代码,就须要利用接口来规范开发。服务器
3.一开始没有完整的需求说明和数据库设计文档。咱们是轻文档开发,也就是说在没有彻底上线以前需求随时可能更改,并且数据库一开始也没有设计好,而是开发一点添加一点,也随时会更换需求。数据库设计
为了保证以上要点,咱们就须要搭建一个很是具备灵活性的系统,对一个刚刚开始参加.net开发工做的我来讲倒是具备很大挑战性,虽然以前也有受太高人指点。测试
在程序设计时,我考虑到以上需求,我大体分了一下这些层。网站
1.实体模型层:CodeFirst实体对象编码
2.数据访问层:DBContext对象,其实在我接触EF以后就对数据访问层的概念就不太同样了,我如今都以为数据访问层都没什么太大必要。由于不须要写Sql语句了,都是lambda表达式。这是我一个疑问,你们能够一块儿讨论下spa
3.数据库访问接口层:规范数据库访问层.net
4.数据库访问层工厂:这里我能够经过反射来反射出数据访问层的实例插件
5.业务逻辑层:业务逻辑代码
6.业务逻辑接口:规范业务逻辑
7.业务逻辑工厂:反射业务逻辑实例
8.MVC:前台展现
1.经过上面咱们能够发现,层与层之间是解耦了,好比说我按照某个层的接口规范写好了一个dll,而后更新好服务器,无需将整个项目编译,也无需将整个项目从新覆盖,只须要修改下反射的配置文件便可,也不会影响到网站的正常运行,这才是我要的效果。
2.接口规范些好后,也无需编码人员将整个项目都拿到手,只要本身按照接口规范写好代码,放到测试环境中一测试就OK了。这样对于保证公司代码安全性仍是有必定做用的。
3.经过CodeFirst咱们能够比较轻松的更换需求,并且也不用一开始就把全部需求罗列出来,而后设计数据库,咱们能够一边作功能的时候一边来增长表。
以上思路应该比较适合大众化,中小项目按照这样的设计应该没什么问题。你们若是有什么好的建议或者发现有什么不对的地方,还请提出来,以避免误导了他人。
Email:luozhiqiang@cidtech.cn