項目介紹

[通信模塊對于物聯網連接控制模塊的概述]

通信物聯控制模塊
通信物聯模塊

迭代創新

在許多具有復雜系統的領域中,模塊化都被證明是一個有用的概念,這樣一種在傳統設計基礎上發展起來的一種新的思想,現在已經成為一種新技術被廣泛的應用。


在物聯網領域中,當現在有的代碼結構使你無法很方便地添加新特性之時,如何通過優化代碼,項目結構,做到項目的高可用,可維護性強,代碼的高內聚、低耦合的產品需求效益?本文著力在代碼重構的方向上,通過模塊化的思路設計來講解如何重構一個低內聚、高耦合的項目,使其達到高度優化,完善設計,使項目架構更完善可用的目的。

我們都知道Java面向對象最核心的就是封裝、繼承、多態,其中封裝就是模塊化設計的基礎,通過對通用方法,特性的封裝,形成了一個個方法和類文件,那么通過對一些相同作用亦或者相互起作用來實現某一個作用的類和方法進行整理歸并到單獨的項目中,就形成了不同的模塊,這也是代碼設計的初衷體現:“Don’t repeat yourself”,通過封裝抽象代碼共性,進行單一設計來達到模塊化設計的原則,從而實現服務層面的復用,這里我簡單總結一下模塊化設計原則需要做到的幾點內容:

1、模塊必須體現單一原則,做好單一的事情而不是做更多事情;

2、合理拆分,越核心、越底層的模塊要追求穩定,更少的更改;

3、模塊之間不要有太多依賴,特別要避免出現相互依賴;

4、提升每一個模塊的完備性,減少模塊缺陷;

為什么要進行模塊化設計?

模塊化的代碼設計最簡單的是可以實現按需加載,進而保證了我們不會把寶貴的頁面加載時間浪費在下載和解釋多余的代碼上,從而更高效地完成任務。我們來簡單的列舉一個例子,從團隊協調合作來講述模塊化設計的重要性。

比如現在有一個電商項目,由三個團隊來進行開發,其中A團隊主要負責前端和UI設計。B團隊主要負責商品數據展示和下單服務,C團隊主要負責支付和物流服務,當然實際得到電商項目不能只是簡簡單單的這么一點內容,這里只是大概舉個例子,但是從上面我們已經可以看出,如果我們的電商項目不進行模塊化設計的話,三個團隊之間的工作展開是會存在重疊關系的,其中BC團隊數據的交互呈現需要依賴A團隊的作業交互,而A團隊也需要BC團隊在數據上提供支撐,B團隊在商品下單進行支付和支付完后查詢物流進度等又需要依賴C團隊的支付功能,C團隊的物流展現也需要B團隊提供訂單數據。

那么在項目未進行模塊化開發之前三個團隊勢必要花費大量時間在一些提前約定事件,比如說數據格式內容,接口簽名和響應等問題上消耗大量時間成本,在項目開發過程中,溝通成本太高往往是導致項目開發進度延期的主要問題之一,所以如果該電商項目進行模塊化設計,前后端進行分離開發,A團隊先完成頁面設計和提供接口文檔,BC團隊講后臺服務模塊化,拆分為支付模塊,物流模塊,商品模塊等,講耦合的工作進行單一化拆分,這樣彼此的工作就能并行的展開,各自維護起各自的模塊也會更加高效、便捷。

簡單來說——模塊化,將功能分解,降低之間的耦合性。 從而,為了替換某個模塊達到質量或效率的提升,就不會改變整個結構,只需要改相應的模塊,工作量就會明顯減少,所以模塊化的應用,是每個行業的終極設計。

模塊化的優缺點

在平時的工作任務中,歸納起來,模塊化設計幾個功能:

一、達到業務功能隔離,實現項目的版本控制和跨團隊并行開發的可能;

二、實現了代碼的高可用和可復用,減少冗余代碼,增強了可維護性;

三、分模塊化可以實現分布式部署,減少項目癱瘓風險,提升了項目性能;

四、項目層次清晰明了,模塊化設計也為微服務實現提供了可能。

任何事情都有其兩面性,當然模塊化設計也不是萬能的,由于前期模塊化設計需要花費時間,不同模塊之間銜接存在風險,同樣也增加了項目開發的難度,前期無法做到快速開發;另外模塊間通信,模塊間發送消息也會很耗性能。

模塊化思路分解。

以我們的“賽億科技·CMP”一個物聯網連接管理平臺為例,通過該平臺我們為物聯網卡及設備提供了通信管理組件、設備管理組件、eSIM組件、數據服務組件于一體的服務,下面我將為大家講解如何對這樣一個平臺進行模塊化拆分。

首先,解決前后端分離問題;將前端當成一個模塊,后端也整體當成一個模塊來進行開發。在實現前后端分離上這里提供一個參考給大家,與其使用AngularJs來做前端路由控制不如使用Vue.js來實現,vue.js有更友好的中文文檔支持,更輕便小巧易上手的特性,而且也是spa(single page web application)單頁web頁面開發的體現者,在使用vue.js分離前端之后,只需要使用nginx代理靜態頁面,就能實現頁面的部署,后端只需要提供跟前端人員約定好得到rest接口即可。

第二,后端的模塊化上;模塊化設計原則中提到過抽象模塊盡量抽象更底層、更核心的業務,因為只有底層核心的業務才是驅動整個項目的關鍵,相對比而言,一些簡單的功能,例如登錄,在長期來看代碼不存在變動,不涉及第三方授權登錄,需要做Oauth2認證的情況下,如果只是通過簡單的攔截器和區區百余行代碼就能解決的事情,去抽取出一個登錄模塊實屬沒必要。在物聯網連接管理服務中,圍繞著卡和設備為核心的業務展開,通過分析業務功能我們可以發現,無論是卡還是設備都需要進行流量充值和第三方接口調用這兩塊核心,那么完全可以將拆分一個充值模塊和內部API模塊(這里區別于對外提供的API,僅供項目模塊之間調用),對外我們還可以提供一個API模塊,以便第三方通過API能夠接入我方平臺,使用我方平臺提供的服務。

在核心業務模塊之外,我們還需要做數據的緩存,統計,更新等操作,并且該操作將會是頻繁而且費時的,為了保證數據加載的實時性,就必須摒棄懶加載的方式,通過某種任務調度的方式去異步更新和緩存數據,這就需要拆分項目的任務調度模塊,在我看來這也是每一個項目所必須的一個模塊。

通過前面簡單的舉例和講解,可以看出在進行模塊化分解時并不是一時興起就進行拆分,而是在對功能點適用范圍,變更頻率,是否核心等多方面分析之后才能得出是否需要進行模塊化拆分這么一個結論的,只有合理的模塊化設計才能真正的體現這樣去做所帶來的好處。

亚洲偷自拍另类图片综合社区,欧美精品高清无码,欧美亚洲国产免费高清视频,亚洲欧美日韩国产手机在线