999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于領域驅動設計的創業工作室管理系統的設計

2020-07-30 14:01:33楊詠
科技視界 2020年14期
關鍵詞:數據庫用戶模型

楊詠

摘 要

當前的學生創業工作室擔負了比較多的功能,如果使用常規的三層設計管理系統,會捆綁依賴較多。本文探討了使用領域驅動設計模式來進行學生創新工作室管理平臺的設計,基于實體模型的功能歸類,以使業務層的劃分更為清晰,從而提高了系統的可復用性。

關鍵詞

領域驅動;創新;管理系統

中圖分類號: TP311.52 ? ? ? ? ? ? ? ? ?文獻標識碼: A

DOI:10.19694/j.cnki.issn2095-2457 . 2020 . 14 . 42

0 前言

近年來,隨著軟件行業的飛速發展,現在的軟件更多的更重視后期的運維和產品根據需求再進行迭代。從軟件(software)的英文單詞上來說,我們也可以理解,軟件必須保持soft,也就是必須保持靈活。軟件需要更容易被修改。因此,當我們開發一套產品,如果按照傳統的數據庫設計模式,把業務放在邏輯層中,會容易造成業務上的重疊和混亂。你中有我,我中有你,模塊間的耦合性太強,從而導致開發的人員比較難去對軟件進行更新迭代。

DDD模式全稱是:Domain-Driven—Design。DDD模式是由Eric Evans 在2004年提出的,他發表了《領域驅動設計——軟件核心復雜性應對之道》(Domain-Driven Design –Tackling Complexity in the Heart of Software),簡稱Evans DDD。[1]

領域驅動模式是一種用面向對象的思想對軟件進行設計和建模,它拋棄了傳統的工程師對于數據庫的建模方式,在業務設計上,以實體領域來對業務的功能進行封裝和設計。基于該模式設計的軟件產品,使得業務界限和功能分析相對很清楚,很好地實現了模塊之間的解耦。可以說,這些年來微服務的流行,其中很大部分也是得益于領域驅動模式的設計理念。

1 項目背景

目前,在項目化進程的教學體系下,我們高等職業院校的工科類學生幾乎都擁有相關的校內實訓基地,或稱為學生創新創業工作室。在日常的管理中,除了一些常規的管理活動外,工作室還承擔了訂制一些需求的項目。學生通過加入這些項目,一方面鍛煉了自己的開發項目的能力,可以使自己的知識體系和能力做了一個深度融合,使得工作室能發揮最大的能動性。通過構建創新創業工作室管理平臺,我們可以提供一個平臺給用戶去自行訂制自己所需要的項目,同時學生也可以根據自己的能力加入相對應的項目開發,達到知識能力和素質能力的融合。

之前,我們普遍的項目都是采用了貧血模式的三層MVC架構的開發。在簡單的業務需求上,三層架構也比較好的滿足了客戶的需求。可是,我們發現,三層架構的項目后續更新,可擴容性不強。比如說,在三層當中的邏輯BLL層,因為業務的調整,我們添加了很多新的方法,但是這些方法與實體的關系不大。因此在邏輯分層中,不夠清晰,也因為開發的學生流動性比較大,維護的團隊上手業務需要比較長的時間。創業工作室管理平臺業務過程比較復雜,為了能讓開發過程更規范,讓系統具有良好的維護性和滿足SOLID的設計原則,我們基于領域驅動設計思想設計了本系統,更關注業務的面向對象的思想來進行重新封裝。在本系統中,我們基于領域模型的建立,把系統分析和設計做了良好的融合,使得系統的分層結構更為清楚,提高了系統的擴展性,讓產品能更靈活地根據需求進行改動。

2 系統架構

2.1 系統功能設計

創業工作室管理系統功能主要包括:人員管理、圖書管理、資產管理、項目管理四六大模塊。功能模塊如圖1所示。

2.2 系統建設特點

(1)采用前沿技術。本系統是基于.net平臺的.netCore3.1版本進行開發,結合EFCore、 Docker、IdentityServer4,數據庫采用Mysql、MongoDB,項目部署在CentOS上。在對系統使用領域驅動模型設計后,使系統的業務分割清楚,能夠有更大的自由度,提高系統的可擴展性。

(2)高性能。本系統采取了B/S結構,用戶通過瀏覽器或手機API就可以直接進行系統的訪問。用戶的前端界面設計采用Vue框架來進行數據渲染。本系統為了提高響應性能,進行了前后端分離,采用異步加Json數據加載的格式。數據庫采用Mycat中間件對Mysql進行數據庫讀寫分離和主從復制,提高數據并發查詢能力。

(3)權限清晰。對于不同的角色,用戶可以擁有不同的操作權限。在權限分派上,分為普通用戶、管理員和超級管理員。

