ASP.NET MVC5網站開發文章管理架構(七)_實用技巧

來源:互聯網
上載者:User

一、總體說明
先看一下文章管理設想要實現的功能:

再看一下類圖

這裡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 { }}

架構結束啦,下面就開始實現文章相關功能!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.