ASP.NET MVC5網站開發(fā)文章管理架構(七)
一、總體說明
先看一下文章管理設想要實現(xiàn)的功能:
再看一下類圖
這里Category是欄目;CommonModel是公共模型;Article是文章;Attachment是附件;
CommonModel是內容管理這塊抽取出來的公共部分,像文章,咨詢甚至產品都有一些共同的內容這里把它單獨提取出來作為一個類。CommonModel可能包含一片文章,包含一組附件,包含一系列評論,他們之間的關系類圖中已經表示出來。
二、搭建架構
這個順序根以前一樣
1、IDAL
在IDAL添加接口InterfaceCommonModelRepository,其實只是繼承自InterfaceBaseRepository,沒有添加任何其他內容。
namespace Ninesky.IDAL { /// <summary> /// 公共模型接口 /// <remarks> /// 創(chuàng)建:2014.02.23 /// 修改:2014.02.28 /// </remarks> /// </summary> public interface InterfaceCommonModelRepository:InterfaceBaseRepository<Models.CommonModel> { } }
再依次添加InterfaceCategory,InterfaceArticle,InterfaceAttachment,方式和公共模型接口相同。
2、DAL
DAL中是對IDAL接口的實現(xiàn),還是從CommonModel開始,先添加CommonModelRepository,也是跟原來一樣直接繼承沒有什么代碼。
namespace Ninesky.DAL { /// <summary> /// 公共模型倉儲 /// <remarks> /// 創(chuàng)建: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> /// 創(chuàng)建: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> /// 創(chuàng)建:2014.02.27 /// </remarks> /// </summary> public class CategoryService:BaseService<Category>,InterfaceCategoryService { public CategoryService() : base(RepositoryFactory.CategoryRepository) { } } }
5、Web
在web項目的Member區(qū)域下添加三個空控制器。
欄目控制器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> /// 創(chuàng)建:2014.03.05 /// </remarks> /// </summary> [Authorize] public class AttachmentController : Controller { } }
架構結束啦,下面就開始實現(xiàn)文章相關功能!
相關文章
asp.net sqlconnection con.close和con.dispose區(qū)別
con.close是用來關閉和數據庫的連接,相對于open2008-12-12SignalR Self Host+MVC等多端消息推送服務(二)
這篇文章主要為大家詳細介紹了SignalR Self Host+MVC等多端消息推送服務的第二篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06ASP.NET Core MVC學習之視圖組件(View Component)
這篇文章主要給大家介紹了關于ASP.NET Core MVC學習之視圖組件(View Component)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用ASP.NET Core MVC具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-08-08ASP.NET技巧:同時對多個文件進行大量寫操作對性能優(yōu)化
ASP.NET技巧:同時對多個文件進行大量寫操作對性能優(yōu)化...2006-09-09