软件架构---微核架构
微核架構(gòu)(microkernel architecture)又稱為"插件架構(gòu)"(plug-in architecture),指的是軟件的內(nèi)核相對較小,主要功能和業(yè)務(wù)邏輯都通過插件實(shí)現(xiàn)。
內(nèi)核(core)通常只包含系統(tǒng)運(yùn)行的最小功能。插件則是互相獨(dú)立的,插件之間的通信,應(yīng)該減少到最低,避免出現(xiàn)互相依賴的問題。
微核模式也就是我們常見的“插件系統(tǒng)”——模塊高度獨(dú)立,可移植
★ 適應(yīng):運(yùn)行時(shí)多模塊協(xié)作系統(tǒng) ——如果我們需要系統(tǒng)可以運(yùn)行起來之后,動態(tài)的加載和運(yùn)行不同的模塊,微核將是最合適的架構(gòu)。在許多需要運(yùn)行時(shí)擴(kuò)展的系統(tǒng)中,比如一些IM軟件想要帶上各種和好友關(guān)系有關(guān)的功能;或者是希望同樣的代碼能在不同的“平臺”、“環(huán)境”、“操作系統(tǒng)”下運(yùn)行,都會使用這種架構(gòu)。
★ 不適應(yīng):無需運(yùn)行時(shí)多模塊協(xié)作系統(tǒng)——如果軟件本身不會分為多個(gè)需要不定時(shí)啟動、運(yùn)行的模塊,就不必要實(shí)現(xiàn)這個(gè)稍嫌復(fù)雜的架構(gòu)。
★ 方法論:實(shí)現(xiàn)運(yùn)行時(shí)耦合——這個(gè)架構(gòu)的核心,是把代碼的直接耦合,變成運(yùn)行時(shí)的動態(tài)調(diào)用,因此我們會使用事件機(jī)制、消息隊(duì)列等手段,把代碼的調(diào)用和具體的“數(shù)據(jù)”關(guān)聯(lián)起來,從而避免了代碼直接寫死。
微核模式的核心是:
?基本服務(wù)封裝到微核 ——主要是一些每個(gè)模塊都會用到的功能
?內(nèi)、外服務(wù)器負(fù)責(zé)功能實(shí)現(xiàn)(插件系統(tǒng))——外服務(wù)器負(fù)責(zé)整合某個(gè)特定領(lǐng)域的抽象。內(nèi)部服務(wù)器負(fù)責(zé)通用的功能抽象,如網(wǎng)絡(luò)功能、日志等。
?應(yīng)用程序、服務(wù)器通過微核通信 ——這是最核心的部分,一個(gè)基于“事件”的運(yùn)行時(shí)交互系統(tǒng),用來溝通各個(gè)不同的模塊。
?外部服務(wù)和應(yīng)用程序的差別,在于是否通過一個(gè)適配器來和微核耦合。這個(gè)適配器實(shí)際上能讓應(yīng)用程序模塊更換不同的微核,這在于可移植系統(tǒng)上很重要。
微核模式實(shí)際上是一種特化的分層模式,他把最底層的功能封裝層“微核”,同時(shí)把各個(gè)模塊的交互規(guī)定為“運(yùn)行時(shí)的事件”。這樣簡化了的3層架構(gòu),提供能非常好的模塊獨(dú)立性。
優(yōu)點(diǎn)
良好的功能延伸性(extensibility),需要什么功能,開發(fā)一個(gè)插件即可
功能之間是隔離的,插件可以獨(dú)立的加載和卸載,使得它比較容易部署,
可定制性高,適應(yīng)不同的開發(fā)需要
可以漸進(jìn)式地開發(fā),逐步增加功能
缺點(diǎn)
擴(kuò)展性(scalability)差,內(nèi)核通常是一個(gè)獨(dú)立單元,不容易做成分布式
開發(fā)難度相對較高,因?yàn)樯婕暗讲寮c內(nèi)核的通信,以及內(nèi)部的插件登記機(jī)制
參考:https://blog.csdn.net/heiyueya/article/details/60570676
參考:http://www.ruanyifeng.com/blog/2016/09/software-architecture.html
總結(jié)
以上是生活随笔為你收集整理的软件架构---微核架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: file encode - /UI2/C
- 下一篇: 暗黑破坏神不朽精华传承有什么用 精华传承