在我前面有很多篇隨筆介紹了Web API 接口層的架構(gòu)設(shè)計(jì),以及對微信公眾號、企業(yè)號、小程序等模塊的分類劃分。例如在《C#開發(fā)微信門戶及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系》介紹了相關(guān)模塊的劃分,在《基于 ...
在我前面有很多篇隨筆介紹了Web API 接口層的架構(gòu)設(shè)計(jì),以及對微信公眾號、企業(yè)號、小程序等模塊的分類劃分。例如在《 C#開發(fā)微信門戶及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系 》介紹了相關(guān)模塊的劃分,在《 基于微信小程序的系統(tǒng)開發(fā)準(zhǔn)備工作 》介紹了Web API的架構(gòu)設(shè)計(jì)思路。本篇隨筆對之前介紹的架構(gòu)內(nèi)容進(jìn)行統(tǒng)一的調(diào)整更新,以便更加方便實(shí)際項(xiàng)目的應(yīng)用開發(fā),以期達(dá)到統(tǒng)一、重用、清晰的目的。
我們知道,目前微信企業(yè)應(yīng)用,分為公眾號、企業(yè)號(企業(yè)微信)、小程序三種應(yīng)用模式,對于常規(guī)的開發(fā)來說,我們對每個(gè)模式的應(yīng)用都分為了兩個(gè)不同的部分,一個(gè)是和業(yè)務(wù)數(shù)據(jù)相關(guān)的數(shù)據(jù)管理、一個(gè)是和API接口相關(guān)的API管理,兩者整合為一個(gè)完整的應(yīng)用。
公眾號、企業(yè)號(企業(yè)微信)、小程序三種應(yīng)用模式的模塊劃分如下圖所示。
業(yè)務(wù)數(shù)據(jù)管理模塊,一般還需要調(diào)用API接口進(jìn)行相關(guān)的處理操作,因此他們之間的項(xiàng)目引用關(guān)系如下所示
另外,這三種類型的API接口也公用了一些業(yè)務(wù)對象和實(shí)體類,因此把它們抽取出來作為公共項(xiàng)目模塊,如這三類接口項(xiàng)目統(tǒng)一使用了一個(gè)公共實(shí)體類項(xiàng)目。
除了這些之外,我們做項(xiàng)目,一般還涉及到一些基礎(chǔ)功能模塊,如公用類庫,以及附件管理、通訊錄管理、權(quán)限管理模塊等內(nèi)容,我們可以把后者幾個(gè)模塊放在一起,組成基礎(chǔ)模塊。
隨著基于JSON格式的Web API的廣泛應(yīng)用,越來越多的企業(yè)采用Web API接口服務(wù)層,作為統(tǒng)一接口的核心所在,也成為Web API核心層?;贘SON格式的接口,可以廣泛地、跨平臺的應(yīng)用于IOS、安卓等移動端,也可以應(yīng)用在常規(guī)的Web業(yè)務(wù)系統(tǒng),Winform業(yè)務(wù)系統(tǒng)、微信應(yīng)用、微信小程序等方方面面,因此企業(yè)內(nèi)部形成自己是的一套Web API標(biāo)準(zhǔn)和詳細(xì)的文檔非常重要,一旦完善了,就可以供各個(gè)業(yè)務(wù)場景使用,這些業(yè)務(wù)可以外包給其他軟件公司或者團(tuán)隊(duì),各自分離開發(fā),而自己內(nèi)部則只需要花費(fèi)精力來統(tǒng)一維護(hù)Web API核心層和提高整個(gè)核心層的功能接口穩(wěn)定、緩存處理等方面事情即可。其他業(yè)務(wù)團(tuán)隊(duì)開發(fā)的系統(tǒng)只需要遵循整個(gè)大接口平臺的統(tǒng)一規(guī)劃,完成各自的功能需求即可,不會造成數(shù)據(jù)庫的不一致,更不會讓某家公司掌握核心的技術(shù)資源,尾大不掉的尷尬情形。
基于上面的分析,我們企業(yè)最終圍繞著Web API核心層做了不同的業(yè)務(wù)應(yīng)用,如下圖所示。
再進(jìn)一步詳細(xì)各個(gè)模塊的分層,我們可以細(xì)化為下面的架構(gòu)設(shè)計(jì)圖,所有模塊均圍繞著Web API 接口層進(jìn)行擴(kuò)展,底層的數(shù)據(jù)存儲對上層的應(yīng)用是完全透明,我們可以根據(jù)需要拆分各種業(yè)務(wù)數(shù)據(jù)庫,以及使用我們認(rèn)為合適的數(shù)據(jù)庫。
其中我們在Web API接口層上還看到一個(gè)微信消息交互的模塊,這個(gè)模塊我們?yōu)榱朔奖阌蛎丝诘奶幚?,和Web API 是統(tǒng)一放在一起的,它負(fù)責(zé)和騰訊微信服務(wù)器進(jìn)行消息的交互處理,從而實(shí)現(xiàn)各種消息推送處理。
微信的服務(wù)器架起了客戶手機(jī)和開發(fā)者服務(wù)器的一個(gè)橋梁,通過消息的傳遞和響應(yīng),實(shí)現(xiàn)了與用戶的交互操作,下面是它的消息流程圖。
通過對這幾類業(yè)務(wù)應(yīng)用的模塊分析,我們就可以建立相關(guān)的項(xiàng)目了,來分別對這些數(shù)據(jù)和API進(jìn)行管理,如我們根據(jù)這些分類,在Visual Studio的項(xiàng)目管理中看到的項(xiàng)目如下所示。
其中由于我們這里的Web API 是一個(gè)統(tǒng)一的出口,因此會整合很多Web API控制器,以提供所有業(yè)務(wù)的接口,因此對Web API 控制器的管理就顯得很重要,這里建議引入Area區(qū)域進(jìn)行管理控制器類,這種各個(gè)模塊就能夠很好分門別類的進(jìn)行管理了。
如下圖所示是我們的Web API項(xiàng)目的控制器Area區(qū)域分類,把微信公眾號、企業(yè)號、小程序、基礎(chǔ)框架、第三方接口、CRM等內(nèi)容進(jìn)行不同的劃分。