C#開發微信門戶及應用(43)--微信各個項目模塊的定義和相互關係

来源:http://www.cnblogs.com/wuhuacong/archive/2016/06/18/5595308.html
-Advertisement-
Play Games

我們在開發微信相關的應用的時候,一般需要完善的基礎模塊支持,包括微信公眾號,微信企業號,以及一些業務模塊的支持,一般隨著功能的增多,我們需要非常清晰的界定他們的關係。模塊的分拆以及合併往往需要考慮的代碼的重用,而且儘量做到簡單而不重覆。本篇隨筆基於我的微信框架的各個模塊的功能介紹以及他們關係的描述。 ...


我們在開發微信相關的應用的時候,一般需要完善的基礎模塊支持,包括微信公眾號,微信企業號,以及一些業務模塊的支持,一般隨著功能的增多,我們需要非常清晰的界定他們的關係。模塊的分拆以及合併往往需要考慮的代碼的重用,而且儘量做到簡單而不重覆。本篇隨筆基於我的微信框架的各個模塊的功能介紹以及他們關係的描述。

1、公眾號模塊的命名及相關關係

微信開發,我們首先需要利用我們的語言(這裡是利用C#語言),為所有用到的API介面實現進一步的封裝,方便使用,微信API模塊包含的內容很多,大概可以分為下麵的項目。

有了這些介面功能的封裝類,只是萬里長征的第一步,我們還需要圍繞這些介面,以及我們的業務模塊實現更多交互功能的。

我們在WHC.Weixin.Data模塊裡面,定義了包含公眾號的消息分派處理介面,這個分派介面是對接收來自微信伺服器的各種消息事件進行響應;另外該模塊還包含一些常規的數據存儲,如關註用戶、菜單、文章內容等方面數據的存儲,如下所示。

當然,這個WHC.Weixin.Data是集大成者,它需要使用WHC.Weixin.API的項目內容來做數據提交,同時也是需要使用內部的數據存儲處理模塊。

 

2、企業號模塊的命名及相關關係

企業號的做法和公眾號類似,也是需要對微信提供的各種API進行封裝,方便我們後面的介面調用,不過企業號目前支持的功能相對公眾號少一些,大概包括有基礎介面、企業號應用介面、菜單管理、通訊錄管理、消息管理、搖一搖周邊等模塊。隨著企業號功能的逐步完善和加入,可能騰訊會加入更多的一些功能模塊。

 

同樣我們參考微信公眾號的做法,也是建立一個數據存儲管理的項目,作為微信消息事件的處理入口,同時也管理存儲一些必須的數據,包括需要同步的用戶、標簽、部門等數據。

隨著微信公眾號和企業號的功能逐漸統一,很多介面的交互數據幾乎是一樣的,因此我們可以把公用的實體類部分作為一個獨立的項目,方便公眾號和企業號兩個項目的共同使用,這個項目命名為WHC.Common.Entity

它們幾個項目關係如下所示。

項目目錄如下所示,包括了基礎模塊、搖一搖紅包、菜單及多媒體管理模塊、消息請求模塊、消息應答模塊、搖一搖周邊、微信支付等。

由於微信支付的介面實現,是在企業號和公眾號相對比較獨立的一個API介面群,因此我們可以微信支付部分獨立作為一個介面實現來處理,公眾號或者企業號需要的時候,包含進去使用即可。

我們把它命名為WHC.Common.API項目。

還有我在前面隨筆《C#開發微信門戶及應用(42)--使用Autofac實現微信介面處理的控制反轉處理》裡面介紹過的基於對外部介面和二維碼掃碼處理介面的封裝項目,命名為WHC.Common.Handler

整個插件業務介面包括:百度的地理位置解析介面、電影院信息查詢、天氣信息查詢、交通信息查詢、旅游信息查詢等,還有簡訊、郵件發送等常規介面,都可以使用這種方式進行處理。介面的效果展示如下所示。

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

當然,除了這些之外,我們做項目,一般還涉及到一些基礎功能模塊,如公用類庫,以及附件管理、通訊錄管理、許可權管理模塊等內容,我們可以把後者幾個模塊放在一起,組成基礎模塊。

 

 

3、微信界面項目

微信界面部分是前面模塊組件的綜合使用,在微信應用裡面,一般需要使用80埠和微信伺服器做交互,而這個同時往往也是我們項目的埠地址。 

如果考慮的更好一些,我們可以採用以Web API優先的理念來設計整個企業應用體系的。Web API作為整個紐帶的核心,在整個核心層需要考慮到統一性、穩定性、以及安全性等方面因素。

 

這樣我們不管是Web項目、Winform項目,還是移動項目,都可以通過共同的介面Web API進行接入,實現更多元化的後臺管理或者是前端界面呈現了。

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

這樣最終就回到了我前面隨筆介紹過的《Web API應用架構設計分析(1)》、《Web API應用架構設計分析(2)》大平臺方案了,目前我正在努力整合所有微信的介面和相關的應用在一個大的Web API平臺上,逐漸整合我目前應用較為廣泛的混合式開發框架的相關技術和理念。

這樣全面構建的Web API作為核心層,可以在上面開發我們各種企業業務應用,實現我們一個大平臺的整合和多元化的應用,甚至我們可以把部分模塊外包給更加擅長的團隊,我們只需要確保我們核心的Web API層安全、健壯且具有良好的擴展性即可。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分類:C#、VS2015 創建日期:2016-06-19 使用教材:(十二五國家級規劃教材)《C#程式設計及應用教程》(第3版) 一、要點概述 別人提供的類都是為了簡化你的工作量用的,可是實際處理的事情千差萬別,要通過寫代碼做實際的事,你還得自己定義類。因此,先把如何自定義類及其涉及的相關概念和要點... ...
  • .Net中提供了許多方便使用的方法,包括在處理文件中查找文件、拷貝文件等,今天實現的是通過簡易的程式實現增量的備份文件。 首先需要的是選擇備份源文件路徑SourcePath和備份目標文件路徑DestinationPath,然後通過StopWatch統計拷貝所耗費的時間。(註意:使用StopWatch ...
  • C# Code 1 2 3 4 5 6 7 8 9 10 ... ...
  • 第一部分 瞭解C# C#是微軟公司在2000年7月發佈的一種全新且簡單、安全、面向對象的程式設計語言,是專門為.NET的應用而開發的。體現了當今最新的程式設計技術的功能和精華。.NET框架為C#提供了一個強大的、易用的、邏輯結構一致的設計環境。其特點: 語言簡潔 保留了C++的強大功能; 快速應用開 ...
  • 普通上傳 view: Controller: Ajax上傳 用普通的ajax提交表單的時候,不能把文件流傳到後端去,所以要用到jquery.form.js jquery.form.js到官網下載或者從這裡下載:http://pan.baidu.com/s/1c2JS60C view: Control ...
  • 原文: "Controller methods and views" 作者: "Rick Anderson" 翻譯: "謝煬(Kiler)" 校對: "孟帥洋(書緣)" 、 "張仁建(第二年.夏)" 、 "許登洋(Seay)" 、 "姚阿勇(Dr.Yao)" 、 "婁宇(Lyrics)" 我們已經初 ...
  • 無錫一個2線城市,本地人,今年29了~自身情況老婆快生小孩啦~ 當前公司技術部搬去上海了~我由於家庭情況不能去上海,領導留我在無錫繼續做~但身邊一個人交流不方便便有了離職想法。 主要想找個公司長期發展,不想換來換去,現在有2家公司都發了off. A公司,9.5K,離家進一點走過去10分鐘,大小休(2 ...
  • 昨天Insus.NET有實現《使用ViewModel來實現多個Model傳送至視圖》http://www.cnblogs.com/insus/p/5594134.html 那今天Insus.NET想使用另一種方法來實現這個傳遞多個model至視圖中去。ExpandoObject動態對象。一些數據還是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...