最近在接手同事之前寫的程式碼,關於微信介面開發的,花了點時間把它整理成了一個類庫,但是為了顯得高大上,冠了一個框架之名。然後寫下這麼一篇文章:
程式碼重構之 —— 一堆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
上海的朋友,可以掃一掃下這面這個公眾號。