C#開發(fā)微信門戶及應用(43)--微信各個項目模塊的定義和相互關(guān)系
我們在開發(fā)微信相關(guān)的應用的時候,一般需要完善的基礎模塊支持,包括微信公眾號,微信企業(yè)號,以及一些業(yè)務模塊的支持,一般隨著功能的增多,我們需要非常清晰的界定他們的關(guān)系。模塊的分拆以及合并往往需要考慮的代碼的重用,而且盡量做到簡單而不重復。本篇隨筆基于我的微信框架的各個模塊的功能介紹以及他們關(guān)系的描述。
1、公眾號模塊的命名及相關(guān)關(guān)系
微信開發(fā),我們首先需要利用我們的語言(這里是利用C#語言),為所有用到的API接口實現(xiàn)進一步的封裝,方便使用,微信API模塊包含的內(nèi)容很多,大概可以分為下面的項目。
有了這些接口功能的封裝類,只是萬里長征的第一步,我們還需要圍繞這些接口,以及我們的業(yè)務模塊實現(xiàn)更多交互功能的。
我們在WHC.Weixin.Data模塊里面,定義了包含公眾號的消息分派處理接口,這個分派接口是對接收來自微信服務器的各種消息事件進行響應;另外該模塊還包含一些常規(guī)的數(shù)據(jù)存儲,如關(guān)注用戶、菜單、文章內(nèi)容等方面數(shù)據(jù)的存儲,如下所示。
當然,這個WHC.Weixin.Data是集大成者,它需要使用WHC.Weixin.API的項目內(nèi)容來做數(shù)據(jù)提交,同時也是需要使用內(nèi)部的數(shù)據(jù)存儲處理模塊。
?
2、企業(yè)號模塊的命名及相關(guān)關(guān)系
企業(yè)號的做法和公眾號類似,也是需要對微信提供的各種API進行封裝,方便我們后面的接口調(diào)用,不過企業(yè)號目前支持的功能相對公眾號少一些,大概包括有基礎接口、企業(yè)號應用接口、菜單管理、通訊錄管理、消息管理、搖一搖周邊等模塊。隨著企業(yè)號功能的逐步完善和加入,可能騰訊會加入更多的一些功能模塊。
?
同樣我們參考微信公眾號的做法,也是建立一個數(shù)據(jù)存儲管理的項目,作為微信消息事件的處理入口,同時也管理存儲一些必須的數(shù)據(jù),包括需要同步的用戶、標簽、部門等數(shù)據(jù)。
隨著微信公眾號和企業(yè)號的功能逐漸統(tǒng)一,很多接口的交互數(shù)據(jù)幾乎是一樣的,因此我們可以把公用的實體類部分作為一個獨立的項目,方便公眾號和企業(yè)號兩個項目的共同使用,這個項目命名為WHC.Common.Entity。
它們幾個項目關(guān)系如下所示。
項目目錄如下所示,包括了基礎模塊、搖一搖紅包、菜單及多媒體管理模塊、消息請求模塊、消息應答模塊、搖一搖周邊、微信支付等。
由于微信支付的接口實現(xiàn),是在企業(yè)號和公眾號相對比較獨立的一個API接口群,因此我們可以微信支付部分獨立作為一個接口實現(xiàn)來處理,公眾號或者企業(yè)號需要的時候,包含進去使用即可。
我們把它命名為WHC.Common.API項目。
還有我在前面隨筆《C#開發(fā)微信門戶及應用(42)--使用Autofac實現(xiàn)微信接口處理的控制反轉(zhuǎn)處理》里面介紹過的基于對外部接口和二維碼掃碼處理接口的封裝項目,命名為WHC.Common.Handler。
整個插件業(yè)務接口包括:百度的地理位置解析接口、電影院信息查詢、天氣信息查詢、交通信息查詢、旅游信息查詢等,還有短信、郵件發(fā)送等常規(guī)接口,都可以使用這種方式進行處理。接口的效果展示如下所示。
因此上面這些以WHC.Common命名的項目,基本上就是可以通用在公眾號和企業(yè)號兩邊的項目模塊了,它們包含前面介紹過的幾個模塊,如下所示。
當然,除了這些之外,我們做項目,一般還涉及到一些基礎功能模塊,如公用類庫,以及附件管理、通訊錄管理、權(quán)限管理模塊等內(nèi)容,我們可以把后者幾個模塊放在一起,組成基礎模塊。
?
?
3、微信界面項目
微信界面部分是前面模塊組件的綜合使用,在微信應用里面,一般需要使用80端口和微信服務器做交互,而這個同時往往也是我們項目的端口地址。?
如果考慮的更好一些,我們可以采用以Web API優(yōu)先的理念來設計整個企業(yè)應用體系的。Web API作為整個紐帶的核心,在整個核心層需要考慮到統(tǒng)一性、穩(wěn)定性、以及安全性等方面因素。
?
這樣我們不管是Web項目、Winform項目,還是移動項目,都可以通過共同的接口Web API進行接入,實現(xiàn)更多元化的后臺管理或者是前端界面呈現(xiàn)了。
Web API層作為一個公共的接口層,我們就很好保證了各個界面應用層的數(shù)據(jù)一致性,如果考慮到響應式的集成處理,我們甚至可以把微信應用、APP應用、Web應用做層一套Web程序,即使為了利用各自應用的特殊性,也可以把這些應用做的很相似,這樣就給用戶提供了一個統(tǒng)一的界面表示方式,極大提高客戶使用的界面體驗效果,用戶幾乎不需要額外的界面學習,就可以熟悉整個應用體系的各個模塊使用。
這樣最終就回到了我前面隨筆介紹過的《Web API應用架構(gòu)設計分析(1)》、《Web API應用架構(gòu)設計分析(2)》大平臺方案了,目前我正在努力整合所有微信的接口和相關(guān)的應用在一個大的Web API平臺上,逐漸整合我目前應用較為廣泛的混合式開發(fā)框架的相關(guān)技術(shù)和理念。
這樣全面構(gòu)建的Web API作為核心層,可以在上面開發(fā)我們各種企業(yè)業(yè)務應用,實現(xiàn)我們一個大平臺的整合和多元化的應用,甚至我們可以把部分模塊外包給更加擅長的團隊,我們只需要確保我們核心的Web API層安全、健壯且具有良好的擴展性即可。
?
專注于Winform開發(fā)框架/混合式開發(fā)框架、Web開發(fā)框架、Bootstrap開發(fā)框架、微信門戶開發(fā)框架的研究及應用。
??轉(zhuǎn)載請注明出處:
撰寫人:伍華聰??
本文摘自 :https://blog.51cto.com/w