一、引言

目前微信公众平台正如火如荼的进行中,微信虽然在海外市场不敌WhatsApp,但是已经俘获了国内绝大部分用户的心。作为国内最大的,超级"app",微信已算是成功问鼎了。公众帐号百花齐放,各自SDK层出不穷,但是单单.net平台/C#的SDK也就那么几个值得一提:Senparc.Weixin.MP(以下简称Senparc) 和WeixinSDK.net(以下简称WeixinSDK)。ps:为什么官方没有完整的.net/C#版本?谁知道可以告诉我下。
 
(1) Senparc.Weixin.MP    
标语:微信公众平台SDK Senparc.Weixin for C#
达到1000+ commits,15个contributors,5个branches。

(同时由于易信的API目前与微信保持一致,此SDK也可以直接用于易信,如需使用易信的自定义菜单,通用接口改成易信的通讯地址即可)。已经支持用户会话上下文(解决服务器无法使用Session处理用户信息的问题)。

(2)WeixinSDK.net  
标语:一个超级轻量级的,像Python一样自由书写代码的微信公众平台SDK(.net版本)
达到60+ commits,1个contributors,1个branches。

目前只针对微信公众平台开发者文档所有API进行包装也就是微信服务号和订阅号的开发,不支持微信企业号和移动端API。但是不排除企业号和移动端API共有部分的调用,对于这部分本SDK不保证其能调用成功。

 
 
从数据来看两者不在一个数量级上,从标语来看,Senparc更谦虚中庸一些,WeixinSDK显得激进许多,到底谁好谁坏,谁优谁劣,且听楼主慢慢道来。
 
二、设计思路
     Senparc的设计思路是大而全,功能完备且强大,所有用到的中间对象都用实体类的形式表达出来,所以显得重了些;
     WeixinSDK的设计思路是小而美,对代码有洁癖的程序员很容易为之着迷,基本上API涉及到的业务他都用Dynamic对象表示,所以显得一下子比Senparc轻了许多。轻量级,结构清晰,简单灵活。
     Senparc更像是集团军作战,有大量的用户和贡献者为其服务,所以迭代要快很多。所有微信官方API的功能他都包含了,所以成为了主流也不奇怪。而WeixinSDK像是单兵作战,当然不是一般的兵,用户少,迭代慢,目前还不支持企业号API(正在紧急筹划中,见官方论坛)。
 
三、开发者该如何选择
    一个大而全,一个小而美,我们开发者该如何选择呢?
    其实这个问题只有这两个都用过之后的人才有权利发表看法,我只能从表面上来说:
    如果你是一个保守的人,对Dynamic对象没有概念,入门级的程序员建议你选择Senparc,因为他更符合传统思维;
    如果你是一个激进的人,喜欢轻量级,喜欢用像python一样的弱类型语言编写程序,建议您不妨试试WeixinSDK。
    另外:WeixinSDK需要.net framework4.0版本,所以如果你的程序比这个低还不能用。

