利用規則引擎打造輕量級的面向服務程式設計模式

2021-09-06 10:47:26 字數 1350 閱讀 3838

目前的系統中,前端的變化越來越多樣。光web前端而言,html+js,jquery,ext以及其他的各種框架等。曾經ext剛出來時,我們為其美觀、整潔的樣式所吸引,但當我們開始熟悉並使用ext時,卻發現其介面讓人審美疲勞。前篇一律的介面,讓人覺得沒有創意。

最終,我們又回到原來前端的開發模式,通過美工設計介面和樣式。然後用jquery控制項,來實現設計的這種表單、列表等。ajax模式和post提交模式目前還是共存,考慮到安全性、效能等各種問題,還是不能某種前端技術就能主導整個系統的實現。

單當我們希望html5等幫我們統一手機、瀏覽器等多種終端時,卻發現html5的展現效果,並不令人滿意。特別是現在低版本ie的問題等。

相對而言,後台的服務程式開發,相對而言框架沒有那麼容易變化。ssh框架,基本可以滿足大部分專案的要求。

當面對前端的要求時,我們針對具體的介面要求,設計form類,bean類、action以及hibernate相關的配置檔案和類。這種模式由於現在技術成熟,相應的技術人員也多,因此我們可能感覺相對簡單。

但是這種模式也存在問題,對於乙個簡單的頁面應用,可能具有大量的class以及大量的xml配置檔案。而且對於不同的前端,我們基本上會配置不同的struts配置,並且建立新的類。雖然工作簡單,**也重複,但是龐大的檔案數目,也使得維護非常困難。

因此我們需要有個設想,能不能針對一種服務,不管是多種前端來訪問,後來實現上只需要乙個檔案就可以搞定。一項服務對應乙個檔案,當服務內容變更時,只需要改動乙個檔案的內容,就可以滿足多個終端的需要。

基於這種設想,我們需要定義每個前端,都用標準的介面。這一塊我們需要定義統一的url來接收服務,同時通過引數來區分返回的格式。返回格式包括json、xml、html、js等。

定義了統一介面之後,我們如何實現乙個檔案來對應實現乙個服務呢。這一塊我們需要借助規則引擎的實現。

規則引擎通過乙個規則包檔案,來定義傳入的介面資料、需要處理的資料庫物件、臨時變數或者物件、業務處理邏輯以及返回的介面資料。

通過乙個檔案這種設計方式,可以極大簡化系統的整個架構。架構師可以將每個介面上需要與伺服器端互動的功能,統一用單一的服務來加以設計。使得設計文件中的功能和最終實現的檔案,一一對應。

通過面向服務程式設計,徹底遮蔽了後台資料庫的實現,對於前端介面而言,只需要按照互動的要求,來和服務介面打交道。之後後來的服務,是採用關係型資料庫儲存、還是採用雲儲存、還是採用nosql儲存,就變得無關緊要。可以隨時對資料庫實現加以調整。

但是面向服務程式設計,還有乙個輕量級和重量級的問題。對於純粹的前端而言,url訪問方式沒有效能問題。但是如果是後台服務本身之間的相互呼叫,那就變成負擔了。這種情況下,就需要通過後端相互呼叫的介面。使得介面本身會自動判斷,如果是本地的話,就是native方式呼叫,如果是遠端服務,就通過url方式呼叫。

最終實現輕量級的面向服務程式設計。

輕量級規則引擎QLExpress

qlexpress 1 規則語言解析 自然語言 程式語言 可執行語言 2 規則動態配置 3 上線和下線管理 費用科目 物流訂單.倉儲tp,倉儲費 物流訂單.重量 0.5 if 物流訂單.重量 5 then else 費用科目 物流訂單.包裝tp,包裝費 物流訂單.重量 2.5 public clas...

利用http server打造輕量級Web伺服器

在很多情況下,需要在本地開啟http伺服器來測試,所以就需要乙個簡單的省事好用的http伺服器,以前的時候,都是使用php的本地環境,但是,自從學了nodejs,發現了http server好東西,不用配置直接在當前資料夾內開啟cmd,就能夠使用,簡單易用,輕鬆方便。http server是乙個簡單...

利用Lucene打造站內搜尋引擎的思路

為什麼要用lucene,而不用直接從資料庫裡搜尋記錄?主要是考慮到幾個因素 1 效能問題,lucene是基於檔案索引的搜尋機制,效能要比資料庫裡檢索更快,特別是資料量大的時候兩者區別比較明顯。資料庫用select檢索時,預設在執行sql語句時,會對錶鎖定,直到查詢完成 2 目前很多 都已經將頁面靜態...