实现虽易,写好不易——小玩意也能体现编码功力,微信消息处理框架发布
2014-05-22 14:45 麦舒 阅读(6413) 评论(8) 编辑 收藏 举报最近在接手同事之前写的代码,关于微信接口开发的,花了点时间把它整理成了一个类库,但是为了显得高大上,冠了一个框架之名。然后写下这么一篇文章:
代码重构之 —— 一堆if、esle 逻辑的处理
有朋友说我写这个,牛刀杀鸡,但是如果我连鸡都杀不了,怎么能够让别人相信我能杀牛呢。尽管它是个小类库,但是并一定能把它写好,如果你有更好的方案,欢迎讨论,但不要人身攻击。谢谢。
也有人说,把功能实现不就得了,管它代码的好坏呢。如果你是老板,你可以不关心它,如果你是客户,你更不需要担心它。但是,如果作为技术人员,尤其是技术部门的管理人员,你不关心它,最后代码乱到没法维护,错误频频发生,这个板子肯定是要打到你的屁股上的。题外说完,下面说一下这个类库。
一、为什么要使用它
使用这个框架来开发,是不是就不需要了解微信的接口呢?不!你仍然需要了解微信消息的通信机制和它的接口,只有你清楚了解了这些,才能用好这个类库。使用这个类库的好处是,可以规范你所写的代码,使得你所写的代码更易于维护。
二、它封装了哪些接口
现在只是封装了消息处理的部份的接口。
即:接叫消息和发送消息的大部份接口。
三、使用指南
1、在使用这个类库之前,你得首先注册一个微信的公众帐号,你可以到 mp.weixin.qq.com 注册。如果你已经注册完成了,请忽略。
2、点击 微信消处理框架 下载,然后解压缩。打开项目进行编译。另外:项目托管在CodePlex上了,可以到 http://wx.codeplex.com/ 下载最新的。
3、创建一个 Web 项目,然后引用 WeiXin.dll。
现在已经转移动GitHub了,https://github.com/ansiboy/YuChang
4、创建一个 Generic Handler 文件,例如:MessageReceiver.ashx。
5、在该文件的代码如下所示,其中的 Token 值,你可以自行设定,在这里是 5201314 。
<%@ WebHandler Language="C#" Class="WeiXin.MessageReceiver" %> #define TRACE using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Diagnostics; using System.IO; using System.Xml; using WeiXin; using WeiXin.Models; namespace WeiXin { public class MessageReceiver : IHttpHandler { public MessageReceiver() { } public void ProcessRequest(HttpContext context) { const string TOKEN = "5201314"; var handler = new WeiXin.HttpHandler(TOKEN, new MessageProcesser()); handler.Process(context.Request, context.Response); } public virtual bool IsReusable { get { return false; } } } }
6、把该文件上传到空间上,假设路径是 “http://wx.alinq.org/Test/MessageReceiver.ashx” 。
7、登录微信公众平台,先申请一个测试的账号,然后在服务配置上填上下面的信息。
9、现在我们打开微信,扫一下公众账号,看有什么响应。
扫完后,在微信的界面上将会显示下面的信息:
10、重写 MessageProcesser 类,来实现回复自定义的消息。创建 MessageProcesser 继承类命名为 MyMessageProcesser ,例如
using System; using System.Collections.Generic; using System.Linq; using System.Web; using WeiXin.Models; public class MyMessageProcesser : WeiXin.MessageProcesser { public MyMessageProcesser() { } protected override ReplyMessage ProcessSubscribeEvent(SubscribeEvent msg) { var reply = new TextReply(msg); reply.Content = "你好,欢迎关注"; return reply; } protected override ReplyMessage ProcessUnsubscribeEvent(UnsubscribeEvent msg) { var reply = new TextReply(msg); reply.Content = "取消关注"; return reply; } }
然后修改 MessageReceiver.ashx 文件的代码,把
var handler = new WeiXin.HttpHandler(TOKEN, new MessageProcesser());
改为:
var handler = new WeiXin.HttpHandler(TOKEN, new MyMessageProcesser());
11、现在我们再来扫一扫,看看有什么效果,当然,在扫之前请先取消关注,你会发现,回复变成了“你好,欢迎关注”。
大家如果对我做的东西感兴趣,可以和我联系:
QQ: 81932759
Q群: 71418067
上海的朋友,可以扫一扫下这面这个公众号。