.NET平台下的微信SDK(Rabbit.WeiXin)开源发布

在上一篇文章《RabbitHub开源情况及计划》上有提及到了一个新的开源项目——微信SDK,经过几天的努力现在开源发布Beta1版本。

目录

  1. 前言
  2. 特点
  3. 功能
    1. 支持的消息类型
      1. 请求消息
      2. 事件消息
      3. 响应消息
    2. 消息处理中间件
    3. 支持的API
    4. 暂不支持的API
  4. 关于性能
  5. 关于易扩展性
  6. 关于易使用性
  7. 关于架构
    1. 消息处理
    2. 请求消息
    3. 事件消息
    4. 响应消息
    5. 消息格式化器
  8. 开源信息
  9. Get By Nuget
  10. 测试的微信号
  11. 交流方式
  12. 写在最后

前言

    在某一个傍晚,与头为产品历经一个下午的讨论的结束而得出一个新的idea,架设一个暂现内部使用的“云”平台,目前主要含有微信相关服务内容,主要目标为实现统一的微信接入地址而可以使用微信自动接入的功能(微信开放平台提供的一种授权方式,可以托管客户的微信,而不需要客户去配置服务器url、token等参数),而次要的目的主要是为了公司内部开发团队更快的接入微信和实现不同项目对微信的统一管理与数据共享。

    伴随着这样的需求,我打算重新造一个轮子,微信SDK(Rabbit.WeiXin),旨在提供更好的性能更易扩展的机制。今天它以开源的姿态进入大家的视野,希望大家可以尝试使用起来,更希望大家能够参与进这个项目之中。

特点

  1. 较高的性能
  2. 易扩展性
  3. API易使用性

功能

支持的消息类型

请求消息(参考文档:http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html

  1. RequestMessageImage(图片消息)
  2. RequestMessageLink(链接消息)
  3. RequestMessageLocation(位置消息)
  4. RequestMessageShortVideo(短视频消息)
  5. RequestMessageText(文本消息)
  6. RequestMessageVideo(视频消息)
  7. 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

响应消息

  1. ResponseMessageImage(图片消息)
  2. ResponseMessageMusic(音乐消息)
  3. ResponseMessageNews(图文消息)
  4. ResponseMessageText(文本消息)
  5. ResponseMessageTransferCustomerService(多客服消息)
  6. ResponseMessageVideo(视频消息)
  7. ResponseMessageVoice(语音消息)

GitHub:https://github.com/RabbitTeam/WeiXinSDK/tree/master/Rabbit.WeiXin/SDK/Rabbit.WeiXin/Messages/Response

消息处理中间件

  1. SignatureCheckHandlerMiddleware(验证签名中间件)
  2. CreateRequestMessageHandlerMiddleware(创建消息中间件)
  3. SessionSupportHandlerMiddleware(会话支持中间件)
  4. IgnoreRepeatMessageHandlerMiddleware(忽略重复的消息中间件)
  5. GenerateResponseXmlHandlerMiddleware(生成相应XML处理中间件)
  6. AgentHandlerMiddleware(代理请求中间件)

支持的API

  1. 基础接口
    1. 获取access token
    2. 获取微信服务器IP地址
  2. 发送消息
    1. 客服接口(http://mp.weixin.qq.com/wiki/1/70a29afed17f56d537c833f89be979c9.html
    2. 高级群发接口(http://mp.weixin.qq.com/wiki/15/5380a4e6f02f2ffdc7981a8ed7a40753.html
    3. 模板消息接口(http://mp.weixin.qq.com/wiki/17/304c1885ea66dbedf7dc170d84999a9d.html
    4. 素材管理
    5. 用户管理
    6. 自定义菜单
    7. 账号管理
    8. 多客服接口
      1. 客服管理
      2. 多客服会话控制
      3. 获取客服聊天记录
    9. 微信门店接口
    10. 微信卡券接口(部分)
      1. 上传卡券Logo
      2. 创建卡券
      3. 获取卡券可用颜色

暂不支持的API

  1. 数据统计接口
  2. 微信小店接口
  3. 微信智能接口
  4. 摇一摇周边
  5. 微信卡券接口
    1. 投放卡券
    2. 核销卡券
    3. 管理卡券
    4. 卡券事件推送

关于性能

在之前的文章就有提及新的SDK是比较追求性能的而在beta1版本中通过一些性能测试还算是达标,后续我会继续在性能上做足优化,争取提升并发量。

下面是与市面上一个较成熟的微信SDK的性能测试对比:

测试环境:

CPU:i7-3610qm

内存:16gb

系统:Windows 8.1 x64

编译配置:Release

迭代次数:10000(一万次)

计数工具:CodeTimer

对比的SDK:暂不透露

测试结果:

image

为了防止和用来做对比的SDK粉丝或作者争吵,所以具体的测试代码我不放出了,同样用来被对比的SDK名称我也不公布了,但测试结果绝对公正。

关于扩展性

在消息处理过程中采用了管道模式的设计,借鉴了Open Web Interface的思想和一些规范来打造整个消息处理的模型,使消息处理变得更加轻便。

同时SDK内部内置了一个简单的依赖注入实现 IDependencyResolver,解耦了很多服务与服务实现。

下面的Demo项目的中的微信请求Action:

image

使用者可以自行注册处理的中间件来完成自定的逻辑,后面会专门写具体的使用教程。

关于易使用性

这一块不过多阐述,因为目前这一块并不是很突出,会在后续的版本优化这一块的内容。

关于架构

消息处理

image

请求消息

image

事件消息

image

响应消息

image

消息格式化器

image

开源信息

开源协议: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设计的相关文章。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WeixinSDK.net使用帮助1.使用对象微信公众平台:http://mp.weixin.qq.com/wiki/home/index.htmlDeepleo.Weixin.SDKSDK源代码Deepleo.Web是一个asp.net mvc的demo2.核心思想运用Dynamic(.net 4.0以及以上版本支持)在程序中传递微信所需的结构化(xml,json)对象,减少大量代码,实现轻量级。 让您可以像Python一样书写代码。3.疑难问题1)API返回的Dynamic对象应该如何使用?答:如果您调用API,return的是 a.由DynamicJson.Parse转换而来,您可以用.[属性名称] 访问到该属性的值; 譬如 BasicAPI.cs中GetAccessToken: var token = DynamicJson.Parse(result.Content.ReadAsStringAsync().Result); 那么调用时:string newToken = BasicAPI.GetAccessToken(AppId, AppSecrect).access_token; b.如果是DynamicXml转换而来的,您可以用.[属性名称].Value 访问到该属性的值; 譬如 AcceptMessageAPI.cs中Parse: msg.Body = new DynamicXml(message); string msgType = msg.Body.MsgType.Value;2)遇到其他问题该如何解决?答:如果开发者遇到开发问题或者遇到SDK的bug,请到  a.官方QQ群:173564082   b.官方论坛:http://www.weixinsdk.net/  c.作者QQ:2586662969  d.作者微信号: deepleo (加好友注明weixinsdk)4.源代码唯一托管地址:https://github.com/night-king/weixinSDK5.Copyright and licenseCode and documentation copyright 2011-2015. Code released under the MIT license. Docs released under Creative Commons. 标签:微信sdk

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值