為開發(fā)團隊選擇一款優(yōu)秀的 MVC 框架是件難事兒,在眾多可行的方案中決擇需要很高的經(jīng)驗和水平。你的一個決定會影響團隊未來的幾年。要考慮方面太多:
簡單易用,以提高開發(fā)效率。使小部分的精力在框架上,大部分的精力放在業(yè)務(wù)上。
性能優(yōu)秀,這是一個最能吸引眼球的話題。
盡量使用大眾的框架(架構(gòu)師可以自定義輕量級框架,越簡單但能完成業(yè)務(wù)功能的框架最好,方便進行重構(gòu)),新招聘來的開發(fā)人員技術(shù)功底不一致,要按水平最低的人員考慮,減低人員流動再適應(yīng)的影響。
這是大部分項目優(yōu)先選擇的條件 基于這些條件 一般選擇輕量級框架為主,如果架構(gòu)師無法自定義架構(gòu),則優(yōu)先選擇 Spring(畢竟比較流行)。
但使用 Spring 開發(fā)服務(wù)應(yīng)用,需要開發(fā)人員有一定的基礎(chǔ),至少 3 年以上經(jīng)驗的才能獨自獨擋一面,效率上肯定無法比 5 年以上工作經(jīng)驗的高。
想優(yōu)化服務(wù)后端 ,首先要了解可優(yōu)化的模塊,以及框架優(yōu)化可行性,當(dāng)前主流框架 Spring、Mybatis,使用開發(fā)比較方便,但同時限制了擴展,框架非輕量級,想擴展和修改,則必須要有相當(dāng)豐富經(jīng)驗的架構(gòu)師來處理,且測試時間相當(dāng)漫長,不利于普通開發(fā)人員。
普通開發(fā)人員關(guān)注的其實只是業(yè)務(wù)實現(xiàn),無需考慮其他。比如開發(fā)人員無需考慮框架是如何存儲數(shù)據(jù)到數(shù)據(jù)庫以及權(quán)限具體實現(xiàn)流程等(普通開發(fā)人員只需考慮如何實現(xiàn)業(yè)務(wù)功能,以及業(yè)務(wù)功能實現(xiàn)的高效合理性),具體的模塊如數(shù)據(jù)存儲,權(quán)限模塊主要有架構(gòu)師完成設(shè)計。
架構(gòu)師設(shè)計成對應(yīng)的模塊接口,如登錄,架構(gòu)師只需對外提供登錄接口的詳細(xì)信息,開發(fā)者只需調(diào)用該接口即可完成登錄操作。
至于開發(fā)者使用何種框架對接接口,可由架構(gòu)師設(shè)計,這樣開發(fā)者只管調(diào)用方法,而無需關(guān)注框架。(開發(fā)者可以在不知道 Spring、Mybatis 框架的前提下完成開發(fā)任務(wù))。
故架構(gòu)師可以考慮將原有的三層架構(gòu)模式設(shè)計成接口-微服務(wù)模式,每個功能為一個接口模塊,這樣部署服務(wù)商可以橫向擴展進行負(fù)載均衡,方便靈活的進行單個模塊的更新,而無需停止整個服務(wù),做到服務(wù)零維護,7*24 小時對外提供服務(wù)。
架構(gòu)師可以分配單個模塊給指定開發(fā)者,開發(fā)者只需實現(xiàn)單個模塊,單個模塊功能可以使用架構(gòu)師指定的方法用于實現(xiàn),只是使用架構(gòu)師提供的框架進行流程設(shè)計,無需編碼即可進行功能開發(fā)。
由于本人實在是懶(沒辦法,寫了幾年代碼后發(fā)現(xiàn)寫代碼特別累),于是就想著能不能在不寫代碼的前提下把后端功能開發(fā)出來,之前一直做 ETL Kettle 開發(fā)的工作,了解到數(shù)據(jù)流插件后,發(fā)現(xiàn)可以將 Kettle 運行思想應(yīng)用到 Web 請求開發(fā)中,下圖 Kettle 開發(fā)界面:
該圖可以完美展示登錄判斷流程,其中
INPUT:接收用戶傳入的參數(shù),用戶名密碼等信息
判斷:用于判斷用戶傳入?yún)?shù)信息
登錄以及用戶信息:獲取用戶基本信息
ADMIN_CHECK:判斷是否是管理員
putCache:放入緩存
通過可視化工具,這樣就可以方便設(shè)計出功能流程,小到獲取單記錄信息,大到查詢數(shù)據(jù)等功能都可以很方便完成。
測試也很方便地直接通過可視化工具傳入請求參數(shù),而無需使用開發(fā)工具(Eclipse 等),實際項目開發(fā)者無代碼能力者也可以完成分配的功能任務(wù)。
流程化工具:
主要設(shè)計理念參考了 Kettle 等ETL工具,用于數(shù)據(jù)流向所處理的系統(tǒng)化模式,并帶入 Web 理念中去。
試想下,一個 Web 請求服務(wù)端,服務(wù)端需要如何處理?處理后返回給客戶端的數(shù)據(jù)又需要做什么處理等等。
分析具體步驟,并把一個個功能劃分成積木那樣,先考慮最小化模塊。
如登陸模塊:
接收傳入的參數(shù)
判斷用戶名是否存在
判斷密碼是否存在
判斷用戶名格式,密碼格式是否正確
判斷驗證碼
查找數(shù)據(jù)庫是否存在用戶名
查找到用戶,判斷用戶密碼與輸入密碼是否一致(密碼判斷)
判斷成功后生成 token,返回給用戶,失敗的話 返回錯誤信息
簡單的登錄流程簡化成上述 8 個處理步驟,分析下這八個步驟,每個步驟需要的插件可以歸類為:
INPUT 接收參數(shù)插件
判斷過濾插件
數(shù)據(jù)格式驗證插件
數(shù)據(jù)庫記錄查詢插件
返回信息插件
常量插件
如下圖:
我們看到圖中主要使用了幾種插件,如 INPUT(接收用戶輸入的參數(shù)),配置內(nèi)容如下圖:
增加常量:設(shè)置常量用戶輸出信息,配置如下圖:
過濾插件:判斷字段值,如下圖:
數(shù)據(jù)格式驗證:判斷字段值的格式是否符合要求,如下圖:
數(shù)據(jù)查詢插件:查詢數(shù)據(jù)庫表記錄值,如下圖:
輸出內(nèi)容選擇值:選擇需要進行下一步操作的字段,如下圖:
現(xiàn)在我們發(fā)現(xiàn),原本需要進行代碼編寫進行用戶登錄驗證操作的功能,現(xiàn)在只需要動手配置下具體實施流程即可,無需編碼,是不是很方便,而且不需要有開發(fā)經(jīng)驗的人即可進行配置。
項目架構(gòu)師和管理者(最好是同一人,這樣對項目了解通透)應(yīng)考慮團隊人員的水平情況,并以最新人開發(fā)者為基準(zhǔn)設(shè)計框架,而不是一味的讓開發(fā)者迎合架構(gòu)師,架構(gòu)師應(yīng)站在產(chǎn)品經(jīng)理的方向上考慮,將開發(fā)者當(dāng)做產(chǎn)品用戶 設(shè)計出合理的產(chǎn)品給開發(fā)者使用。
另外架構(gòu)師要盡可能的”懶”(這里指通過工具就可以完成工作,而無需大量編碼),只有這樣才能想著如何調(diào)高效率,而不是每日加班來凸顯自己,一直以來我不認(rèn)可加班,沒有什么事情需要一個加班就處理好,如果需要那也是線上運維出現(xiàn)的緊急情況,而不是開發(fā)過程中。
后臺開發(fā)效率提高取決于以下方面:
1. 人員配置
理論上項目配置越多的開發(fā)人員開發(fā)效率越高,但盲目的增加人員不緊增加管理人員的負(fù)擔(dān),且軟件工程配置人員有一定規(guī)則,不是開發(fā)人員越多越好。
2. 框架選型
選擇合適框架的前提下能更好的提高開發(fā)效率,但是框架的選型要考慮同組開發(fā)人員的整體水平,框架要約簡單越好,簡而不繁最優(yōu) ,還要兼顧團隊中的測試 需求等人員,如果框架選型上可以讓測試和需求人員一同參與開發(fā)(一般只要求測試人員可以一同開發(fā),如果框架選型后可以讓需求人員一同參與開發(fā)則最好,畢竟開發(fā)項目時壓榨人力資源是每個管理者追求的)。
3. 代碼工作量
項目中編碼必可不少,但如果能盡量減少開發(fā)的代碼量,讓人員有更多時間關(guān)注業(yè)務(wù)方向(畢竟開發(fā)項目主要還是與業(yè)務(wù)相關(guān)聯(lián)緊密),既然不想寫多余代碼,自然而然想到通過可視化操作來實現(xiàn)(現(xiàn)在 APP 開發(fā)都可視化,幾分鐘就可以生成一個),架構(gòu)師就主要考慮開發(fā)出可以讓開發(fā)人員可視化工作的框架。
詳細(xì)效率:
人員配置方面,我所在項目目前配備人員:
架構(gòu)師兼開發(fā)工程師(A),開發(fā)工程師(1-2 名,B 和 C)無開發(fā)經(jīng)驗或從測試組以及其他部門借調(diào)(沒辦法,公司不給多配人),測試人員以及需求人員和其他組公用。
鑒于以上人員組合,如果選用 Spring MVC 等框架的情況下,只有A有能力快速開發(fā)且需要編寫大量代碼,B 和 C 需要先提前對其進行培訓(xùn),培訓(xùn)結(jié)束后開始開發(fā),效率肯定不如有經(jīng)驗的開發(fā)人員,即使 B 和 C 是同 A 一樣的開發(fā)能力,三人同時開發(fā)編碼量也比較大。
此時如果 A 開發(fā)一工具可以讓 B 和 C 可視化編程操作,如當(dāng)前所在項目使用的架構(gòu),通過工具 T_VISUAL(A 開發(fā)出來的可視化工具),B 和 C 完全可以在無基礎(chǔ)開發(fā)能力的情況完成功能開發(fā),如下圖:
這是參考開源軟件 ETL 工具 KETTLE 實現(xiàn)模式,開發(fā)了一條后臺程序流程工具,比如界面上 VALI_LOGIN_CHECK
這個表示一個功能塊,該功能可以作為一個簡單判斷功能塊,其中 INPUT 插件表示接收 WEB REQUEST 請求的參數(shù),如下圖:
這三個參數(shù)是從頁面請求傳入,后續(xù)步驟分別判斷用戶名密碼驗證是否符合驗證要求。
用以上工具此時 A 只需全力開發(fā)需要的功能插件,而 B 與 C 只需要規(guī)劃業(yè)務(wù)功能塊,比如項目中需要的登錄、注冊、獲取用戶信息、獲取產(chǎn)品列表等功能模塊,只需要創(chuàng)建對應(yīng)的功能模塊即可。B 和 C 無需編碼,只需可視化設(shè)計流程即可,后續(xù)只需安排好模塊功能,人員安排可以成幾何倍擴展,而無需擔(dān)心開發(fā)人員能力問題,借助工具,只需要基礎(chǔ)開發(fā)人員,具有一定的邏輯能力即可。
如果架構(gòu)師沒有開發(fā)出對應(yīng)的可視化工具,則建議架構(gòu)師設(shè)計時應(yīng)盡量先將各單元操作類獨立成單個插件(類似于上圖工具的插件步驟),這樣編寫代碼的時候,無需編寫功能塊的詳細(xì)內(nèi)容,只需編寫功能流程,即編寫時。
如下圖:
其中 A 只需要編寫功能塊的內(nèi)容,B 和 C 只需要調(diào)用功能塊重的模塊類進行拼接。項目難點在功能塊實現(xiàn)上,而具體模塊實現(xiàn)功能無需考慮具體功能實現(xiàn),只需考慮業(yè)務(wù)流程即可,對開發(fā)能力要求較低,這樣 A 就可以帶領(lǐng) B 和 C 進行開發(fā),且 A 不需要對 B 和 C 進行詳細(xì)指導(dǎo),只需要再他們覺得有問題的時候進行解答即可。每個人都可以更加專注,如果后續(xù)功能模塊需要增加的話,只需要增加和 B、C 同等水平的即可,而無需增加 A 類工程師。大大降低人員成本,開發(fā)效率上也有高效率。
Web 框架上選用 Spring MVC 雖然符合主流,但對人員要求比較高,為了兼顧團隊整體可以考慮一些輕量化框架如 JFinal(現(xiàn)在項目所用),對人員要求較低,且適合初級開發(fā)人員。
以上是本人總結(jié)的一些經(jīng)驗以及個人帶領(lǐng)團隊開發(fā)中總結(jié)的一些方法,主要兼顧下團隊中的其他人員,畢竟高大上的框架看上去完美,但是確是開發(fā)人員的噩夢,尤其是要在編寫代碼量巨大的份上。
多年的開發(fā)經(jīng)驗總結(jié)下來就是,程序員需要懶,因為只有懶才能開發(fā)出高效的工具以及流程,你看一個開發(fā)人員每日編程 代碼量巨大,看似勤奮,但是卻比不上一個使用工具的開發(fā)人員一半的工作量,有時候開發(fā)停下來要思考下如何將當(dāng)前的工作流程簡化,編寫的代碼可以盡可能的小而精,從而開發(fā)出可以復(fù)用的工具。
最后附上我的個人公眾號:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)頁名稱:JavaWeb后臺開發(fā)效率提高-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://aaarwkj.com/article0/dohioo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、電子商務(wù)、網(wǎng)站設(shè)計公司、Google、商城網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容