基于領(lǐng)域驅(qū)動與微服務(wù)的OA系統(tǒng)研究與實現(xiàn)
發(fā)布時間:2021-06-10 07:20
辦公自動化系統(tǒng)以其高效、便捷的特點在企業(yè)競爭中發(fā)揮著越來越重要的作用。辦公自動化系統(tǒng)飛速發(fā)展的同時,也受到各種各樣的網(wǎng)絡(luò)非法攻擊,造成重要數(shù)據(jù)丟失,隱私泄露等信息安全問題。此外,辦公自動化系統(tǒng)的復(fù)雜度越來越高,而可擴展性卻越來越低,因此,本文提出利用微服務(wù)架構(gòu)與領(lǐng)域驅(qū)動設(shè)計優(yōu)化辦公自動化系統(tǒng),以此提升辦公自動化系統(tǒng)的安全性與可擴展性。主要研究內(nèi)容如下:首先,針對傳統(tǒng)的辦公自動化系統(tǒng)安全性不足的問題,提出采用微服務(wù)架構(gòu)開發(fā)新型辦公自動化系統(tǒng),實現(xiàn)高效安全的身份認證。微服務(wù)架構(gòu)的認證與鑒權(quán)采用用戶名和密碼生成登錄用戶唯一Token令牌的方式標(biāo)明用戶身份,在用戶使用系統(tǒng)的過程中持續(xù)認證用戶身份;微服務(wù)架構(gòu)的認證與鑒權(quán)為Token令牌設(shè)置有效時間來保證令牌的時效性,令牌失效將禁止訪問系統(tǒng)頁面;微服務(wù)架構(gòu)的認證與鑒權(quán)加入了API網(wǎng)關(guān)校驗Token令牌的有效性與時效性;微服務(wù)架構(gòu)的認證與鑒權(quán)在API網(wǎng)關(guān)中進行Token令牌的注銷,防止Token令牌的濫用。其次,針對系統(tǒng)復(fù)雜度高導(dǎo)致的辦公自動化系統(tǒng)可擴展性較低的問題,本文結(jié)合領(lǐng)域驅(qū)動設(shè)計理念設(shè)計并實現(xiàn)辦公自動化系統(tǒng),提高辦公自動化系統(tǒng)可擴展性和可維...
【文章來源】:中國礦業(yè)大學(xué)江蘇省 211工程院校 教育部直屬院校
【文章頁數(shù)】:81 頁
【學(xué)位級別】:碩士
【部分圖文】:
領(lǐng)域驅(qū)動設(shè)計
提升系統(tǒng)性能,會將客戶信息customer和賬戶信息account兩類數(shù)據(jù)保存到同一張數(shù)據(jù)庫表中,客戶和賬戶兩個實體可根據(jù)需要從一個持久化對象中生成,這就是多對一的場景。(2)值對象本質(zhì)上是一個集合,這個集合中有若干個用于描述目的、具有整體概念和不可修改的屬性[53]。在領(lǐng)域建模的過程中,值對象可以保證屬性歸類的清晰和概念的完整性,避免屬性零碎。比如人員實體原本包括:姓名、年齡、性別以及人員所在的盛市、縣和街道等屬性,可以將盛市、縣和街道等屬性拿出來構(gòu)成一個“地址屬性集合”,這個集合就是值對象了。如圖2-2。圖2-2人員實體Figure2-2Personneloftheentity實體和值對象是微服務(wù)底層的最基礎(chǔ)的對象,一起實現(xiàn)實體最基本的核心領(lǐng)域邏輯[54]。值對象在某些場景下有很好的價值,但是并不是所有的場景都適合值對象。開發(fā)中需要根據(jù)團隊的設(shè)計和開發(fā)習(xí)慣,以及實體與值對象的優(yōu)勢和局限分析,選擇最適合的方法[55]。DDD提倡從領(lǐng)域模型設(shè)計出發(fā)。傳統(tǒng)的數(shù)據(jù)模型設(shè)計通常是一個表對應(yīng)一個實體,一個主表關(guān)聯(lián)多個從表,當(dāng)實體表太多的時候就很容易陷入無窮無盡的復(fù)雜的數(shù)據(jù)庫設(shè)計,領(lǐng)域模型就很容易被數(shù)據(jù)模型綁架。值對象的誕生無ID,不可變,無生命周期。值對象之間通過屬性值判斷相
2DDD-OA理論基礎(chǔ)11圖2-3領(lǐng)域事件總體技術(shù)架構(gòu)Figure2-3Domaineventsoveralltechnicalarchitecture(1)事件構(gòu)建和發(fā)布。事件基本屬性至少包括:事件唯一標(biāo)識、發(fā)生時間、事件類型和事件源,其中事件唯一標(biāo)識是全局唯一的,保證事件能夠無歧義地在多個限界上下文中傳遞。事件基本屬性主要記錄事件自身以及事件發(fā)生背景的數(shù)據(jù)。事件中還有一項更重要的業(yè)務(wù)屬性,用于記錄事件發(fā)生那一刻的業(yè)務(wù)數(shù)據(jù),這些數(shù)據(jù)會隨事件傳輸?shù)接嗛喎,以開展下一步的業(yè)務(wù)操作。事件基本屬性和業(yè)務(wù)屬性一起構(gòu)成事件實體,事件實體依賴聚合根。領(lǐng)域事件發(fā)生后,事件中的業(yè)務(wù)數(shù)據(jù)不再修改,因此業(yè)務(wù)數(shù)據(jù)可以以序列化值對象的形式保存,這種存儲格式在消息中間件中也比較容易解析和獲齲事件發(fā)布之前需要先構(gòu)建事件實體并持久化。事件發(fā)布的方式有兩種,一是通過應(yīng)用服務(wù)或者領(lǐng)域服務(wù)發(fā)布到事件總線或者消息中間件,二是從事件表中利用定時程序或數(shù)據(jù)庫日志捕獲技術(shù)獲取增量事件數(shù)據(jù),發(fā)布到消息中間件。(2)事件數(shù)據(jù)持久化。事件數(shù)據(jù)持久化用于系統(tǒng)之間的數(shù)據(jù)對賬和實現(xiàn)發(fā)布方和訂閱方事件數(shù)據(jù)的審計。遇到消息中間件、訂閱方系統(tǒng)宕機或者網(wǎng)絡(luò)中斷等問題時,在問題解決后仍可繼續(xù)后續(xù)業(yè)務(wù)流轉(zhuǎn),保證數(shù)據(jù)的一致性。事件數(shù)據(jù)持久化有兩種方案,在實施過程中根據(jù)具體的業(yè)務(wù)場景進行選擇。一是持久化到本地業(yè)務(wù)數(shù)據(jù)庫的事件表中,利用本地事務(wù)保證業(yè)務(wù)和事件數(shù)據(jù)的一致性,二是持久化到共享的事件數(shù)據(jù)庫中[62]。(3)事件總線。事件總線是實現(xiàn)微服務(wù)內(nèi)聚合之間領(lǐng)域事件的重要組件,提供了事件分發(fā)和接收等服務(wù)。事件總線是進程內(nèi)模型,在微服務(wù)內(nèi)聚合之間遍歷訂閱者列表,采取同步或異步的模式傳遞數(shù)據(jù)。如果是微服務(wù)內(nèi)的訂閱者(其
本文編號:3221944
【文章來源】:中國礦業(yè)大學(xué)江蘇省 211工程院校 教育部直屬院校
【文章頁數(shù)】:81 頁
【學(xué)位級別】:碩士
【部分圖文】:
領(lǐng)域驅(qū)動設(shè)計
提升系統(tǒng)性能,會將客戶信息customer和賬戶信息account兩類數(shù)據(jù)保存到同一張數(shù)據(jù)庫表中,客戶和賬戶兩個實體可根據(jù)需要從一個持久化對象中生成,這就是多對一的場景。(2)值對象本質(zhì)上是一個集合,這個集合中有若干個用于描述目的、具有整體概念和不可修改的屬性[53]。在領(lǐng)域建模的過程中,值對象可以保證屬性歸類的清晰和概念的完整性,避免屬性零碎。比如人員實體原本包括:姓名、年齡、性別以及人員所在的盛市、縣和街道等屬性,可以將盛市、縣和街道等屬性拿出來構(gòu)成一個“地址屬性集合”,這個集合就是值對象了。如圖2-2。圖2-2人員實體Figure2-2Personneloftheentity實體和值對象是微服務(wù)底層的最基礎(chǔ)的對象,一起實現(xiàn)實體最基本的核心領(lǐng)域邏輯[54]。值對象在某些場景下有很好的價值,但是并不是所有的場景都適合值對象。開發(fā)中需要根據(jù)團隊的設(shè)計和開發(fā)習(xí)慣,以及實體與值對象的優(yōu)勢和局限分析,選擇最適合的方法[55]。DDD提倡從領(lǐng)域模型設(shè)計出發(fā)。傳統(tǒng)的數(shù)據(jù)模型設(shè)計通常是一個表對應(yīng)一個實體,一個主表關(guān)聯(lián)多個從表,當(dāng)實體表太多的時候就很容易陷入無窮無盡的復(fù)雜的數(shù)據(jù)庫設(shè)計,領(lǐng)域模型就很容易被數(shù)據(jù)模型綁架。值對象的誕生無ID,不可變,無生命周期。值對象之間通過屬性值判斷相
2DDD-OA理論基礎(chǔ)11圖2-3領(lǐng)域事件總體技術(shù)架構(gòu)Figure2-3Domaineventsoveralltechnicalarchitecture(1)事件構(gòu)建和發(fā)布。事件基本屬性至少包括:事件唯一標(biāo)識、發(fā)生時間、事件類型和事件源,其中事件唯一標(biāo)識是全局唯一的,保證事件能夠無歧義地在多個限界上下文中傳遞。事件基本屬性主要記錄事件自身以及事件發(fā)生背景的數(shù)據(jù)。事件中還有一項更重要的業(yè)務(wù)屬性,用于記錄事件發(fā)生那一刻的業(yè)務(wù)數(shù)據(jù),這些數(shù)據(jù)會隨事件傳輸?shù)接嗛喎,以開展下一步的業(yè)務(wù)操作。事件基本屬性和業(yè)務(wù)屬性一起構(gòu)成事件實體,事件實體依賴聚合根。領(lǐng)域事件發(fā)生后,事件中的業(yè)務(wù)數(shù)據(jù)不再修改,因此業(yè)務(wù)數(shù)據(jù)可以以序列化值對象的形式保存,這種存儲格式在消息中間件中也比較容易解析和獲齲事件發(fā)布之前需要先構(gòu)建事件實體并持久化。事件發(fā)布的方式有兩種,一是通過應(yīng)用服務(wù)或者領(lǐng)域服務(wù)發(fā)布到事件總線或者消息中間件,二是從事件表中利用定時程序或數(shù)據(jù)庫日志捕獲技術(shù)獲取增量事件數(shù)據(jù),發(fā)布到消息中間件。(2)事件數(shù)據(jù)持久化。事件數(shù)據(jù)持久化用于系統(tǒng)之間的數(shù)據(jù)對賬和實現(xiàn)發(fā)布方和訂閱方事件數(shù)據(jù)的審計。遇到消息中間件、訂閱方系統(tǒng)宕機或者網(wǎng)絡(luò)中斷等問題時,在問題解決后仍可繼續(xù)后續(xù)業(yè)務(wù)流轉(zhuǎn),保證數(shù)據(jù)的一致性。事件數(shù)據(jù)持久化有兩種方案,在實施過程中根據(jù)具體的業(yè)務(wù)場景進行選擇。一是持久化到本地業(yè)務(wù)數(shù)據(jù)庫的事件表中,利用本地事務(wù)保證業(yè)務(wù)和事件數(shù)據(jù)的一致性,二是持久化到共享的事件數(shù)據(jù)庫中[62]。(3)事件總線。事件總線是實現(xiàn)微服務(wù)內(nèi)聚合之間領(lǐng)域事件的重要組件,提供了事件分發(fā)和接收等服務(wù)。事件總線是進程內(nèi)模型,在微服務(wù)內(nèi)聚合之間遍歷訂閱者列表,采取同步或異步的模式傳遞數(shù)據(jù)。如果是微服務(wù)內(nèi)的訂閱者(其
本文編號:3221944
本文鏈接:http://sikaile.net/kejilunwen/shengwushengchang/3221944.html
最近更新
教材專著