題主的問(wèn)題很有代表性,尤其是對(duì)企業(yè)信息化建設(shè)前期進(jìn)行技術(shù)選型時(shí),需要重點(diǎn)考慮。根據(jù)本人經(jīng)驗(yàn),通過(guò)Java開(kāi)發(fā)平臺(tái)做平臺(tái)開(kāi)發(fā)時(shí),建議關(guān)注以下幾個(gè)方面:
第一、統(tǒng)籌開(kāi)發(fā)目標(biāo),關(guān)注系統(tǒng)架構(gòu)設(shè)計(jì),如果你的目標(biāo)是建設(shè)一個(gè)平臺(tái),那就說(shuō)明不是一個(gè)小項(xiàng)目,一定要明確開(kāi)發(fā)目標(biāo)(尤其是階段性里程碑目標(biāo))。在項(xiàng)目整體目標(biāo)明確后,做好系統(tǒng)架構(gòu)設(shè)計(jì)。系統(tǒng)架構(gòu)設(shè)計(jì)不聚焦在Java開(kāi)發(fā)平臺(tái)上,而是界定好平臺(tái)內(nèi)部各個(gè)功能模塊(或業(yè)務(wù)組件)之間的關(guān)系,確定通信機(jī)制和訪(fǎng)問(wèn)協(xié)議。如果是計(jì)劃建設(shè)的平臺(tái)規(guī)模較大(如:將來(lái)計(jì)劃用戶(hù)量上千萬(wàn),或后臺(tái)數(shù)據(jù)TB級(jí)別),可能還需要做好中臺(tái)建設(shè)(關(guān)于中臺(tái)的建設(shè)此處不再展開(kāi)),但一個(gè)信息化平臺(tái)至少包含以下幾個(gè)部分:
權(quán)限體系安全體系數(shù)據(jù)訪(fǎng)問(wèn)體系接口通信體系基礎(chǔ)功能體系業(yè)務(wù)功能體系用戶(hù)交互體系一閃幾個(gè)部分架構(gòu)如下圖:▲通用系統(tǒng)架構(gòu)
第二、盡量做到功能解耦,強(qiáng)化系統(tǒng)可擴(kuò)展性Java開(kāi)發(fā)一大優(yōu)點(diǎn)是可實(shí)現(xiàn)跨平臺(tái)運(yùn)行,無(wú)論是Windows服務(wù)器還是Linux服務(wù)器,只需要安裝JVM和JDK即可,從而實(shí)現(xiàn)了開(kāi)發(fā)程序和操作系統(tǒng)的解耦。但平臺(tái)建設(shè)最難的是業(yè)務(wù)功能的解耦。幾乎所有平臺(tái)都會(huì)涉及到安全體系、權(quán)限體系、跨域訪(fǎng)問(wèn)等問(wèn)題。在平臺(tái)架構(gòu)設(shè)計(jì)完善后,務(wù)必要將業(yè)務(wù)功能解耦,將公共調(diào)用的功能模塊抽象出來(lái),形成獨(dú)立的組件,尤其是涉及到后臺(tái)算法和性能的組件,更需要從具體業(yè)務(wù)模塊中抽象出來(lái)。在組件調(diào)用時(shí)形成固定通用的調(diào)用接口,可以使封裝后調(diào)用,也可以是代碼級(jí)、工程級(jí)引用。這樣既可做到平臺(tái)業(yè)務(wù)可擴(kuò)展,也增強(qiáng)了后續(xù)升級(jí)迭代的便捷性。
▲功能解耦示意圖
第三、用成熟的第三方組件,強(qiáng)調(diào)代碼可維護(hù)性Java另一特點(diǎn)是其龐大的開(kāi)源體系,可以從GitHub上獲得巨量支持。通常我們可以引入第三方成熟的組件,以快速高效實(shí)現(xiàn)特定系統(tǒng)功能的效果。但引入第三方組件時(shí),最好遵循開(kāi)源和成熟的原則。以便在業(yè)務(wù)調(diào)整,需要修改組件涉及到的相關(guān)功能時(shí),可直接修改組件相關(guān)源碼。
另外,Java開(kāi)發(fā)時(shí)養(yǎng)成良好的編碼習(xí)慣,增強(qiáng)代碼可維護(hù)性也非常必要。尤其是平臺(tái)核心代碼,最好做好注解解釋?zhuān)?duì)版本進(jìn)行控制,以便升級(jí)迭代操作。
▲Spring框架的核心代碼示例
希望以上三點(diǎn)能幫到您!