基于 C 技术环境的微信公众号框架引擎
(weixin4c)
Calvin
目录索引
1 背景 ................................................................................................................... 4
2 架构与设计 ........................................................................................................ 4
2.1 体系架构 ................................................................................................. 4
2.2 系统架构 ................................................................................................. 5
2.3 应用结构 ................................................................................................. 5
3 安装和配置 ........................................................................................................ 8
4 开发示例............................................................................................................ 8
4.1 从模板部署应用和配置 .......................................................................... 8
4.2 修改配置 ................................................................................................. 9
4.3 编译安装空应用架子 .............................................................................. 9
4.4 开发应用 ................................................................................................. 9
4.4.1 修改 main 函数 .............................................................................. 9
4.4.2 编写公众号消息回调函数 .......................................................... 11
4.4.3 部署应用 ..................................................................................... 11
4.5 获取接口调用凭据 ................................................................................ 11
5 使用参考.......................................................................................................... 12
5.1 weixin4c 引擎......................................................................................... 12
5.1.1 struct Weixin4cConfig 结构 .......................................................... 12
5.1.2 类型消息回调函数 ...................................................................... 12
5.2 weixin4c 公共层 ..................................................................................... 12
5.2.1 网址 ............................................................................................. 13
5.2.2 HTTP 协议 .................................................................................... 13
5.2.3 字符编码转换 .............................................................................. 13
5.2.4 文件 ............................................................................................. 14
5.2.5 工具 ............................................................................................. 14
6 日志文件.......................................................................................................... 14
版本修订
版本号
修订日期
修订人
修订内容
0.2.0
2016-01-10
calvin
创建文档
0.2.1
2016-01-17
calvin
补充依赖开源库列表
1 背景
weixin4c 是一个基于 C 技术环境的建立在 FastCGI 高性能 Web 应用服务器架
构上的微信公众号框架引擎,它封装了公众号应用服务器底层框架,你只需要编
写业务逻辑代码,以回调函数机制接入框架,就能快速构造出微信公众号服务。
用 C 技术环境开发微信公众号应用的确有些奇怪,但是我没有互联网公司高
大上的团队配置(俺只熟悉 C)、也没有雄厚的资金支持购买强劲的服务器(俺
只有一台单核、半 G 内存、1M 带宽的阿里云最低配主机),所以只能利用最熟
悉的 C、利用最有限的硬件资源来玩玩微信公众号了,如果选择 JAVA 估计连跑
起来都成问题。
无论用什么语言,首先都要评估所要做的项目的技术背景和技术原理,只要
是开放接口都与实现无关,采用 C 语言,虽然没有大量现成的库可以直接调用,
但经过评估,自己研发成本并不大。之前我专门研究了 whois 爬虫技术,可以把
这个作为第一个功能提供给用户使用。于是开搞!
元旦花了一天研究了微信公众平台开发者文档,撰写测试代码以评估接口,
确定设计,又花了一天做开发测试,“钛搜索”新鲜上线,第一版提供了域名注
册信息实时查询,而后某个工作日晚上又把框架部分和应用部分分离,把框架提
炼出来封装成 C 库,方便做其它公众号,同时也分享给大家研究使用。
2 架构与设计
2.1 体系架构
通过学习微信公众平台开发者文档,我的微信公众号应用服务器接入架构应
该是这样的
微信客户端
微信服务端 http/https 我的微信公众号应用服务器
其中微信客户端可以是手机、PC 等,微信服务端其实只做了验证我的应用服
务器地址,然后大量转发客户端请求功能,对于我要做的只是自己找网上主机空
间搭建一个 Web 服务器,根据开放接口开发相应服务对接腾讯微信服务端即可。
幸运的是,前段时间我刚好买了一个阿里云主机,虽然是低的不能再低的配
置(没钱啊),但跑跑 C 程序是毫无问题。
2.2 系统架构
既然采用 C 技术环境,CGI 是板上钉钉,但传统的 CGI 存在频繁创建、销毁
进程的系统压力,那就使用 FastCGI 吧。
本人曾经研发过基于事件模型(epoll in Linux)的服务器软件,感觉要完全写好
事件模型还是比较复杂,于是对 Nginx 的稳定性感觉不是很有信心,还是采用老
而弥坚的 Apache。至于你的选择,只要你的 Web 服务器软件支持 FastCGI 就能
使用 weixin4c。
暂时还用不到数据库或缓存服务器,以后用到了再加。
总结:支持 FastCGI 的 Web 服务器软件+FastCGI(C)模块+(你的应用).fcgi
(weixin4c.a)。(这恐怕是世界上执行效率最高的基于高级语言的 Web 技术方案
了吧,呵呵呵,开发效率么...我有大量自己写的、第三方的库,不比 JAVA、PHP
开发慢哦 ^_^)
2.3 应用结构
公众号应用服务器对接微信服务器的第一步是让微信服务器认证自己的网