• .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设计的相关文章。

  • 相关阅读:
    JeePlus:代码结构
    JeePlus:项目部署
    JeePlus:Maven 安装配置
    JeePlus:目录
    框架-Java:JeePlus
    Java-JSP:EL表达式
    Template-FreeMarker:模板开发指南
    Template-FreeMarker:什么是 FreeMarker?
    FreeMarker:
    Template-FreeMarker:目录
  • 原文地址:https://www.cnblogs.com/ants/p/4576366.html
Copyright © 2020-2023  润新知