目录
第1章使用本书 (1)
1.1 我是否适合读这本书 (2)
1.2 如何用好这本书? (2)
1.3 各章节导读 (4)
1.4 名词解释 (6)
1.5 学习资源 (6)
1.6 帮助我们改进 (8)
习题 (8)
第2章策划你的第一个项目 (9)
2.1 需求分析 (9)
2.1.1 沟通需求 (9)
2.1.2 整理需求 (12)
2.1.3 制定方案 (13)
2.2 数据库设计 (16)
2.3 接口统计 (20)
2.4 业务逻辑 (21)
2.5 技术架构 (23)
2.6 策划 (25)
2.7 统一培训 (26)
习题 (27)
第3章开发前的准备 (28)
3.1 准备工作 (28)
3.1.1 基本技能 (28)
3.1.2 开发环境 (29)
3.1.3 域名 (30)
3.1.4 服务器 (30)
3.1.5 SSL 证书 (30)
3.2 消息通信 (30)
目录■VII
3.2.1 公众平台的消息通信过程 (30)
3.2.2 XML 通信格式 (31)
3.2.3 消息通信中需要注意的问题 (32)
3.3 访问网页 (33)
3.4 使用测试号进行测试 (33)
3.5 使用Web 开发者工具调试 (35)
3.5.1 下载和安装 (35)
3.5.2 使用开发者工具 (36)
3.7 在线接口调试工具 (38)
3.8 服务号、和认证账号的功能差别 (39)
3.8.1 服务号 (39)
3.8.2 (43)
3.9 申请 (46)
习题 (55)
第4章Senparc.Weixin SDK设计架构 (56)
4.1 开源项目 (56)
4.2 开源协议 (56)
4.3 平台生态与Senparc.Weixin SDK (57)
4.4 文件目录 (59)
4.4.1 根目录 (59)
4.4.2 src 目录 (59)
4.5 Senparc.Weixin.dll (60)
4.5.1 Senparc.Weixin 文件结构 (60)
4.5.2 Senparc.Weixin 类库结构 (63)
4.5.3 使用Senparc.Weixin 注意点 (63)
4.6 Senparc.Weixin.MP.dll (64)
4.6.1 Senparc.Weixin.MP.dll 文件结构 (64)
4.6.2 Senparc.Weixin.MP.dll 类库 (68)
4.7 Senparc.Weixin.WxOpen.dll (68)
4.8 Senparc.Weixin.MP.MvcExtension.dll (69)
4.9 Senparc.Weixin.Cache.Redis.dll (69)
4.10 Senparc.Weixin.Cache.Memcached.dll (70)
4.11 其他类库 (70)
4.12 单元测试 (70)
4.13 修改源代码和贡献代码 (70)
4.13.1 注册GitHub 账号 (71)
4.13.2 Fork 项目 (73)
VIII ■公众平台快速开发
4.13.3 修改代码 (74)
4.13.4 提交代码 (76)
4.13.5 贡献代码 (77)
习题 (80)
第5章开发全过程案例 (81)
5.1 开发准备 (81)
5.1.1 安装开发环境及工具 (81)
5.1.2 创建解决方案 (82)
5.1.3 创建项目 (83)
5.1.4 使用Nuget 安装Senparc.Weixin SDK (86)
5.2.1 准备基础框架 (89)
5.2.2 创建数据库 (89)
5.2.3 同步数据库 (90)
5.2.4 建立数据库框架 (93)
5.2.5 开发Repository 仓储模块 (96)
5.2.6 缓存 (98)
5.2.7 开发业务逻辑 (100)
5.2.8 Controller 控制器 (103)
5.2.9 Web 项目和UI (109)
5.3 单元测试 (109)
5.4 部署 (110)
5.5 消息验证和线上测试 (110)
5.6 在Microsoft Azure 上运行示例。 (110)
习题 (114)
第6章使用SDK Demo:Senparc.Weixin.MP.Sample (115)
6.1 文件位置及结构 (115)
6.1.1 Senparc.Weixin.MP.Sample 解决方案文件夹 (115)
6.1.2 Senparc.Weixin.MP.Sample 解决方案 (116)
6.1.3 Senparc.Weixin.MP.Sample Web 项目 (117)
6.1.4 Senparc.Weixin.MP.Sample.CommonService 项目 (119)
6.2 配置项目 (120)
6.2.1 Web.Config 文件 (120)
6.2.2 Global.asax 文件 (122)
6.2.3 首页 (123)
6.3 消息 (124)
6.3.1 消息处理 (125)
目录■IX
6.3.1.1 消息上下文 (125)
6.3.1.2 消息代理 (126)
6.3.1.3 异步并发测试 (127)
6.3.1.4 错误的返回消息格式 (128)
6.3.1.5 容错 (128)
6.3.1.6 获取OpenId (128)
6.3.1.7 位置消息 (129)
6.3.1.8 链接消息 (129)
6.3.1.9 点击事件 (129)
6.3.1.10 关注事件 (130)
6.3.1.11 事件成功回调 (131)
6.3.1.12 其他事件 (132)
6.3.1.13 默认消息 (132)
6.3.2 消息模拟及并发消息测试 (132)
6.5 OAuth (136)
6.6 JS-SDK (138)
6.7 支付 (139)
6.8 素材 (141)
6.9 缓存测试 (142)
6.10 异步方法 (143)开发程序
6.11 内置浏览器过滤 (144)
6.12 小程序 (145)
6.12.1 消息处理 (145)
6.12.2 模板消息 (146)
6.12.3 WebSocket (146)
6.13 其他 (146)
6.13.1 开放平台 (147)
6.13.2 企业号 (147)
6.13.3 文档下载 (147)
6.14 WebForms 项目 (148)
6.15 单元测试 (148)
6.15.1 单元测试项目 (148)
6.15.1 单元测试方法 (149)
6.16 配置服务器和参数 (151)
6.16.1 配置IIS (151)
6.16.2 安装.NET Framework 4.5 (152)
6.16.3 设置IIS 站点 (153)
6.16.4 解析域名 (154)
6.16.5 检查fig 文件 (154)
X ■公众平台快速开发
6.17 部署 (154)
习题 (155)
第7章MessageHandler:简化消息处理流程 (156)
7.1 设计思想 (156)
7.2 消息类型 (158)
7.2.1 概述 (158)
7.2.2 命名规则 (159)
7.2.3 全局消息基类 (159)
7.2.4 请求消息 (159)
7.2.5 响应消息 (163)
7.3 原始消息处理方法 (167)
7.4 使用MessageHandler (168)
7.4.1 第一步:通过Nuget 安装Senparc.Weixin.MP。 (168)
7.4.2 第二步:创建你自己的MessageHandler (168)
7.4.3 第三步:写3 行关键代码 (173)
7.5 OnExecuting()和OnExecuted() (173)
7.6 解决用户上下文(Session)问题 (174)
7.6.1 消息容器:MessageContainer (175)
7.6.2 消息队列:MessageQueue (176)
7.6.3 单用户上下文:MessageContext (177)
7.6.4 全局上下文:WeixinContext (181)
7.6.5 上下文移除事件:WeixinContextRemovedEventArgs (183)
7.7 消息去重 (183)
7.8 消息加密 (185)
7.9 消息格式转换 (187)
7.9.1 XML 转实体 (188)
7.9.2 实体转XML (188)
7.10 消息代理 (189)
7.11 了解MessageHandler 设计原理 (189)
7.11.1 Senparc.Weixin.MessageHandlers.MessageHandler 结构 (190)
7.11.2 Senparc.Weixin.MessageHandlers.MessageHandler 结构 (194)
7.11.3 抽象类及虚方法 (196)
7.11.4 构造函数 (196)
7.11.5 Execute()方法 (198)
7.11.6 CancelExcute 属性 (199)
7.11.7 OnExecuting()方法 (200)
7.11.8 DefaultResponseMessage()方法 (200)
习题 (201)
目录■XI
第8章缓存策略 (202)
8.1 设计原理 (202)
8.2 基础缓存策略接口:IBaseCacheStrategy (204)
8.3 数据容器缓存策略接口:IContainerCacheStragegy (205)
8.3.1 原始IContainerCacheStragegy 设计思路 (205)
8.3.2 优化IContainerCacheStragegy 设计思路 (206)
8.3.3 优化IContainerItemCollection 和ContainerItemCollection (206)
8.4 本地数据容器缓存策略:LocalContainerCacheStrategy (209)
8.4.1 创建LocalContainerCacheStrategy 类 (209)
8.4.2 定义数据源 (210)
8.4.3 实现容器缓存策略 (212)
8.4.4 运用单例模式 (214)
8.4.5 测试 (216)
8.5 分布式缓存 (217)
8.5.1 起因 (217)
8.5.2 负载均衡 (218)
8.5.3 分布式缓存 (218)
8.5.4 分布式使用的注意点 (219)
8.6 Redis 分布式缓存策略:RedisontainerCacheStrategy (220)
8.6.1 Redis 简介 (220)
8.6.2 安装Redis (220)
8.6.3 StackExchange.Redis 缓存扩展 (220)
8.6.4 实现Redis 缓存策略 (222)
8.6.5 单元测试 (223)
8.7 Memcached 分布式缓存策略:MemcachedContainerCacheStrategy (223)
8.7.1 Memcached 简介 (223)
8.7.2 安装Memcached (224)
8.7.3 EnyimMemcached 缓存扩展 (224)
8.7.4 实现Memcached 缓存策略 (225)
8.8 缓存策略工厂:CacheStrategyFactory (225)
8.8.1 创建CacheStrategyFactory (225)
8.8.2 配置和使用CacheStrategyFactory (227)
习题 (228)
第9章并发场景下的分布式锁 (229)
9.1 概述 (229)
9.2 为什么需要分布式锁 (229)
9.3 分布式锁的设计 (230)
9.3.1 IBaseCacheStrategy 接口设计 (230)
XII ■公众平台快速开发
9.3.2 ICacheLock 接口设计 (232)
9.3.1 分布式锁基类:BaseCacheLock (234)
9.4 本地锁 (234)
9.4.1 LocalCacheLock (234)
9.4.2 实现BeginCacheLock (236)
9.5 Redis 锁 (236)
9.5.1 RedisCacheLock (236)
9.5.1 Redlock.CSharp (238)
9.5.2 实现BeginCacheLock (238)
9.6 Memcached 锁 (239)
9.6.1 MamcachedCacheLock (239)
9.6.2 实现BeginCacheLock (240)
习题 (240)
第10章Container:数据容器 (241)
10.1 设计思路及原理 (241)
10.2 BaseContainerBag (243)
10.3 BaseContainer (244)
Update(string key, TBag value) 233#133: (251)
Update(string key, Action<TBag> partialUpdate) 233#134: (252)
10.4 AccessTokenContainer (253)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。