ASP.NET MVC5网站开发文章管理架构(七)
一、总体说明
先看一下文章管理设想要实现的功能:
再看一下类图
这里category是栏目;commonmodel是公共模型;article是文章;attachment是附件;
commonmodel是内容管理这块抽取出来的公共部分,像文章,咨询甚至产品都有一些共同的内容这里把它单独提取出来作为一个类。commonmodel可能包含一片文章,包含一组附件,包含一系列评论,他们之间的关系类图中已经表示出来。
二、搭建架构
这个顺序根以前一样
1、idal
在idal添加接口interfacecommonmodelrepository,其实只是继承自interfacebaserepository,没有添加任何其他内容。
namespace ninesky.idal { /// <summary> /// 公共模型接口 /// <remarks> /// 创建:2014.02.23 /// 修改:2014.02.28 /// </remarks> /// </summary> public interface interfacecommonmodelrepository:interfacebaserepository<models.commonmodel> { } }
再依次添加interfacecategory,interfacearticle,interfaceattachment,方式和公共模型接口相同。
2、dal
dal中是对idal接口的实现,还是从commonmodel开始,先添加commonmodelrepository,也是跟原来一样直接继承没有什么代码。
namespace ninesky.dal { /// <summary> /// 公共模型仓储 /// <remarks> /// 创建:2014.02.23 /// </remarks> /// </summary> public class commonmodelrepository:baserepository<models.commonmodel>, idal.interfacecommonmodel { } }
然后依次添加categoryrepository,articlerepository,attachmentrepository。
3.ibll
这次先从interfacecategoryservice开始,interfacearticleservice,interfacecommentservice,interfaceattachmentservice。interfacecommonmodelservice内容较多放在最后。
interfacecategoryservice
具体功能会在做栏目的时候再写,这里暂时空着。
namespace ninesky.ibll { /// <summary> /// 栏目服务接口 /// <remarks> /// 创建:2014.02.23 /// </remarks> /// </summary> public class interfacecategoryservice:interfacebaseservice<models.category> { } }
4.bll
同样先从categoryservice开始,然后依次添加articleservice,attachmentservice。commonmodelservice。
using ninesky.dal; using ninesky.ibll; using ninesky.models; using system; using system.collections.generic; using system.linq; namespace ninesky.bll { /// <summary> /// 栏目服务 /// <remarks> /// 创建:2014.02.27 /// </remarks> /// </summary> public class categoryservice:baseservice<category>,interfacecategoryservice { public categoryservice() : base(repositoryfactory.categoryrepository) { } } }
5、web
在web项目的member区域下添加三个空控制器。
栏目控制器categorycontroller
using system; using system.collections.generic; using system.linq; using system.web; using system.web.mvc; using ninesky.ibll; using ninesky.bll; using ninesky.models; namespace ninesky.web.areas.member.controllers { [authorize] public class categorycontroller : controller { private interfacecategoryservice categoryrepository; public categorycontroller() { categoryrepository = new categoryservice(); } } }
文章控制器articlecontroller
using system; using system.collections.generic; using system.linq; using system.web; using system.web.mvc; using ninesky.models; using ninesky.ibll; using ninesky.bll; namespace ninesky.web.areas.member.controllers { public class articlecontroller : controller { private interfacearticleservice articleservice; private interfacecommonmodelservice commonmodelservice; public articlecontroller() { articleservice = new articleservice(); commonmodelservice = new commonmodelservice(); } } }
附件控制器attachmentcontroller
using system; using system.collections.generic; using system.linq; using system.collections; using system.web; using system.web.mvc; using system.io; using ninesky.ibll; using ninesky.bll; using ninesky.models; namespace ninesky.web.areas.member.controllers { /// <summary> /// 附件控制器 /// <remarks> /// 创建:2014.03.05 /// </remarks> /// </summary> [authorize] public class attachmentcontroller : controller { } }
架构结束啦,下面就开始实现文章相关功能!