.NET平臺下的微信SDK(Rabbit.WeiXin)開源發(fā)布
前言
在某一個傍晚,與頭為產(chǎn)品“雨后春筍” 歷經(jīng)一個下午的討論的結(jié)束而得出一個新的idea,架設(shè)一個暫現(xiàn)內(nèi)部使用的“云”平臺,目前主要含有微信相關(guān)服務(wù)內(nèi)容,主要目標(biāo)為實(shí)現(xiàn)統(tǒng)一的微信接入地址 而可以使用微信自動接入的功能(微信開放平臺提供的一種授權(quán)方式,可以托管客戶的微信,而不需要客戶去配置服務(wù)器url、token等參數(shù)),而次要的目 的主要是為了公司內(nèi)部開發(fā)團(tuán)隊更快的接入微信和實(shí)現(xiàn)不同項(xiàng)目對微信的統(tǒng)一管理與數(shù)據(jù)共享。
伴隨著這樣的需求,我打算重新造一個輪子,微信SDK(Rabbit.WeiXin),旨在提供更好的性能,更易擴(kuò)展的機(jī)制。今天它以開源的姿態(tài)進(jìn)入大家的視野,希望大家可以嘗試使用起來,更希望大家能夠參與進(jìn)這個項(xiàng)目之中。
特點(diǎn)
- 較高的性能
- 易擴(kuò)展性
- API易使用性
功能
支持的消息類型
請求消息(參考文檔:http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html)
- RequestMessageImage(圖片消息)
- RequestMessageLink(鏈接消息)
- RequestMessageLocation(位置消息)
- RequestMessageShortVideo(短視頻消息)
- RequestMessageText(文本消息)
- RequestMessageVideo(視頻消息)
- RequestMessageVoice(語音消息)
GitHub:https://github.com/RabbitTeam/WeiXinSDK/tree/master/Rabbit.WeiXin/SDK/Rabbit.WeiXin/Messages/Request
事件消息
由于較多直接給出GitHub地址:https://github.com/RabbitTeam/WeiXinSDK/tree/master/Rabbit.WeiXin/SDK/Rabbit.WeiXin/Messages/Events
響應(yīng)消息
- ResponseMessageImage(圖片消息)
- ResponseMessageMusic(音樂消息)
- ResponseMessageNews(圖文消息)
- ResponseMessageText(文本消息)
- ResponseMessageTransferCustomerService(多客服消息)
- ResponseMessageVideo(視頻消息)
- ResponseMessageVoice(語音消息)
消息處理中間件
- SignatureCheckHandlerMiddleware(驗(yàn)證簽名中間件)
- CreateRequestMessageHandlerMiddleware(創(chuàng)建消息中間件)
- SessionSupportHandlerMiddleware(會話支持中間件)
- IgnoreRepeatMessageHandlerMiddleware(忽略重復(fù)的消息中間件)
- GenerateResponseXmlHandlerMiddleware(生成相應(yīng)XML處理中間件)
- AgentHandlerMiddleware(代理請求中間件)
支持的API
- 基礎(chǔ)接口
- 獲取access token
- 獲取微信服務(wù)器IP地址
- 發(fā)送消息
- 客服接口(http://mp.weixin.qq.com/wiki/1/70a29afed17f56d537c833f89be979c9.html)
- 高級群發(fā)接口(http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html)
- 模板消息接口(http://mp.weixin.qq.com/wiki/17/304c1885ea66dbedf7dc170d84999a9d.html)
- 素材管理
- 用戶管理
- 自定義菜單
- 賬號管理
- 多客服接口
- 客服管理
- 多客服會話控制
- 獲取客服聊天記錄
- 微信門店接口
- 微信卡券接口(部分)
- 上傳卡券Logo
- 創(chuàng)建卡券
- 獲取卡券可用顏色
暫不支持的API
- 數(shù)據(jù)統(tǒng)計接口
- 微信小店接口
- 微信智能接口
- 搖一搖周邊
- 微信卡券接口
- 投放卡券
- 核銷卡券
- 管理卡券
- 卡券事件推送
關(guān)于性能
在之前的文章就有提及新的SDK是比較追求性能的而在beta1版本中通過一些性能測試還算是達(dá)標(biāo),后續(xù)我會繼續(xù)在性能上做足優(yōu)化,爭取提升并發(fā)量。
下面是與市面上一個較成熟的微信SDK的性能測試對比:
測試環(huán)境:
CPU:i7-3610qm
內(nèi)存:16gb
系統(tǒng):Windows 8.1 x64
編譯配置:Release
迭代次數(shù):10000(一萬次)
計數(shù)工具:CodeTimer
對比的SDK:暫不透露
測試結(jié)果:
為了防止和用來做對比的SDK粉絲或作者爭吵,所以具體的測試代碼我不放出了,同樣用來被對比的SDK名稱我也不公布了,但測試結(jié)果絕對公正。
關(guān)于擴(kuò)展性
在消息處理過程中采用了管道模式的設(shè)計,借鑒了Open Web Interface的思想和一些規(guī)范來打造整個消息處理的模型,使消息處理變得更加輕便。
同時SDK內(nèi)部內(nèi)置了一個簡單的依賴注入實(shí)現(xiàn) IDependencyResolver,解耦了很多服務(wù)與服務(wù)實(shí)現(xiàn)。
下面的Demo項(xiàng)目的中的微信請求Action:
使用者可以自行注冊處理的中間件來完成自定的邏輯,后面會專門寫具體的使用教程。
關(guān)于易使用性
這一塊不過多闡述,因?yàn)槟壳斑@一塊并不是很突出,會在后續(xù)的版本優(yōu)化這一塊的內(nèi)容。
關(guān)于架構(gòu)
消息處理
請求消息
事件消息
響應(yīng)消息
消息格式化器
開源信息
開源協(xié)議:Apache License 2.0
托管地址:https://github.com/RabbitTeam/WeiXinSDK
示例地址:https://github.com/RabbitTeam/WeiXinSDK/tree/master/Rabbit.WeiXin/Sample/Rabbit.WeiXin.Sample
Get By Nuget
主要分為兩個組件
Rabbit.Web
地址:https://www.nuget.org/packages/Rabbit.WeiXin/
命令:Install-Package Rabbit.WeiXin.MvcExtension
Rabbit.WeiXin.MvcExtension
地址:https://www.nuget.org/packages/Rabbit.WeiXin.MvcExtension/
命令:Install-Package Rabbit.WeiXin
交流方式
QQ群:384413261
Email:majian159@live.com
寫在最后
頭說不打廣告不準(zhǔn)開源=_=,so…該SDK會應(yīng)用在我們的自主產(chǎn)品“雨后春筍”,地址:http://www.chunsun.cc/,歡迎大家參觀,有合作意向的可以聯(lián)系0591-63323934。
后面會在繼續(xù)完善SDK(性能和還未實(shí)現(xiàn)的API及一些調(diào)優(yōu))的同時,寫一些文章來說明如何使用SDK,和關(guān)于SDK設(shè)計的相關(guān)文章。