ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

上次把member的用户部分完成,现在开始做文章管理部分。文章部分根据涉及显示现实文章列表,发布文章,修改文章,删除文章等功能。最终的实现目标是使用权限来控制用户是否能进行相应操作,管理员权限的会显示全部文章列表和我的文章列表,普通用户只显示我的文章列表。由于还没做权限这块所以没法判断,暂时登录后所有都可以操作。

 

一、总体说明

先看一下文章管理设想要实现的功能:

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

再看一下类图

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

这里Category是栏目;CommonModel是公共模型;Article是文章;Attachment是附件;

CommonModel是内容管理这块抽取出来的公共部分,像文章,咨询甚至产品都有一些共同的内容这里把它单独提取出来作为一个类。CommonModel可能包含一片文章,包含一组附件,包含一系列评论,他们之间的关系类图中已经表示出来。

 

二、搭建架构

这个顺序根以前一样

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

1、IDAL

在IDAL添加接口InterfaceCommonModelRepository,其实只是继承自InterfaceBaseRepository,没有添加任何其他内容。

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构
namespace Ninesky.IDAL
{
    /// <summary>
    /// 公共模型接口
    /// <remarks>
    /// 创建:2014.02.23
    /// 修改:2014.02.28
    /// </remarks>
    /// </summary>
    public interface InterfaceCommonModelRepository:InterfaceBaseRepository<Models.CommonModel> {

    }
}
ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

再依次添加InterfaceCategory,InterfaceArticle,InterfaceAttachment,方式和公共模型接口相同。

2、DAL

DAL中是对IDAL接口的实现,还是从CommonModel开始,先添加CommonModelRepository,也是跟原来一样直接继承没有什么代码。

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构
namespace Ninesky.DAL
{
    /// <summary>
    /// 公共模型仓储
    /// <remarks>
    /// 创建:2014.02.23
    /// </remarks>
    /// </summary>
    public class CommonModelRepository:BaseRepository<Models.CommonModel>, IDAL.InterfaceCommonModel
    {
    }
}
ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

然后依次添加CategoryRepository,ArticleRepository,AttachmentRepository。

3.IBLL

这次先从InterfaceCategoryService开始,InterfaceArticleService,InterfaceCommentService,InterfaceAttachmentService。InterfaceCommonModelService内容较多放在最后。

InterfaceCategoryService

具体功能会在做栏目的时候再写,这里暂时空着。

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构
namespace Ninesky.IBLL
{
    /// <summary>
    /// 栏目服务接口
    /// <remarks>
    /// 创建:2014.02.23
    /// </remarks>
    /// </summary>
    public class InterfaceCategoryService:InterfaceBaseService<Models.Category>
    {
    }
}
ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

4.BLL

同样先从CategoryService开始,然后依次添加ArticleService,AttachmentService。CommonModelService。

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构
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) { }
    }
}
ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

5、Web

在web项目的Member区域下添加三个空控制器。

栏目控制器CategoryController

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构
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(); }
        

    }
}
ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

文章控制器ArticleController

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构
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(); }
  }
}
ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

附件控制器AttachmentController

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构
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
    {
 }
}
ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

架构结束,明天开始实现文章相关功能!

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构,布布扣,bubuko.com

ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理 - 架构

上一篇:初级jQuery的使用


下一篇:js链式调用