国内流行的开源.net微信公众平台SDK对比分析的更多相关文章

  1. 国内流行的两大开源.net微信公众平台SDK对比分析

    最近忙于微信周边的开发 难免手痒去搜索一下有没有相关的sdk直接拿来使 还真发现了不少 这里总结两个看起来比较不错的.net平台下基于C#语言开发的SDK 一个强大一个小巧 (1) Senparc.W ...

  2. 微信公众平台SDK Python

    微信公众平台SDK 项目背景 从2014年开始玩微信公众平台,试用过其中大多数的功能,如:消息回复.自定义菜单.公众号中的支付,页面授权等.之前的程序中都是直接调用公众平台的接口,这样复用功能无法实现 ...

  3. 微信公众平台SDK

    微信公众平台网址:https://mp.weixin.qq.com/ 服务号说明:给企业和组织提供更强大的业务服务与用户管理能力,帮助企业快速实现全新的公众号服务平台. .NETSDK: Loogn. ...

  4. 【微信公众平台SDK(链式调用)】经过半个月的迭代,今天抽空写了个Demo

    这个项目是在实际开发中逐渐完善的,开发过程基于ASP.Net Core 1.1,实际生成会兼容Net4.5. 写有完善的代码提示,怎么用就不多做解释了,引用好实例中的命名空间基本上就可以通过智能提示了 ...

  5. 微信公众平台SDK for node

    实现了下面特性: 1.开启开发人员模式 2.解析微信请求參数 3.验证消息来源 4.被动回复文字消息 5.被动回复图文消息 6.获取access_token 7.创建自己定义菜单 地址:wechat ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者

    系列目录 前言: 一.阅读这段系列之前,你必须花半天时间大致阅读微信公众平台的API文档,我尽量以简短快速的语言与大家分享一个过程 二.借助微信公众平台SDK Senparc.Weixin for C ...

  7. David Camp 微信公众平台开发官方内容拓展版---PHP版本

    微信公众平台开发(一) 配置接口 微信公众平台开发(二) 微信公众平台示例代码分析 微信公众平台开发(三) 订阅事件(subscribe)处理 微信公众平台开发(四) 简单回复功能开发 微信公众平台开 ...

  8. Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明

    为了方便大家开发LBS应用,SDK对常用计算公式,以及百度和谷歌的地图接口做了封装. 常用计算: 用于计算2个坐标点之间的直线距离:Senparc.Weixin.MP.Helpers.Distance ...

  9. PHP微信公众平台

    微信公众平台客户中心微信公众平台开发文档微信公众平台自定义菜单微信公众平台开发(一) 配置接口微信公众平台开发(二) 微信公众平台示例代码分析微信公众平台开发(三) 订阅事件(subscribe)处理 ...

随机推荐

  1. 关于IE6的一些总结

    开篇之前,循例简单说说IE6的一些背景吧. IE6是指微软浏览器系列中的第六个版本,它是在2001年的时候伴随着XP系统的问世而同时推出的一款浏览器.因为XP普及的原因,这款浏览器一度问鼎全球浏览器市 ...

  2. 有关getClassLoader().getResourceAsStream(fileName)、class.getResourceAsStream(fileName)和().getContextClassLoader().getResourceAsStream(fileName)的区别

    一:前言 在自己获取属性时,碰见了XX.class.getResourceAsStream(fileName),自己对这个其实不是很理解,上网查了下资料,又看到了上述的几个,所以就研究了下. 二:内容 ...

  3. SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释

    这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文件并没有进行过多的说明,很多人知其然不知其所以然,经过几天的搜索和整理,今天总算对其中的XML配置文件有了一定的了解,所以拿 ...

  4. 51Nod 2006 飞行员配对(二分图最大匹配)-匈牙利算法

    2006 飞行员配对(二分图最大匹配) 题目来源: 网络流24题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 第二次世界大战时期,英国皇家空军从沦陷国 ...

  5. 【BZOJ4008】【HNOI2015】亚瑟王 [期望DP]

    亚瑟王 Time Limit: 20 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description 小 K 不慎被 LL 邪教洗脑了,洗 ...

  6. bzoj 1042 DP+容斥原理

    我们可以先DP预处理出W[I]代表买I的东西,每种钞票的个数 不做限制的方案数,那么对于每一组数据的限制,我们可以知道 W[S-C[I]*(D[I]+1)]C为面值,D为数量,这个代表第I种钞票一定 ...

  7. web前端 html基础2

    表单标签<form></form> input系列标签 text 文本输入框 placeholder 默认的属性,输入时消失 password 密码输入框 radio 单选框 ...

  8. isatty

    isatty - test whether a file descriptor refers to a terminal #include <stdio.h> #include <u ...

  9. ARM 中断状态和SVC状态的堆栈切换 (异常)【转】

    转自:http://blog.csdn.net/edwardlulinux/article/details/9261393 版权声明:本文为博主原创文章,未经博主允许不得转载. ARM 中断状态和SV ...

  10. python memcache 常用操作

    add() 添加一条键值对,如果key已存在,重复执行add操作会报异常 mc.add('name2', 'lisi') print(mc.get('name2')) # lisi replace 修 ...