开源]OSharpNS 步步为营系列 - 1. 业务模块设计
OSharpNS全稱OSharp Framework with .NetStandard2.0,是一個基于.NetStandard2.0開發(fā)的一個.NetCore快速開發(fā)框架。這個框架使用最新穩(wěn)定版的.NetCore SDK(當(dāng)前是.NET Core 2.2),對 AspNetCore 的配置、依賴注入、日志、緩存、實體框架、Mvc(WebApi)、身份認(rèn)證、權(quán)限授權(quán)等模塊進行更高一級的自動化封裝,并規(guī)范了一套業(yè)務(wù)實現(xiàn)的代碼結(jié)構(gòu)與操作流程,使 .Net Core 框架更易于應(yīng)用到實際項目開發(fā)中。
開源地址:https://github.com/i66soft/osharp
官方示例:https://www.osharp.org
文檔中心:https://docs.osharp.org
VS 插件:https://marketplace.visualstudio.com/items?itemName=LiuliuSoft.osharp
本系列教程中,我們將一步一步實現(xiàn)一個博客(BlogsPack)的業(yè)務(wù)模塊,并對使用OSharp框架進行業(yè)務(wù)實現(xiàn)的過程涉及的框架知識進行全面的講解。
通過學(xué)習(xí)本系列教程,你將對OSharp框架的業(yè)務(wù)實現(xiàn)有個較全面的了解,你將學(xué)習(xí)到框架的如下知識點:
框架推薦的項目文件組織方式
實體類設(shè)計,并將實體類加載到數(shù)據(jù)上下文
模塊化的業(yè)務(wù)層服務(wù)設(shè)計
基于WebAPI的角色?功能權(quán)限?控制
基于 角色-實體 的?數(shù)據(jù)權(quán)限?控制
Angular前端?菜單/按鈕權(quán)限?控制
Pack模塊是應(yīng)用程序中的一個高內(nèi)聚的子系統(tǒng),負(fù)責(zé)完成一類功能或者一系列相關(guān)聯(lián)的業(yè)務(wù)處理,是構(gòu)建 OSharp 應(yīng)用程序的基本功能單元。一系列低耦合的Pack模塊共同組合在一起創(chuàng)建一個 OSharp 應(yīng)用程序。每個 Pack模塊是以一個實現(xiàn)了模塊基類(OsharpPack)的類作為入口的,這個類完成本模塊的服務(wù)添加(AddService)和模塊初始化工作(UsePack)。
OsharpPack 基類定義如下:
public abstract class OsharpPack{
public virtual PackLevel Level => PackLevel.Business;
public virtual int Order => 0;
public bool IsEnabled { get; protected set; }
public virtual IServiceCollection AddServices(IServiceCollection services)
{
return services;
}
public virtual void UsePack(IServiceProvider provider)
{
IsEnabled = true;
}
internal Type[] GetDependPackTypes(Type packType = null)
{
}
}
一個完整的業(yè)務(wù)模塊,要實現(xiàn)一系列相關(guān)聯(lián)的業(yè)務(wù)功能,需要一個完整的?數(shù)據(jù)層 - 服務(wù)層 - WebAPI層 - 前端UI層?的代碼鏈的支持,各個層次各司其職,共同來完成當(dāng)前模塊的業(yè)務(wù)處理。
業(yè)務(wù)模塊文件夾結(jié)構(gòu)布局
OSharp框架有一套推薦的模塊文件夾布局方案,根據(jù)該方案,博客Blogs模塊的?后端文件夾?結(jié)構(gòu)推薦如下:
src├─Liuliu.Blogs.Core
│ └─Blogs
│ ├─BlogsPack.cs
│ ├─BlogsService.cs
│ ├─BlogsService.Blog.cs
│ ├─BlogsService.Post.cs
│ ├─IBlogsContract.cs
│ ├─Dtos
│ │ ├─BlogInputDto.cs
│ │ ├─BlogOutputDto.cs
│ │ ├─PostInputDto.cs
│ │ └─PostOutputDto.cs
│ └─Entities
│ ├─Blog.cs
│ └─Post.cs
├─Liuliu.Blogs.EntityConfiguration
│ └─Blogs
│ ├─BlogConfiguration.cs
│ └─PostConfiguration.cs
└─Liuliu.Blogs.Web
└─Areas
└─Admin
└─Controllers
└─Blogs
├─BlogController.cs
└─PostController.cs
博客Blogs模塊相應(yīng)的 Angular?前端文件夾?結(jié)構(gòu)推薦如下:
src└─app
└─routes
└─blogs
├─blogs.module.ts
├─blogs.routing.ts
├─blog
│ ├─blog.component.html
│ └─blog.component.ts
└─post
├─post.component.html
└─post.component.ts
博客業(yè)務(wù)需求分析
已登錄?并且未開通博客的用戶,可以向系統(tǒng)申請開通博客
博客管理員?審核并開通博客,并給相應(yīng)用戶分配?博主?角色
博客管理員?可以對博客、文章進行?更新、刪除?的管理操作
博主?可以對博客進行更新操作
博主?可以對文章進行?新增、更新、刪除?操作
博客、文章均開啟?邏輯刪除?功能,保留歷史數(shù)據(jù)
數(shù)據(jù)層
OSharp的數(shù)據(jù)層,主要是?數(shù)據(jù)實體?的定義,只要數(shù)據(jù)實體定義好,并做好?數(shù)據(jù)實體映射,再配合框架中已定義好的數(shù)據(jù)倉儲?IRepository<TEntity, TKey>,即可輕松完成數(shù)據(jù)的數(shù)據(jù)庫存取操作。
一個最簡單的博客系統(tǒng),需要有 作者、博客、文章 三個數(shù)據(jù)實體。
作者 - User
博客系統(tǒng)的作者就是OSharp框架的?用戶(User),直接使用即可。
博客 - Blog
Id int 博客編號 主鍵,唯一 是 是 Url string 博客地址 唯一 是 是 Display string 博客顯示名稱 是 是 IsEnabled boolean 已開通 否 是 CreatedTime DateTime 創(chuàng)建時間 否 是 DeletedTime DateTime 邏輯刪除時間 可空 否 否 UserId int 博主編號 外鍵,一對一 否 是 文章 - Post
Id int 文章編號 主鍵,唯一 是 是 Title string 文章標(biāo)題 是 是 Content string 文章內(nèi)容 是 是 CreatedTime DateTime 創(chuàng)建時間 否 是 DeletedTime DateTime 邏輯刪除時間 可空 否 否 BlogId int 博客Id 外鍵,多對一 否 是 UserId int 作者編號 外鍵,多對一 否 是
服務(wù)層
服務(wù)層負(fù)責(zé)實現(xiàn)模塊的業(yè)務(wù)處理,是整個系統(tǒng)的最核心部分,一個系統(tǒng)有什么功能,能對外提供什么樣的服務(wù),都是在服務(wù)層實現(xiàn)的。
| 博客 | 申請開通、開通審核、更新、刪除 |
| 文章 | 新增、更新、刪除 |
WebAPI層
WebAPI層負(fù)責(zé)對外提供數(shù)據(jù)操作API,并對API進行授權(quán)約束。
博客管理 - Blog
申請開通 登錄訪問 已登錄未開通博客的用戶 讀取 角色訪問 博客管理員、博主 開通審核 角色訪問 博客管理員 更新 角色訪問 博客管理員、博主 刪除 角色訪問 博客管理員 文章管理 - Post
讀取 角色訪問 博客管理員、博主 新增 角色訪問 博主 更新 角色訪問 博客管理員、博主 刪除 角色訪問 博客管理員、博主
前端UI層
前端UI層是整個系統(tǒng)的對外操作界面,是直面最終用戶的終端,整個系統(tǒng)最終表現(xiàn)形式全靠前端展現(xiàn)出現(xiàn)。
博客模塊UI設(shè)計如下:
統(tǒng)一使用后臺管理界面來提供 博客、文章 的管理
博客管理列表
可以對博客進行審核、更新、刪除操作
已登錄未開通博客,顯示開通按鈕
申請之后,博客處理未審核狀態(tài)
博客更新可用
博主
博客管理員
文章管理列表
博主可以新增文章
博主、博客管理員可以更新、刪除文章
至此,博客模塊的詳細(xì)設(shè)計設(shè)計完畢,后面我們將一步一步來實現(xiàn)這個業(yè)務(wù)需求。
原文地址:https://www.cnblogs.com/guomingfeng/p/osharpns-steps-index.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的开源]OSharpNS 步步为营系列 - 1. 业务模块设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派也跑Docker和.NET Cor
- 下一篇: Office转PDF,Aspose太贵,