程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 快速開發微信公眾平台框架---簡介

快速開發微信公眾平台框架---簡介

編輯:C#入門知識

年底了,比較忙,大家都在展望未來,對於30+的我來說,發展和穩定是個難以取捨的問題。最近發了些求職信,鳥無音訊,沒事做,做點幫助大家的東西吧。

之前做了個微信公眾平台的查詢系統,在開發中,發覺了一些微信公眾平台的接口問題《對微信公眾平台開發的消息處理》,開發起來比較痛苦,對於微信過來的消息,需要解析後一個一個來返回,編寫之痛苦,相信有人明白。在開發中,一直考慮著如何來簡化開發,暫時想不到好的模式來開發,就自己胡亂寫了一個,希望對大家有幫助。

代碼已發布到github:https://github.com/JamesYing/JCWX

第一步:創建Model類庫,我把微信發送來的消息,事件、返回回去的消息,都寫成了Demo

RequestMessage:微信發送過來的消息、事件。此類是個虛類,繼承自WXMessage。

ResponseMessage:返回給微信服務器端的消息,同樣也是虛類,繼承自WXMessage。

在《對微信公眾平台開發的消息處理》中,已經知道,微信服務器端通過Post方式,發來一段xml,通過Request.InputStream獲取,是個Stream類型,之前一直考慮著,用XmlSerializer.Deserialize(stream)來解析成對象,但在實踐當中,發覺無法判斷MsgType,我必須先判斷再解析,從性能上來說不太合適,所以我又重寫了RequestMessage的構造函數,RequestMessage(XElement),把Stream –> XElement,就可以構造RequestMessage(要使用.net framework 3.5以上版本,您也可以自己修改成適合3.5以下版本)。不過我還是保留了原先的Deserialize方式,使用方法:RequestMessage.Deserializ<RequestMessage>(stream),具體可以參考我的源代碼。

我們知道返回給用戶的也是一個Xml信息,您可以直接使用ResponseMessage.Serializable()返回給用戶xml文檔。ResponseMessage的構造函數中,有一個ResponseMessage(RequestMessage message),這是為了把FromUserName, ToUserName轉換一下,後續文章會繼續講解。

第二步:創建了Business類庫,提供一些公開接口,方便大家來進行開發。

IMessageRole:信息處理規則,規則的具體實現,請繼承此接口

IMessageHandler:信息處理,根據信息,反饋給用戶。

NotHandlerMessage:繼承自IMessageHandler,這是一個在無法處理情況下,返回一個null的實現,您也可以自己來寫。

IMessageRole接口中,只有一個IMessageHandler MessageRole(XElement xml);方法,為了提高性能,我把過來的Stream轉換成了XElement,通過xml.Element(“MsgType”)進行類型判斷,返回一個IMessageHandler。

IMEssageHandler:ResponseMessage HandlerRequestMessage(XElement xml);根據不同的Request返回給用戶不同的ResponseMessage。

這個快速框架就這些,很簡單,實踐的話,需要自己編寫:

1、信息處理規則,繼承IMessageRole,在處理中,您可以根據MsgType進行分析,也可以根據不同Text內容進行分析,返回不同IMessageHanlder就可以了。

2、信息處理,繼承IMessageHandler,這個可能要寫很多個,看你的項目要求了。

微信公眾平台提供了測試接口,但暫時我還沒有用,就簡單自己模擬了下。

創建一個RequestTextMessage(文本信息):



模擬成Stream:



好了,有了模擬環境,我們,我們寫一個自己的規則:



再編寫2個消息處理類:



TextMessageHandler中,處理的類型為文本信息,判斷內容中含有info,返回一個ResponseTextMessage。下面我們實踐下:



請加入response的判斷,檢查是否為空,因為我們不是每條消息都必須處理的。

看下運行結果:

image

ok,運行成功,目前還未進行測試,後續會加入測試代碼,相信有了這個快速開發框架,會給大家開發微信公眾平台有更好的幫助。好了,下班了,明天繼續說明一些Model。

代碼已發布到github:https://github.com/JamesYing/JCWX

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved