在上一篇文章《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:暂不透露

测试结果:

为了防止和用来做对比的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)开源发布的更多相关文章

  1. 微信公众平台开发,图文回复、access_token生成调用、以及微信SDK的实现(2)

    上一节课,我给大家分享了微信API接入以及事件推送的回复,这是微信开发的第二节课,重点给说一说单图文回复,多图文回复,access_token,微信SDK. 公众号消息回复很多种形式,常见的形式有,文 ...

  2. .net下4款不错的微信SDK

    .net下4款不错的微信SDK: 一款值得推荐的.Net微信开发SDK http://www.17ky.net/soft/474.html.Net微信公开帐号接口 WeiXinSDK http://w ...

  3. ASP.NET CORE下用盛派微信SDK取微信openid

    用CORE做项目用到微信的相关东西,听说那个盛派微信SDK很火,自己弄了下,只是简单的用用,用户访问页面取微信openid

  4. 微信公众平台Java版极速SDK

    JEEWX-API 是第一个微信公众平台Java版极速SDK,基于 jeewx-api 开发可以立即拥有简单易用的API,让开发更加轻松自如,节省更多时间 http://www.jeewx.com/

  5. 【Win10 UWP】微信SDK基本使用方法和基本原理

    上回讲到,作为一个长期散播温暖,散播希望的小清新无公害WP开发者,继QQ SDK之后,又把UWP微信SDK这茬了结了,仅供学习交流. 1.安装微信SDK for UWP 微信官方此前明确说明短时间内暂 ...

  6. NET 平台下的插件化开发内核

    .NET 平台下的插件化开发内核(Rabbit Kernel)   每个程序猿都有一个框架梦,曾经在2013年8月15日写过一篇“Koala Framework是什么?我为什么要写这个框架?”的文章, ...

  7. iOS开发总结--三方平台开发之微信支付

    1.前言 现在很多应用都有支付功能,支付也是开发中比较麻烦的一个部分.其实,最麻烦的部分是商户帐号的审核,如果没有商户帐号,就没有你要给钱的那个对公账户. 2.关于交易 在这个金融类项目的开发中,接触 ...

  8. 微信登陆,微信SDK授权登陆经验分享

    From:http://www.eoeandroid.com/thread-547012-1-1.html 最近因为项目需要做了微信登陆,好像也是微信最近才放出来的接口.还需要申请才能有权限实现授权. ...

  9. iOS-不用微信SDK唤起微信支付

    作者:TianBai 原文链接:http://www.jianshu.com/p/8930b4496023 要想知道微信SDK是如何调起微信客户端,那么咱们先看看微信SDK到底做了什么 前期准备 接入 ...

随机推荐

  1. 《Java JDK7 学习笔记》课后练习题2

    1.如果在hello.java中撰写以下的程序代码: public class Hello {     public static dmain(String[]args) {          Sys ...

  2. 数据分页处理系列之一:Oracle表数据分页检索SQL

      关于Oracle数据分页检索SQL语法,网络上比比皆是,花样繁多,本篇也是笔者本人在网络上搜寻的比较有代表性的语法,绝非本人原创,贴在这里,纯粹是为了让"数据分页专题系列"看起 ...

  3. 举例讲解Linux系统下Python调用系统Shell的方法

    有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法:1. os 模块 ...

  4. 折半算法的C#实现方式-递归和非递归

    这个算法,相信大家都懂,但是不真正的手动写一遍,总觉得不得劲.这不,手动写一遍就是有不一样的效果出现了. 往左折半,还是往右走比较简单,其实这两个算法最关键的是:退出条件 min > max   ...

  5. hadoop2.6.2分布式环境搭建

    1.准备三台机器,机器名是:master.slave01.slave02 1.1 最小化安装centos6.5 1.2 安装ssh,yum -y install openssh-clients(这一步 ...

  6. openwrt修改flash大小

    前言 默认openwrt trunk编译出来的flash大小为8M,但是我们手上的板子可能flash大小更大,本文以MT7620a为例,将其flash大小由8M修改为16M或者32M 增加dts文件 ...

  7. Ubuntu14.02.2下安装JDK并配置Jetty服务器

    首先第一步先取得JDK的安装文件,由于我的系统是64位的,所以安装包是jdk-7u80-linux-x64.gz 上传到unbuntu服务器下 执行tar -xvf jdk-7u80-linux-x6 ...

  8. C# 中的占位符本质

    占位符本质 1.占位符是相对于String字符串类型而言的. 2.占位符其实就是调用String.Format()方法.把指定的变量拼接到定义好的字符串模板中组成新的字符串.

  9. Spring学习之第一个Spring MVC程序(IDEA开发环境)

    回顾Java平台上Web开发历程来看,从Servlet出现开始,到JSP繁盛一时,然后是Servlet+JSP时代,最后演化为现在Web开发框架盛行的时代.一般接触到一个新的Web框架,都会想问这个框 ...

  10. python读取excel并制表输出

    源码如下: #!/usr/bin/python #coding=UTF-8 import xlrd import sys from texttable import Texttable def she ...