其實(shí)做什么事情都是有邏輯結(jié)構(gòu)塞耕, 包括軟件設(shè)計(jì)址遇。
目標(biāo)
業(yè)務(wù)架構(gòu)的第一個(gè)訴求是結(jié)構(gòu)上是讓代碼清晰可表達(dá)哗咆, 對業(yè)務(wù)的發(fā)展符合開放封閉原則咽扇。其實(shí)所謂業(yè)務(wù)的開放封閉原則就是對于業(yè)務(wù)的發(fā)展應(yīng)該既能滿足現(xiàn)有功能需要屋灌, 而對于將來新增的需要只需要通過新增代碼的方式就可以完成洁段, 不需要從大的結(jié)構(gòu)上修改現(xiàn)有的代碼。 代碼結(jié)構(gòu)清晰可以自解釋共郭, 也大大降低了維護(hù)的成本祠丝。
業(yè)務(wù)架構(gòu)的第二個(gè)訴求就是架構(gòu)可以使得在開發(fā)過程中易于分工, 目前軟件開發(fā)中很少單槍匹馬的除嘹, 畢然是一個(gè)團(tuán)隊(duì)去開發(fā)写半, 所以在架構(gòu)上保證各個(gè)功能易于分解, 減少并發(fā)開發(fā)時(shí)候的沖突尉咕,顯得非常重要叠蝇。
其實(shí)在軟件領(lǐng)域中任何一個(gè)措施, 都是考慮成本年缎, 效率悔捶, 收益的問題, 架構(gòu)的本質(zhì)也是從長遠(yuǎn)來看是降低陳本单芜, 提高效率和收益炎功, 包括之前推行的持續(xù)集成, 插件化缓溅,模塊化復(fù)用,設(shè)計(jì)模式都是這個(gè)目的赁温, 明白這一點(diǎn)坛怪, 做事情都直接可以用這個(gè)標(biāo)尺衡量。
構(gòu)想
功能和功能之間股囊, 模塊于模塊之間畢然需要協(xié)作才能完成一些業(yè)務(wù)袜匿, 最終通過所有模塊的寫作去實(shí)現(xiàn)整個(gè)業(yè)務(wù)的需要。 所以標(biāo)準(zhǔn)化的消息結(jié)構(gòu)往往是一個(gè)最通用的方法稚疹, 很多軟件中往往利用一個(gè)消息中心居灯, 所有涉及協(xié)作的事情, 都先發(fā)送一個(gè)通知到消息中心内狗, 然后由中心廣播分發(fā)給所有的協(xié)作者怪嫌, 而只有感興趣的協(xié)作者才需要處理這個(gè)消息。 這有點(diǎn)像將命令模式和監(jiān)聽者模式混合在一起柳沙。 如果將消息文本化或者序列號岩灭, 通過socket等遠(yuǎn)程方式序列化和反序列化報(bào)文, 可以實(shí)現(xiàn)本系統(tǒng)和外部系統(tǒng)之間的協(xié)作赂鲤。類似windows等結(jié)構(gòu)都是基于這個(gè)構(gòu)想噪径。
技術(shù)
這是一個(gè)很自然地構(gòu)想柱恤, 對于面向?qū)ο蟮恼Z言來說, 就是實(shí)現(xiàn)一個(gè)event消息中心就可以了找爱, 有一個(gè)發(fā)送的代理梗顺, 一個(gè)鏈表結(jié)構(gòu)保存所有協(xié)作者的引用, 然后每一個(gè)消息分發(fā)车摄, 就是對協(xié)作者的輪詢回調(diào)寺谤。
?