.NET平台下的微信SDK(Rabbit.WeiXin)开源发布
在上一篇文章《RabbitHub开源情况及计划》上有提及到了一个新的开源项目——微信SDK,经过几天的努力现在开源发布Beta1版本。
目录
- 前言
- 特点
- 功能
- 支持的消息类型
- 请求消息
- 事件消息
- 响应消息
- 消息处理中间件
- 支持的API
- 暂不支持的API
- 支持的消息类型
- 关于性能
- 关于易扩展性
- 关于易使用性
- 关于架构
- 消息处理
- 请求消息
- 事件消息
- 响应消息
- 消息格式化器
- 开源信息
- Get By Nuget
- 测试的微信号
- 交流方式
- 写在最后
前言
在某一个傍晚,与头为产品历经一个下午的讨论的结束而得出一个新的idea,架设一个暂现内部使用的“云”平台,目前主要含有微信相关服务内容,主要目标为实现统一的微信接入地址而可以使用微信自动接入的功能(微信开放平台提供的一种授权方式,可以托管客户的微信,而不需要客户去配置服务器url、token等参数),而次要的目的主要是为了公司内部开发团队更快的接入微信和实现不同项目对微信的统一管理与数据共享。
伴随着这样的需求,我打算重新造一个轮子,微信SDK(Rabbit.WeiXin),旨在提供更好的性能,更易扩展的机制。今天它以开源的姿态进入大家的视野,希望大家可以尝试使用起来,更希望大家能够参与进这个项目之中。
特点
- 较高的性能
- 易扩展性
- 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
响应消息
- ResponseMessageImage(图片消息)
- ResponseMessageMusic(音乐消息)
- ResponseMessageNews(图文消息)
- ResponseMessageText(文本消息)
- ResponseMessageTransferCustomerService(多客服消息)
- ResponseMessageVideo(视频消息)
- ResponseMessageVoice(语音消息)
消息处理中间件
- SignatureCheckHandlerMiddleware(验证签名中间件)
- CreateRequestMessageHandlerMiddleware(创建消息中间件)
- SessionSupportHandlerMiddleware(会话支持中间件)
- IgnoreRepeatMessageHandlerMiddleware(忽略重复的消息中间件)
- GenerateResponseXmlHandlerMiddleware(生成相应XML处理中间件)
- AgentHandlerMiddleware(代理请求中间件)
支持的API
- 基础接口
- 获取access token
- 获取微信服务器IP地址
- 发送消息
- 客服接口(http://mp.weixin.qq.com/wiki/1/70a29afed17f56d537c833f89be979c9.html)
- 高级群发接口(http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html)
- 模板消息接口(http://mp.weixin.qq.com/wiki/17/304c1885ea66dbedf7dc170d84999a9d.html)
- 素材管理
- 用户管理
- 自定义菜单
- 账号管理
- 多客服接口
- 客服管理
- 多客服会话控制
- 获取客服聊天记录
- 微信门店接口
- 微信卡券接口(部分)
- 上传卡券Logo
- 创建卡券
- 获取卡券可用颜色
暂不支持的API
- 数据统计接口
- 微信小店接口
- 微信智能接口
- 摇一摇周边
- 微信卡券接口
- 投放卡券
- 核销卡券
- 管理卡券
- 卡券事件推送
关于性能
在之前的文章就有提及新的SDK是比较追求性能的而在beta1版本中通过一些性能测试还算是达标,后续我会继续在性能上做足优化,争取提升并发量。
下面是与市面上一个较成熟的微信SDK的性能测试对比:
测试环境:
CPU:i7-3610qm
内存:16gb
系统:Windows 8.1 x64
编译配置:Release
迭代次数:10000(一万次)
计数工具:CodeTimer
对比的SDK:暂不透露
测试结果:

为了防止和用来做对比的SDK粉丝或作者争吵,所以具体的测试代码我不放出了,同样用来被对比的SDK名称我也不公布了,但测试结果绝对公正。
关于扩展性
在消息处理过程中采用了管道模式的设计,借鉴了Open Web Interface的思想和一些规范来打造整个消息处理的模型,使消息处理变得更加轻便。
同时SDK内部内置了一个简单的依赖注入实现 IDependencyResolver,解耦了很多服务与服务实现。
下面的Demo项目的中的微信请求Action:

使用者可以自行注册处理的中间件来完成自定的逻辑,后面会专门写具体的使用教程。
关于易使用性
这一块不过多阐述,因为目前这一块并不是很突出,会在后续的版本优化这一块的内容。
关于架构
消息处理

请求消息

事件消息

响应消息

消息格式化器

开源信息
开源协议: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
Rabbit.WeiXin.MvcExtension
地址:https://www.nuget.org/packages/Rabbit.WeiXin.MvcExtension/
命令:Install-Package Rabbit.WeiXin.MvcExtension
交流方式
QQ群:384413261
Email:majian159@live.com
写在最后
后面会在继续完善SDK(性能和还未实现的API及一些调优)的同时,写一些文章来说明如何使用SDK,和关于SDK设计的相关文章。
.NET平台下的微信SDK(Rabbit.WeiXin)开源发布的更多相关文章
- 微信公众平台开发,图文回复、access_token生成调用、以及微信SDK的实现(2)
上一节课,我给大家分享了微信API接入以及事件推送的回复,这是微信开发的第二节课,重点给说一说单图文回复,多图文回复,access_token,微信SDK. 公众号消息回复很多种形式,常见的形式有,文 ...
- .net下4款不错的微信SDK
.net下4款不错的微信SDK: 一款值得推荐的.Net微信开发SDK http://www.17ky.net/soft/474.html.Net微信公开帐号接口 WeiXinSDK http://w ...
- ASP.NET CORE下用盛派微信SDK取微信openid
用CORE做项目用到微信的相关东西,听说那个盛派微信SDK很火,自己弄了下,只是简单的用用,用户访问页面取微信openid
- 微信公众平台Java版极速SDK
JEEWX-API 是第一个微信公众平台Java版极速SDK,基于 jeewx-api 开发可以立即拥有简单易用的API,让开发更加轻松自如,节省更多时间 http://www.jeewx.com/
- 【Win10 UWP】微信SDK基本使用方法和基本原理
上回讲到,作为一个长期散播温暖,散播希望的小清新无公害WP开发者,继QQ SDK之后,又把UWP微信SDK这茬了结了,仅供学习交流. 1.安装微信SDK for UWP 微信官方此前明确说明短时间内暂 ...
- NET 平台下的插件化开发内核
.NET 平台下的插件化开发内核(Rabbit Kernel) 每个程序猿都有一个框架梦,曾经在2013年8月15日写过一篇“Koala Framework是什么?我为什么要写这个框架?”的文章, ...
- iOS开发总结--三方平台开发之微信支付
1.前言 现在很多应用都有支付功能,支付也是开发中比较麻烦的一个部分.其实,最麻烦的部分是商户帐号的审核,如果没有商户帐号,就没有你要给钱的那个对公账户. 2.关于交易 在这个金融类项目的开发中,接触 ...
- 微信登陆,微信SDK授权登陆经验分享
From:http://www.eoeandroid.com/thread-547012-1-1.html 最近因为项目需要做了微信登陆,好像也是微信最近才放出来的接口.还需要申请才能有权限实现授权. ...
- iOS-不用微信SDK唤起微信支付
作者:TianBai 原文链接:http://www.jianshu.com/p/8930b4496023 要想知道微信SDK是如何调起微信客户端,那么咱们先看看微信SDK到底做了什么 前期准备 接入 ...
随机推荐
- python基础(五)缩进和选择
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例. ...
- 关于/etc/rc.local以及/etc/init.d
1. /etc/rc.local 这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里 --------引用---------------------- 在完成 run le ...
- position&containing block
一.包含块(Containing Block) 要讲position,首先就涉及到一个概念:包含块. 1.包含块介绍 包含块简单理解就是一个定位参考块,就是"大盒子里套小盒子"中那 ...
- 用PS设计等高线效果的背景图片
有些简单的单网页,如果利用等高线效果的背景图片,再配合合适的背景色,能达到绚丽的效果.如下图所示: 本文就介绍该等高线效果的背景图片是如何制作的.Follow Me!!!! 1.新建文档,尺寸:100 ...
- MSDN论坛被垃圾信息刷爆了!!!
https://social.msdn.microsoft.com/Forums/zh-CN/caab1275-103e-470e-8888-ca39d1c48364/linehx2888?forum ...
- java 27 - 10 反射之 动态代理的代码实现
为什么要写动态代理类? 例子: 如果现在想做个登陆注册的功能.用户可以执行登陆.注册.添加.删除这些功能. 但是,有些功能是要有一定权限才可以执行的. 而现在已经有了个用户类的接口和该类的实现类了,但 ...
- windows下 git配置ssh
1. 打开 git bash 2. cd ~/.ssh 3. ssh-genkey (一致next), 会生成 id_rsa (密钥); id_rsa.pub(公钥) 4. 用记事本打开 id_rs ...
- Web API 接口
Web API 接口 在给网站编写 JavaScript 代码时,也有很多可用的 API.您可以使用下面的接口(也称为对象的类型)列表,开发 Web 应用程序或网站. 关于包含这些接口的 API 列表 ...
- 微信JSSDK配置文件说明
微信JSSDK配置文件说明 1.官方配置 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开, ...
- Nuget自己打包引用的时候出现错误:Package is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package 1.0.1 supports: net (.NETFramework,Version=v0.0)
Nuget自己打包引用的时候出现错误:Package is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package ...