本書以深度剖析Senparc.Weixin SDK框架的設計思想和使用方法為主干,全面介紹了開發微信公眾號(包含了訂閱號、服務號和小程序)所需的關鍵技能,包括了從需求分析、策劃,到賬號申請、驗證,再到全面的API及開發工具介紹,側重于服務器端開發。本書也涵蓋了盛派網絡團隊在多年的研發過中收集到的大量注意點,幫助開發者“避坑”。全書包含了四個部分:微信基礎介紹(第1-3章)、Senparc.Weixin SDK框架介紹(第4-13章)、Senparc.Weixin SDK接口介紹(第14-19章)和微信小程序(第20章),由淺入深指導開發者學習微信開發,在此過程中可以結合配套系統進行閱讀和練習:https://book.weixin.senparc.com。同時,本書也是Senparc.Weixin SDK作者為開發者奉上的一份官方文檔,書中詳細介紹了SDK中各個接口的位置及用法,可以幫助開發者靈活應用和改寫代碼。對于需要學習編程架構思想的開發者,本書也凝結了較多精華的思想和思考過程,可以作為參考。
★歷經2年精心雕琢,堪稱微信開發白皮書
★詳解微信公眾號、小程序開發的方方面面
★從寶貴“實戰案例”中總結“踩坑”經驗
★助你快速搭建微信公眾號、小程序的同時
★掌握盛派網絡多年的架構設計思想和技巧
★作者極端認真負責賦予本書不一般的品質
★Senparc.Weixin SDK GitHub C# 開源首位
★真正全面介紹微信開發所需所有關鍵技能
★騰訊資深工程師推薦
★★微信 c# 開發必須選它
自 2013 年 1 月 13 日 Senparc.Weixin SDK 開源項目發布以來,得到了 .NET 開發者的廣泛關注,成為了目前使用率最高的微信 .NET(C#)SDK,借著微信開發的風口,這個項目也成為國內關注度最高的 .NET 開源項目之一。
在這四年多的時間里,我帶領著盛派團隊一直保持著項目更新,目前也已經建立了 13個 QQ 群和多個微信群,以及 1 個問答平臺為開發者們答疑解惑、交流開發經驗。但是,我們的能力和精力終究是有限的,所謂“授人以魚,不如授人以漁”,將 SDK 的設計思想和使用方法整理成冊,提供給開發者們索引查閱,我想這或許是一件更有意義的事情。同時,在這多年的時間里,我們也接觸了眾多的項目,收集了許多開發者的交流內容,于是,我們將微信開發過程中的許多“坑”和注意點也整理到書中,方便開發者們“避坑”。書中的章節順序及內容都經過了仔細推敲,從微信開發的必備基礎知識,到 SDK 的原理介紹,再到接口的調用及使用技巧,輔以真實的開發案例和 Demo 介紹,幫助開發者輕松地搭建微信公眾號(包括小程序)的應用。
在盛派的文化中,“愛”和“分享”是兩個非常重要的元素!皭邸笔刮覀兡堋皭廴巳缂骸,用愛人的心去對待每一件事,用感恩的心去對待每一份收獲和挑戰;“分享”使我們樂意敞開自己,奉獻自己。向需要幫助的人分享自己的知識和見解已經成為盛派人幾乎每天的必修課,Senparc.Weixin SDK 開源項目就是在這樣的文化中孕育成長起來的。我們用“愛”不斷地“分享”著我們的成果,使越來越多的人受益,與此同時,我們也收到了來自開發者們大量的反饋和幫助,以及來自各界的捐贈,這一切助推著 SDK 的成長,也助力著中國的開源事業?吹皆絹碓蕉嗟娜讼嗷椭、樂于分享,是給我們最大的鼓舞。這里,我要真心地感謝曾經幫助過 Senparc.Weixin SDK 項目和盛派團隊的人們,以及現在、曾經在盛派一起奮斗的同事們,有你們才有盛派的今天,有你們才有盛派的未來!
本書從策劃到最終完稿歷經 2 年時間,除去經營兩家公司已經非常忙碌的原因,我花了大量的時間反復推敲章節的設置和內容的表達,甚至將幾十頁不滿意的內容全部刪掉,這一切只是希望將這本書可以秉承 SDK 精益求精的品質,成為精心雕琢的又一件良心產品。當然,我也自知水平有限,書中一定會有不少瑕疵,懇請讀者們多多包涵,更重要的是多多反饋和交流,使我們能一同進步。
蘇震巍
2017年5月20日
蘇震巍,蘇州盛澤人氏,香港理工大學信息管理碩士、微軟 Ignite 技術大會講師、高級電子商務師、中級物流師。
蘇州盛派網絡科技有限公司創始人,首席架構師。
專注于軟件及互聯網開發已有 24 年,所著圖書《ASP.NET 3.5+SQL Server網站模塊化開發全程實錄》已被多所大學選為教材。
主持了眾多大型項目的架構、開發和集成,對物聯網、大數據和人工智能相關技術有深入的實踐和理解,已為十余家世界 500 強企業提供解決方案和技術支持。
作為“中國 HTML5 研究小組”首批成員,帶領發布了國內shou個HTML5 商業應用,并一直進行著 HTML5 商業化應用的實踐和分享。
zui早進入微信開發領域的開拓者之一,開源發布的 Senparc.Weixin SDK 框架是目前使用率zui高的微信 .NET SDK,同時也是國內zui受歡迎的 .NET 開源項目之一。
★第一部分 微信基礎介紹
第1章 使用本書 2
第2章 策劃你的第一個微信項目 10
第3章 開發微信公眾號前的準備 29
★第二部分 Senparc.Weixin SDK框架介紹
第4章 Senparc.Weixin SDK設計架構 58
第5章 微信公眾號開發全過程案例 83
第6章 使用SDK Demo:Senparc.Weixin.MP.Sample 117
第7章 MessageHandler:簡化消息處理流程 158
第8章 緩存策略 204
第9章 并發場景下的分布式鎖 231
第10章 Container:數據容器 243
第11章 SenparcMessageQueue:消息隊列 266
第12章 接口調用及數據請求 279
第13章 Debug模式及異常處理 303
第14章 微信接口 318
第15章 模板消息 367
第16章 微信網頁授權(OAuth 2.0) 384
第17章 其他幫助類及輔助接口 420
第18章 微信網頁開發:JS-SDK 437
第19章 微信支付 462
★第四部分 微信小程序
第20章 微信小程序 522
第7章 MessageHandler:簡化消息處理流程
MessageHandler 是一個微信消息的處理模塊,也是整個微信開發過程中不可缺少的一部分。在 MessageHandler 中,開發者可以非常輕松地處理所有類型的微信消息。
本章將介紹 MessageHandler 的原理以及使用方法,包括支撐MessageHandler 運行所必需的實體類型、工廠方法等相關知識的介紹。
7.1 設計思想
在第3章3.1節中,我們已經了解微信消息的基本通信原理,因此我們可以非常方便地構造出一個簡單的消息處理功能,例如 141#487:
//此處省略了代碼,詳見書中
這個方法也是目前很多其他框架甚至微信官方的Demo使用的,但是這種方法我可以用“不美好”來形容。
不美——首先使用字符串拼接的方式非常丑陋,其次哪怕使用 XmlDocument 或 XDocument 等面向對象的方式去處理,面對幾十種不同的微信消息類型以及一一對應的不同的格式,代碼將變得非常冗長而且難以維護。這樣的代碼你的老板或客戶會喜歡嗎?
不好——這樣的寫法壞處太多:
n 可移植性差
n 并沒有做到很好地分離(無論是和整個應用程序還是不同請求類型之間)
n 如果要做單元測試就必須整體代碼一起上
n 基本上不具備可擴展性
n 容錯能力很差,即使做到了,代碼已經無法直視
n 正常人用多了會心情不好
那么,“美好”的消息處理方式應該是怎么樣的呢?
下面就將 Senparc.Weixin.MP.MessageHandler 介紹給你。
首先,美好的 MessageHandler 必須具有對消息類型的自動識別和分類能力。
第二,美好的 MessageHandler 必須能夠同時、自動處理“明文”“兼容模式”“加密模式”三種(所有)消息加密類型,并且讓開發者忘掉加密這回事情的存在。
第三,美好的 MessageHandler 必須能夠提供很好的消息容器以及儲存容器,來解決消息去重、Session 等一系列的問題。
第四,美好的 MessageHandler 必須能夠兼容 MVC 和 WebFroms 不同的請求處理方式。
第五,美好的 MessageHandler 必須能夠提供統一邏輯處理的接口,方便在特定的環節對消息進行統一處理。
第六,美好的 MessageHandler 必須具備優秀的可測試性和擴展能力。
第七,美好的 MessageHandler 必須能做到很好的邏輯分離。
第八,美好的 MessageHandler 必須讓你用起來心情好。
第九,美好的 MessageHandler 不能保證你能在 10 分鐘內,完成一個滿足以上八條的簡單微信應用從開發到上線、發布的全過程。但是我們做到了。