成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

架構(gòu)設(shè)計:業(yè)務(wù)邏輯層簡述

開發(fā) 架構(gòu)
業(yè)務(wù)邏輯層是專門處理軟件業(yè)務(wù)需求的一層,處于數(shù)據(jù)庫之上,服務(wù)層之下,完成一些列對Domain Object的CRUD,作為一組微服務(wù)提供給服務(wù)層來組織在暴露給表現(xiàn)層,如庫存檢查,用法合法性檢查,訂單創(chuàng)建。

業(yè)務(wù)邏輯層是專門處理軟件業(yè)務(wù)需求的一層,處于數(shù)據(jù)庫之上,服務(wù)層之下,完成一些列對Domain Object的CRUD,作為一組微服務(wù)提供給服務(wù)層來組織在暴露給表現(xiàn)層,如庫存檢查,用法合法性檢查,訂單創(chuàng)建。

業(yè)務(wù)邏輯層包含領(lǐng)域?qū)ο竽P停I(lǐng)域?qū)嶓w,業(yè)務(wù)規(guī)則,驗證規(guī)則,業(yè)務(wù)流程。1:領(lǐng)域?qū)ο竽P蜑橄到y(tǒng)結(jié)構(gòu)描述,包含實體功能描述,實體之間的關(guān)系。領(lǐng)域模型處于天生的復(fù)雜性:2:領(lǐng)域?qū)嶓w:業(yè)務(wù)層是一些操作業(yè)務(wù)對象(BO)的處理。業(yè)務(wù)對象包含數(shù)據(jù)和行為,是一個完整的業(yè)務(wù)對象。其不同于上節(jié)架構(gòu)設(shè)計中服務(wù)層的簡單理解提到的數(shù)據(jù)遷移對象(dto),對于dto存在數(shù)據(jù)的,不存在行為,dto是bo(ddd中又稱do)的子集,負(fù)責(zé)與特定界面需求的扁平化實體,dto僅僅是一個數(shù)據(jù)載體,需要跨越應(yīng)用程序邊界,而業(yè)務(wù)對象則不會存在復(fù)制遷移,往往一個業(yè)務(wù)對象存在一個或者多個數(shù)據(jù)遷移對象。3:業(yè)務(wù)最大的邏輯就在處理一些列現(xiàn)實世界的規(guī)則,這也是軟件中最容易變化的部分,這里通常會出現(xiàn)我們眾多的if-else或者switch-case的地方。也這因為如果說以個人覺得在我們的項目最應(yīng)該關(guān)系和分離需求的層次。4:驗證規(guī)則:業(yè)務(wù)規(guī)則很大程度上也是對對象的數(shù)據(jù)驗證,驗證業(yè)務(wù)對象的當(dāng)前數(shù)據(jù)狀態(tài)。我覺得在每個業(yè)務(wù)對象上都應(yīng)該存在一個對外部對象暴露的驗證接口,可以考慮微軟企業(yè)庫的VAB 基于Attribute聲明式驗證或者上節(jié)流暢的驗證組件:FluentValidation中的FluentValidation驗證組件基于IOC的解耦。

業(yè)務(wù)層模式:在常見的業(yè)務(wù)層模式中主要分為過程是模式和面向?qū)ο竽J健_^程模式有是事務(wù)性腳本和表模式,而面向?qū)ο竽J綖榛顒佑涗浤J胶皖I(lǐng)域驅(qū)動模式。理論上說事務(wù)性腳本模式是最簡單的開發(fā)模式,其前期投入下,但隨著項目周期和復(fù)雜度上升明顯,而領(lǐng)域模型(DDD)前期投入較大,但是理論上說是隨著項目周期和復(fù)雜度呈線性增加,當(dāng)然這些都是理論值。