(4)低耦合。本系統中采用六邊形體系結構對于不同的場景進行邊界的劃定。在本項目的實際情境中,我們所有的功能基本上都是圍繞用戶的業務和項目的開展維護等來展開的。因此,在領域設計中,我們需要根據領域及語義邊界等因素確定限界上下文,將同一個語義環境下的一個或者多個聚合放在一個限界上下文內。比如說,項目人員管理與用戶管理兩者業務關聯緊密,可以共同完成人員管理功能,兩者一起構成人員管理限界上下文,創新項目發布則可以單獨形成項目發布限界上下文。

(5)信息安全。對于關鍵敏感數據,比如密碼、金額,采用MD5加密算法對數據進行加密,數據庫中存放密文或檢驗碼,防止超級管理員進行密碼泄露。由于在本項目中涉及金額的支付,因此需要采用OAuth2來對用戶進行授權認證。在用戶登錄部分,也結合發送手機驗證碼方式來結合用戶的認證。

3 領域驅動架構設計

3.1 領域驅動設計的優勢

領域驅動設計區別于之前的MVC三層設計模式的地方在于:在這種開發模式下,我們必須先整理清楚系統的業務需求,整理好領域模型所包含的屬性和方法。領域模型相當于可以進行復用的Service層。對于新功能需求的開發,都基于之前定義好的這些領域模型來完成。這樣可以保證系統可以準確地基于業務需求的建模來實現。本文采用領域模型驅動設計的思想,業務邏輯需要進行分割,分析每個模塊所對接的實體設計,把復雜的功能設計轉換為關注實體模型對接的業務功能并封裝到對應的實體功能中。領域模型改為由更多細粒度的類組成。基于領域驅動設計,可以保證系統的可維護性、擴展性和復用性。

領域驅動的核心應用場景就是解決復雜業務的設計問題,其特點與這一核心主題息息相關。對于復雜的系統,它對代碼的復用性、易維護性要求就越高,因此,前期設計就顯得尤為重要。而基于領域設計開發模式,逼迫我們進行大量的業務調研、領域模型設計,從而更好劃分功能的界限。

3.2 領域驅動設計的開發流程

基于領域驅動設計的開發流程顯得尤為重要。

首先,我們需要把相同業務的服務拆分成單獨的業務池,比如,在圖1中的系統項目管理模塊中,我們可以按照業務的維度拆分成項目情況池、項目分類池、評論池和搜索池。其中,每個業務依賴獨自的數據庫資源,不依賴其他業務的數據庫資源。如果當某個業務接口出現兼容或發展問題時,我們只需要對業務池進行擴展即可,這樣就大大減少了擴容的復雜度。

第二,根據業務接口的重要程度,可以把業務分為核心池和非核心池。比如,就項目情況池而言,發布項目、加入項目接口相對重要一些,可以放在核心池里面;項目完成情況查詢的操作就相對不那么重要,可以放在非核心池里面。通過核心接口和非核心接口的分類,我們可以對核心池的性能優先進行保證,從而保證整體系統的穩定性。

第三,我們可以根據接入客戶端類型的不同做業務池的拆分。比如,服務于小程序或者APP頁面的業務可以定義為移動端池,服務于內部其他部門的業務可以定義為內網池,等等。

4 創業工作室管理系統領域驅動架構設計

本系統中對領域模型驅動進行了具體設計,其框架如圖2所示。

基于創業工作室管理系統的業務需求,對每層的設計進行詳細說明如下:

(1)數據訪問層:采用MySql+MongoDB數據庫管理軟件,結合關系型數據庫和非關系型數據庫進行業務擴展。

(2)業務邏輯層:按領域模型人員管理和項目管理等業務進行建模,減少業務之間的耦合成都,保證其獨立性。在實體模型中,按照領域驅動設計的思想, 按實體對象中設計相關的屬性和功能設計。

(3)UI層:本系統前后端分離,后端曝露接口給前端調用。因此,切分APP端用戶、Web端用戶相對容易。在前端部分,采用Vue框架進行頁面數據渲染,異步加載數據,從而提高響應速度。

5 系統部分實體模型設計

在實體Entity部分,主要分為UserInfo類和ProjectInfo類。本文羅列了UserInfo類的設計。

UserInfo類設計如下:

[Table("UserInfo")]

