日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开源]OSharpNS 步步为营系列 - 1. 业务模块设计

發(fā)布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开源]OSharpNS 步步为营系列 - 1. 业务模块设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

      Idint博客編號主鍵,唯一
      Urlstring博客地址唯一
      Displaystring博客顯示名稱
      IsEnabledboolean已開通
      CreatedTimeDateTime創(chuàng)建時間
      DeletedTimeDateTime邏輯刪除時間可空
      UserIdint博主編號外鍵,一對一
    • 文章 - Post

      Idint文章編號主鍵,唯一
      Titlestring文章標(biāo)題
      Contentstring文章內(nèi)容
      CreatedTimeDateTime創(chuàng)建時間
      DeletedTimeDateTime邏輯刪除時間可空
      BlogIdint博客Id外鍵,多對一
      UserIdint作者編號外鍵,多對一

    服務(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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。