1:事務(wù)腳本模式是業(yè)務(wù)邏輯層最簡單的模式,面向過程模式。該模式以用于的操作為起點,設(shè)計業(yè)務(wù)組件,即業(yè)務(wù)邏輯直接映射到用戶界面的操作。這通常是從表現(xiàn)層邏輯出發(fā),表現(xiàn)層我需要什么業(yè)務(wù)層提供什么,直到數(shù)據(jù)層。針對沒一個用戶的新功能都需要新增一個從UI到關(guān)系數(shù)據(jù)庫的分支流程。其使用與邏輯不是很復(fù)雜或者變化不大穩(wěn)定的應(yīng)用系統(tǒng)開發(fā)。其不需要付出與業(yè)務(wù)無關(guān)的額外代價,并且在現(xiàn)代VS之類的IDE幫助下能夠很快的進行快速應(yīng)用開發(fā)(RAD)。也由于這種優(yōu)勢,也是其最大的劣勢,程序中充滿了IF-else,switch-case之類的邏輯或者大量的static的方法,每個功能都是一個程序分支,這對代碼無法重用。編碼不易于維護,對復(fù)雜項目和變化需求不適應(yīng)。

2:表模式:為每個數(shù)據(jù)庫表定義一個表模塊類,包含操作該數(shù)據(jù)的所有行為方法。作為一個容器,將數(shù)據(jù)和行為組織在一起。其對數(shù)據(jù)的粒度針對于數(shù)據(jù)表,而非數(shù)據(jù)行,因此需要以集合或者表傳遞數(shù)據(jù)信息。表模式基于對象但是完全又?jǐn)?shù)據(jù)庫驅(qū)動開發(fā),在業(yè)務(wù)模型和數(shù)據(jù)庫關(guān)系模型顯著差異的情況下,應(yīng)對需求,并不是那么適合。但是在.net中提供的一些列如強類型DataSet等IDE的輔助下自動生成大量的代碼,也是一個不錯的選擇,因為部分?jǐn)?shù)據(jù)庫的操作趨于自動化。表模式?jīng)]太過于關(guān)注業(yè)務(wù),而是關(guān)注數(shù)據(jù)庫表結(jié)構(gòu)。而業(yè)務(wù)邏輯和領(lǐng)域問題才是軟件核心。

3:活動記錄模式:一個以數(shù)據(jù)庫表一行Row為對象,并且對象中包含行為和數(shù)據(jù)的模式方法。其數(shù)據(jù)對象很大程度的接近數(shù)據(jù)庫表結(jié)構(gòu)。在活動記錄模式對象中通常也包含操作對象的CRUD行為,數(shù)據(jù)驗證等業(yè)務(wù)規(guī)則。對于業(yè)務(wù)不是很復(fù)雜,對象關(guān)系與關(guān)系模型映射不具有很大差異情況,活動記錄模式會運用的很好。活動模式比較簡單化設(shè)計,在上現(xiàn)行的很多如Linq to sql,ActiveRecord框架的輔助下,將針對問題領(lǐng)域不是太過復(fù)雜的項目十分有用。但是其模式和數(shù)據(jù)庫表結(jié)構(gòu)的相互依賴,導(dǎo)致若你修改數(shù)據(jù)庫結(jié)構(gòu),你不得不同時修改對象以及相關(guān)邏輯。如果不能保證數(shù)據(jù)庫關(guān)系模型和對象模式的很大程度的相似這就進入的困境。

4:領(lǐng)域模型:在前面的幾種模式都是項目開始站在了以數(shù)據(jù)為中心的角度,而不是業(yè)務(wù)本身的問題領(lǐng)域。而領(lǐng)域模型關(guān)注系統(tǒng)問題領(lǐng)域,首先開始為領(lǐng)域?qū)ο笤O(shè)計。與活動記錄模式來說,領(lǐng)域模型完全站在了問題領(lǐng)域業(yè)務(wù)概念模型一邊,與數(shù)據(jù)庫,持久化完成獨立,其推崇持久化透明(POCO)。其可以充分利用面向?qū)ο笤O(shè)計,不受持久化機制的任何約束。其實完全又業(yè)務(wù)驅(qū)動出來的。但是其最大的優(yōu)勢如上各個模式一樣也是其最大的劣勢對象模型和關(guān)系模型具有天然的阻抗,我們的領(lǐng)域?qū)嶓w早晚需要映射到持久化機制。還好的是當(dāng)前有NHibearnate,EF,Fluent NHibearnate這類ORM框架輔助。在DDD中包含UOW,倉儲,值類型和聚合根,領(lǐng)域事件,領(lǐng)域跟蹤一類的概念,這將在以后具體說明。

模式的選擇在與架構(gòu)師的決定,這也是架構(gòu)師具有挑戰(zhàn)意義的職責(zé),需要根據(jù)具體的項目需求,團隊,個人等外界因素最終決定,不存在萬能的模式,也不存在完美的設(shè)計。

原文鏈接:http://developer.51cto.com/art/201206/340941.htm

責(zé)任編輯:林師授 來源: 博客園
相關(guān)推薦

2012-05-30 09:43:45

業(yè)務(wù)邏輯層

2012-06-07 10:53:08

架構(gòu)設(shè)計數(shù)據(jù)訪問層設(shè)計原則

2012-06-07 10:22:48

架構(gòu)設(shè)計邏輯層物理層

2011-10-27 09:08:59

系統(tǒng)架構(gòu)師

2010-01-12 14:51:18

VB.NET業(yè)務(wù)層

2017-11-24 08:32:04

架構(gòu)設(shè)計存儲

2016-05-09 09:26:06

架構(gòu)ios網(wǎng)絡(luò)層

2018-11-27 16:21:36

操作系統(tǒng)Fuchsia谷歌

2024-11-27 13:01:22

應(yīng)用層領(lǐng)域?qū)?/a>對接層

2012-06-07 10:25:35

架構(gòu)設(shè)計服務(wù)層軟件設(shè)計

2010-09-17 08:50:30

Visual Stud

2023-07-17 18:39:27

業(yè)務(wù)系統(tǒng)架構(gòu)

2022-07-26 12:33:38

架構(gòu)設(shè)計場景

2017-07-06 00:27:17

虛擬訂單中心京東數(shù)據(jù)

2022-07-22 10:09:28

架構(gòu)設(shè)計

2021-01-11 10:19:51

安全架構(gòu)

2013-05-27 10:58:28

Tumblr架構(gòu)設(shè)計雅虎收購

2020-05-11 10:53:30

業(yè)務(wù)邏輯層中臺

2025-05-09 08:45:13

2025-04-15 04:00:00

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品一二三区 | 欧美一区二不卡视频 | 国产一卡二卡三卡 | www狠狠干 | 亚洲精品天堂 | 精品久久久久久一区二区 | 久草网视频 | 久久久久无码国产精品一区 | 一区二区精品 | 国产精品爱久久久久久久 | 亚洲精品一| 欧美精品综合 | 免费一级黄色电影 | 国产一区二区自拍 | 国产精品免费高清 | 一区二区在线 | 国产精品一区二区日韩 | 日韩精品一区在线 | 羞羞视频在线免费 | 黄色一级大片视频 | 成人在线精品视频 | 国产视频中文字幕 | 久久久久久av | 欧美午夜在线 | 中文字幕欧美在线观看 | 亚洲激情在线观看 | 国产欧美日韩在线一区 | 337p日本欧洲亚洲大胆精蜜臀 | 国产成人免费网站 | 精品麻豆剧传媒av国产九九九 | 久久草在线视频 | 毛片网在线观看 | 成人免费av | 久草网址| 国产欧美一区二区三区另类精品 | 一区二区三区四区视频 | 国产精品一区在线观看 | 国产精品自拍视频 | 久久久精品一区 | 日韩高清一区 | 欧美精品久久久久久久久老牛影院 |