當(dāng)前位置:首頁(yè) > IT技術(shù) > 微信平臺(tái) > 正文

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系
2021-07-25 21:09:39

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系

我們?cè)陂_(kāi)發(fā)微信相關(guān)的應(yīng)用的時(shí)候,一般需要完善的基礎(chǔ)模塊支持,包括微信公眾號(hào),微信企業(yè)號(hào),以及一些業(yè)務(wù)模塊的支持,一般隨著功能的增多,我們需要非常清晰的界定他們的關(guān)系。模塊的分拆以及合并往往需要考慮的代碼的重用,而且盡量做到簡(jiǎn)單而不重復(fù)。本篇隨筆基于我的微信框架的各個(gè)模塊的功能介紹以及他們關(guān)系的描述。

我們?cè)陂_(kāi)發(fā)微信相關(guān)的應(yīng)用的時(shí)候,一般需要完善的基礎(chǔ)模塊支持,包括微信公眾號(hào),微信企業(yè)號(hào),以及一些業(yè)務(wù)模塊的支持,一般隨著功能的增多,我們需要非常清晰的界定他們的關(guān)系。模塊的分拆以及合并往往需要考慮的代碼的重用,而且盡量做到簡(jiǎn)單而不重復(fù)。本篇隨筆基于我的微信框架的各個(gè)模塊的功能介紹以及他們關(guān)系的描述。

1、公眾號(hào)模塊的命名及相關(guān)關(guān)系

微信開(kāi)發(fā),我們首先需要利用我們的語(yǔ)言(這里是利用C#語(yǔ)言),為所有用到的API接口實(shí)現(xiàn)進(jìn)一步的封裝,方便使用,微信API模塊包含的內(nèi)容很多,大概可以分為下面的項(xiàng)目。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用

有了這些接口功能的封裝類(lèi),只是萬(wàn)里長(zhǎng)征的第一步,我們還需要圍繞這些接口,以及我們的業(yè)務(wù)模塊實(shí)現(xiàn)更多交互功能的。

我們?cè)赪HC.Weixin.Data模塊里面,定義了包含公眾號(hào)的消息分派處理接口,這個(gè)分派接口是對(duì)接收來(lái)自微信服務(wù)器的各種消息事件進(jìn)行響應(yīng);另外該模塊還包含一些常規(guī)的數(shù)據(jù)存儲(chǔ),如關(guān)注用戶(hù)、菜單、文章內(nèi)容等方面數(shù)據(jù)的存儲(chǔ),如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_02

當(dāng)然,這個(gè)WHC.Weixin.Data是集大成者,它需要使用WHC.Weixin.API的項(xiàng)目?jī)?nèi)容來(lái)做數(shù)據(jù)提交,同時(shí)也是需要使用內(nèi)部的數(shù)據(jù)存儲(chǔ)處理模塊。

?C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_03

2、企業(yè)號(hào)模塊的命名及相關(guān)關(guān)系

企業(yè)號(hào)的做法和公眾號(hào)類(lèi)似,也是需要對(duì)微信提供的各種API進(jìn)行封裝,方便我們后面的接口調(diào)用,不過(guò)企業(yè)號(hào)目前支持的功能相對(duì)公眾號(hào)少一些,大概包括有基礎(chǔ)接口、企業(yè)號(hào)應(yīng)用接口、菜單管理、通訊錄管理、消息管理、搖一搖周邊等模塊。隨著企業(yè)號(hào)功能的逐步完善和加入,可能騰訊會(huì)加入更多的一些功能模塊。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_04?

同樣我們參考微信公眾號(hào)的做法,也是建立一個(gè)數(shù)據(jù)存儲(chǔ)管理的項(xiàng)目,作為微信消息事件的處理入口,同時(shí)也管理存儲(chǔ)一些必須的數(shù)據(jù),包括需要同步的用戶(hù)、標(biāo)簽、部門(mén)等數(shù)據(jù)。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_05

隨著微信公眾號(hào)和企業(yè)號(hào)的功能逐漸統(tǒng)一,很多接口的交互數(shù)據(jù)幾乎是一樣的,因此我們可以把公用的實(shí)體類(lèi)部分作為一個(gè)獨(dú)立的項(xiàng)目,方便公眾號(hào)和企業(yè)號(hào)兩個(gè)項(xiàng)目的共同使用,這個(gè)項(xiàng)目命名為WHC.Common.Entity。

它們幾個(gè)項(xiàng)目關(guān)系如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_06

項(xiàng)目目錄如下所示,包括了基礎(chǔ)模塊、搖一搖紅包、菜單及多媒體管理模塊、消息請(qǐng)求模塊、消息應(yīng)答模塊、搖一搖周邊、微信支付等。
C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_07

由于微信支付的接口實(shí)現(xiàn),是在企業(yè)號(hào)和公眾號(hào)相對(duì)比較獨(dú)立的一個(gè)API接口群,因此我們可以微信支付部分獨(dú)立作為一個(gè)接口實(shí)現(xiàn)來(lái)處理,公眾號(hào)或者企業(yè)號(hào)需要的時(shí)候,包含進(jìn)去使用即可。

