本书以深度剖析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 分钟内,完成一个满足以上八条的简单微信应用从开发到上线、发布的全过程。但是我们做到了。