public partial class UserInfo{

/*用戶信息部分,包含消息驗證以及角色校驗*/

public UserInfo(){

UserInfoTokens = new HashSet();

UserInfoLoginLogs = new HashSet();

UserInfoRoles = new HashSet();

}

public Guid Id { get; set; }

public string Account { get; set; }

public string Name { get; set; }

public string Email { get; set; }

public string MobilePhone { get; set; }

public string Password { get; set; }

public string Salt { get; set; }

public string Sex { get; set; }

public bool Enabled { get; set; }

public bool IsAdmin { get; set; }

public DateTime CreationTime { get; set; }

public int LoginFailedNum { get; set; }

public DateTime? AllowLoginTime { get; set; }

public bool LoginLock { get; set; }

public DateTime? LastLoginTime { get; set; }

public string LastIpAddress { get; set; }

public DateTime? LastActivityTime { get; set; }

public bool IsDeleted { get; set; }

public DateTime? DeletedTime { get; set; }

public DateTime? ModifiedTime { get; set; }

public Guid? Modifier { get; set; }

public Guid? Creator { get; set; }

public virtual ICollection UserInfoRoles { get; set; }

public virtual ICollection UserInfoTokens{ get; set; }

public virtual ICollection UserInfoLoginLogs { get; set; }

}

6 小結

本文基于領域驅動設計,根據創業工作室管理系統完成了整個系統的架構設計,并根據人員管理和項目管理模塊的具體業務邏輯進行領域模型設計。運用領域驅動設計可以解決復雜的業務邏輯問題,領域對象的功能設計對接了實際的業務,讓領域對象有了良好的職責劃分和功能體現。

對于領域驅動設計模式,更多應用結合在微服務的場景下。對于功能性要求不高,投入不是很大的項目,一開始就上微服務,反而會使得開發效率更慢。由于本項目設計受技術以及團隊等因素影響相對較小,主要考慮職責單一性,因此暫時不考慮拆分微服務。以后隨著用戶數量的增加,以及更多的投入,在產品迭代和重構中再進行相關的功能拆分。

參考文獻

[1]實現領域驅動設計[M].北京:電子工業出版社,2014.

[2]微服務架構設計模式[M].北京:機械工業出版社,2019.

[3]梁小鷗.探析思維導圖輔助系統在高職計算機網絡專業學習中的應用[J].現代計算機,2019.

[4]張金松.領域驅動設計在航務海事系統中的應用研究[D].2010.

[5]趙悅,杜俏俏.基于領域驅動的專利申報系統設計[J].2017.

[6]王敬林.基于微服務架構的鐵路企業年金系統的研究和關鍵技術實現[D].2019.

猜你喜歡
數據庫用戶模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
3D打印中的模型分割與打包
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數據庫
財經(2016年15期)2016-06-03 07:38:02
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
主站蜘蛛池模板: 无码有码中文字幕| 激情视频综合网| 国产最新无码专区在线| 国产精品对白刺激| 九九久久精品免费观看| 精品国产www| 在线观看欧美精品二区| 在线亚洲小视频| 欧美一区二区人人喊爽| 婷婷99视频精品全部在线观看| 天天综合网亚洲网站| 97精品伊人久久大香线蕉| 亚洲男人在线天堂| 成人午夜久久| 性69交片免费看| 亚洲另类国产欧美一区二区| 国产精品第页| 成人综合久久综合| 国产免费高清无需播放器| 欧美综合一区二区三区| 亚洲美女久久| 情侣午夜国产在线一区无码| 国产精品网址你懂的| 无码AV日韩一二三区| 日韩欧美国产精品| 国内精品视频在线| 久久成人18免费| 国产精品开放后亚洲| 亚洲天堂网在线观看视频| 国产精品开放后亚洲| 久久永久精品免费视频| 一级片一区| 色综合久久久久8天国| 在线va视频| 伊人激情久久综合中文字幕| 欧美一级在线看| 亚洲无码视频一区二区三区| 午夜人性色福利无码视频在线观看| 久久久久青草大香线综合精品| 欧美伊人色综合久久天天| 亚洲欧美不卡| 欧美精品亚洲二区| 久久香蕉国产线看观看式| 欧美成人综合视频| 国产一区二区三区免费观看| 97久久精品人人| 久久免费精品琪琪| 亚洲乱码在线播放| 在线观看热码亚洲av每日更新| 中文字幕亚洲电影| 国产成人高清精品免费软件| 精品超清无码视频在线观看| 色天天综合| 日韩在线中文| 制服丝袜 91视频| 国产国产人成免费视频77777 | 五月婷婷精品| 久久久久亚洲Av片无码观看| 亚洲视频色图| 一级成人a毛片免费播放| 亚洲黄色高清| 国产欧美精品一区二区| 国产精品欧美日本韩免费一区二区三区不卡 | 亚洲精品爱草草视频在线| 青青操视频在线| 区国产精品搜索视频| 毛片免费网址| 国产区在线观看视频| 国产精品一老牛影视频| 国产精品999在线| 亚洲精品高清视频| 久久网欧美| 91久久夜色精品| 国产精品免费电影| 91青青草视频| 国产成a人片在线播放| 日本免费新一区视频| 999精品免费视频| 欧美日韩va| 国产福利影院在线观看| 中文字幕在线不卡视频| 精品成人一区二区三区电影|