我們把它命名為WHC.Common.API項(xiàng)目。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_08

還有我在前面隨筆《C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(42)--使用Autofac實(shí)現(xiàn)微信接口處理的控制反轉(zhuǎn)處理》里面介紹過(guò)的基于對(duì)外部接口和二維碼掃碼處理接口的封裝項(xiàng)目,命名為WHC.Common.Handler。

整個(gè)插件業(yè)務(wù)接口包括:百度的地理位置解析接口、電影院信息查詢(xún)、天氣信息查詢(xún)、交通信息查詢(xún)、旅游信息查詢(xún)等,還有短信、郵件發(fā)送等常規(guī)接口,都可以使用這種方式進(jìn)行處理。接口的效果展示如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_09

因此上面這些以WHC.Common命名的項(xiàng)目,基本上就是可以通用在公眾號(hào)和企業(yè)號(hào)兩邊的項(xiàng)目模塊了,它們包含前面介紹過(guò)的幾個(gè)模塊,如下所示。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_10

當(dāng)然,除了這些之外,我們做項(xiàng)目,一般還涉及到一些基礎(chǔ)功能模塊,如公用類(lèi)庫(kù),以及附件管理、通訊錄管理、權(quán)限管理模塊等內(nèi)容,我們可以把后者幾個(gè)模塊放在一起,組成基礎(chǔ)模塊。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_11?

?

3、微信界面項(xiàng)目

微信界面部分是前面模塊組件的綜合使用,在微信應(yīng)用里面,一般需要使用80端口和微信服務(wù)器做交互,而這個(gè)同時(shí)往往也是我們項(xiàng)目的端口地址。?

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_12

如果考慮的更好一些,我們可以采用以Web API優(yōu)先的理念來(lái)設(shè)計(jì)整個(gè)企業(yè)應(yīng)用體系的。Web API作為整個(gè)紐帶的核心,在整個(gè)核心層需要考慮到統(tǒng)一性、穩(wěn)定性、以及安全性等方面因素。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_13

?

這樣我們不管是Web項(xiàng)目、Winform項(xiàng)目,還是移動(dòng)項(xiàng)目,都可以通過(guò)共同的接口Web API進(jìn)行接入,實(shí)現(xiàn)更多元化的后臺(tái)管理或者是前端界面呈現(xiàn)了。

Web API層作為一個(gè)公共的接口層,我們就很好保證了各個(gè)界面應(yīng)用層的數(shù)據(jù)一致性,如果考慮到響應(yīng)式的集成處理,我們甚至可以把微信應(yīng)用、APP應(yīng)用、Web應(yīng)用做層一套Web程序,即使為了利用各自應(yīng)用的特殊性,也可以把這些應(yīng)用做的很相似,這樣就給用戶(hù)提供了一個(gè)統(tǒng)一的界面表示方式,極大提高客戶(hù)使用的界面體驗(yàn)效果,用戶(hù)幾乎不需要額外的界面學(xué)習(xí),就可以熟悉整個(gè)應(yīng)用體系的各個(gè)模塊使用。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_14

這樣最終就回到了我前面隨筆介紹過(guò)的《Web API應(yīng)用架構(gòu)設(shè)計(jì)分析(1)》、《Web API應(yīng)用架構(gòu)設(shè)計(jì)分析(2)》大平臺(tái)方案了,目前我正在努力整合所有微信的接口和相關(guān)的應(yīng)用在一個(gè)大的Web API平臺(tái)上,逐漸整合我目前應(yīng)用較為廣泛的混合式開(kāi)發(fā)框架的相關(guān)技術(shù)和理念。

這樣全面構(gòu)建的Web API作為核心層,可以在上面開(kāi)發(fā)我們各種企業(yè)業(yè)務(wù)應(yīng)用,實(shí)現(xiàn)我們一個(gè)大平臺(tái)的整合和多元化的應(yīng)用,甚至我們可以把部分模塊外包給更加擅長(zhǎng)的團(tuán)隊(duì),我們只需要確保我們核心的Web API層安全、健壯且具有良好的擴(kuò)展性即可。

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_15

?

C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_16主要研究技術(shù):代碼生成工具、會(huì)員管理系統(tǒng)、客戶(hù)關(guān)系管理軟件、病人資料管理軟件、Visio二次開(kāi)發(fā)、酒店管理系統(tǒng)、倉(cāng)庫(kù)管理系統(tǒng)等共享軟件開(kāi)發(fā)
專(zhuān)注于Winform開(kāi)發(fā)框架/混合式開(kāi)發(fā)框架、Web開(kāi)發(fā)框架、Bootstrap開(kāi)發(fā)框架、微信門(mén)戶(hù)開(kāi)發(fā)框架的研究及應(yīng)用。
??轉(zhuǎn)載請(qǐng)注明出處:
C#開(kāi)發(fā)微信門(mén)戶(hù)及應(yīng)用(43)--微信各個(gè)項(xiàng)目模塊的定義和相互關(guān)系_微信公眾平臺(tái)及門(mén)戶(hù)應(yīng)用_16撰寫(xiě)人:伍華聰??

本文摘自 :https://blog.51cto.com/w

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >