微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布
写在前面
最近比较忙,都没有好好维护博客,今天拿个半成品来交代吧。
记不清上次关于微信公众号快速开发框架(简称JCWX)的更新是什么时候了,自从更新到支持.Net Framework 4.0以后基本上就没怎么维护了,一方面工作比较忙,一方面家庭也需要维护,男人,你懂的。
自从NetCore发布以后,一直想把JCWX更新到Core版本,从6月开始就着手更新了,大概花了一个月时间,更新到了Net Core 1.1版本,当时并没有对外公开,只是在Nuget上发布了下,随后8月的时候2.0发布了,借着机会,我把代码更新了下,使其支持.Net Core 2.0,也就是现在你看到的版本。
在更新到Net Core 1.1的时候,原本不打算继续了,因为苏大大的公众号SDK已经非常强大了,不过,没想到在Nuget上未公开的版本竟然也有上百名开发者下载使用,这让我很感动,所以我决定坚持下去。
为了与之前的版本区分,我在Github上新建了项目:https://github.com/JamesYing/JCWXCore
目前我在dev Branch上进行开发,您可以从Dev上获取最新的开发信息。
如果您之前不了我的项目,您可以点击【传送门】进行了解
为项目开了个网站:http://www.wxquickframework.com
使用方式:
1、可以Clone https://github.com/JamesYing/JCWXCore.git 后编译后引入您的项目
2、通过Nuget 控制台:Install-Package JCSoft.WX.Framework -Version 5.2.0
更新内容
一、支持服务注册
我们知道Asp.Net Core的DI是非常强大的,通过在Startup.cs中,把我们的服务注册到程序中。JCWXCore也支持DI方式注册。
使用过JCWX的朋友应该知道,我在调用Api的时候,使用了接口IApiClient,在代码中我也提供了一个默认的ApiClient:DefaultApiClient。
在JCWXCore中,我们依然使用IApiClient接口作为主要调用接口,在DefaultApiClient中,我依赖了ILogger和IHttpFactory,您可以通过DI注册属于你自己的服务。
IHttpFactory目前仅仅支持Get和Post,并没有提供UploadFile,希望朋友能一起完善
在.Net Core中,我们使用非常方便,只需要在Startup.cs的ConfigureServices中添加如下代码:
public void ConfigureServices(IServiceCollection services)
{
//add wx quickframework service
services.AddWXFramework(); services.AddMvc();
}
注册之后,我们就可以在项目中任何地方使用了,比如在Controller中:
public class TestController:Controller
{
private readonly IApiClient _client;
public TestController(IApiClient client)
{
_client = client;
} public ActionResult Test(ApiRequest request)
{
var response = _client.Execute(request); return Json(response);
}
}
二、支持配置
到了.Net Core,我们使用json文件方式进行配置,这里我支持了通过Json配置文件配置和服务注册时配置
1、Json文件配置(一般时appsettings.json):
{
"AppId": "AppId",
"AppSecert": "AppSecert",
"EncodingAESKey": "EncodingAESKey",
"Token": "Token",
"MessageMode": 2 //0:明文 1:兼容 2:密文
}
2、服务注册时:
public void ConfigureServices(IServiceCollection services)
{
//add wx quickframework service
services.AddWXFramework(o =>
{
o.AppId = "123";
o.AppSecert = "123123";
o.Token = "123123";
o.MessageMode = MessageMode.Cipher;
o.EncodingAESKey = "encodingAESKey";
}); services.AddMvc();
}
目前来说配置并不是很完善,我将在下一版本中,使其能够根据配置文件,自动获取AccessToken,方便大家使用。
三、自动被动消息加解密
细心的朋友一定注意到在配置信息中,有一个MessageMode的枚举,以前比较偷懒,一直没有加支持,这次终于把加解密给加上去了,为了更好的体验,我把被动消息加解密做成了自动解密,自动加密。
在开发的时候我并没有采用中间件的方式做自动加解密,而是采用了添加InputFormatter和OutputFormatter的方式。
如果需要使用自动加解密,需要进行如下步骤:
1、配置MessageMode为兼容模式或者密码模式
2、引用“using JCSoft.WX.Mvc.Formatters”,可以通过Nuget控制台引入:
Install-Package JCSoft.WX.Mvc.Cores -Version 1.2.0
3、在Startup.cs的ConfigureServices中把InputFormat和OutputFormat添加进去:
services.Configure<MvcOptions>(options =>
{
options.InputFormatters.Add(new WechatXmlSerializerInputFormatter(
Configuration.GetValue<string>("Token"),
Configuration.GetValue<string>("EncodingAESKey"),
Configuration.GetValue<string>("AppId"),
Configuration.GetValue<MessageMode>("MessageMode")
)); options.OutputFormatters.Add(new WechatXmlSerializerOutputFormatter(
Configuration.GetValue<string>("Token"),
Configuration.GetValue<string>("EncodingAESKey"),
Configuration.GetValue<string>("AppId"),
Configuration.GetValue<MessageMode>("MessageMode")
));
});
这里的代码不是很好看,如果有更好的方法,请艾特我。
为了测试自动加解密,我做了一个demo项目:PassivityRequestMessageDemo
因为测试公众号被动消息接口必须使用80端口,家里的电信猫无法映射80,我就把它build了一个镜像,使其在docker容器中运行,您也可以进行操作下:)
四、增加部分API
因为很久没有更新了,所以很多新的API都没有支持,这次我添加了一些,但估计有远远不够,希望大家能够一起来帮我添加。
目前来说现在应该有80%的Api了,但还是真心希望找几个志同道合的一起维护,有兴趣的请添加我的QQ:785418
写在最后
这次把JCWX更新到Core,不仅仅是为了项目升级,更是对.Net Core的一次学习,包括Docker化等等,让我学到了很多,也踩了很多坑。不过一个人的力量真的有限,现在每天的生活就是工作-带娃-锻炼-学英文 一个循环下来已经晚上11点,真的力不从心,只能中午抽空修改,在这里也对大家说声抱歉。
自从换了工作后,我养成了如下习惯:
1、习惯邮件发送问题
2、习惯做TodoList
3、开始坚持锻炼(瘦了20斤)
4、戒烟成功
5、每天学习15个英文单词
6、每天看半小时书
现在感觉每天都不够用,写代码,带娃,锻炼,学习,连写博客都有点奢侈。
.Net Core真的是好东西,但是在国内应用真的不多,希望大家一起加入,壮大国内的社区。
如果您是.Net Core爱好者,可以考虑加入我的QQ群:376248054(最近气氛不加,希望大家踊跃啊)
微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布的更多相关文章
- 微信公众平台应用开发框架sophia设计不足(1)
设计一个小框架考虑的东西真不少,每一样都不easy: 1.既要解决当前技术的不足: 2.又要方便他人使用(基本的目的). 3.同一时候又要设计得优雅.easy扩展. sophia一開始设计用来支持智能 ...
- 微信公众平台OAuth2.0网页授权
微信公众平台最近新推出微信认证,认证后可以获得高级接口权限,其中一个是OAuth2.0网页授权,很多朋友在使用这个的时候失败了或者无法理解其内容,希望我出个教程详细讲解一下,于是便有了这篇文章. 一. ...
- 微信公众平台开发框架 Bee.WeiXin
我们来看一下如何通过Bee.WeiXin开发微信公众平台.关于微信公众平台的一般性介绍, 这里不做展开. 园里找一找就可以了. 本文主要是介绍Bee.WeXin, 代码已发布到https://beew ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)
本文将介绍如何在 .NET Core 环境下,借助 SignalR 在小程序内使用 WebSocket.关于 WebSocket 和 SignalR 的基础理论知识不在这里展开,已经有足够的参考资料, ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):在 .NET Core 2.0/3.0 中使用 MessageHandler 中间件
概述 在 <Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler> 中我们已经了解了 MessageHandler 的运行原理和使用方法 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者
系列目录 前言: 一.阅读这段系列之前,你必须花半天时间大致阅读微信公众平台的API文档,我尽量以简短快速的语言与大家分享一个过程 二.借助微信公众平台SDK Senparc.Weixin for C ...
- 微信公众平台开发(免费云BAE+高效优雅的Python+网站开放的API)
虽然校园App是个我认为的绝对的好主意,但最近有个也不错的营销+开发的模式出现:微信平台+固定域名服务器. 微信公众平台的运行模式不外两个: 一.机器人模式或称转发模式,将说话内容转发到服务器上完成, ...
- 微信公众号开发C#系列-1、微信公众平台注册
微信公众号简介 微信公众号分为服务号.订阅号.企业号,订阅号可以个人申请,服务号和企业号要有企业资质才可以. 我们所说的微信公众号开发主要指的是公众号的账号类型,公众号的账号类型分为订阅号.服务号.企 ...
- 微信公众号开发C#系列-2、微信公众平台接入指南
概述 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流程是这样的,用户发送消息到微信服务器,微信服务器将接收到的消息post到用户接入时填写的url中,在url处理程序中,首先 ...
随机推荐
- 《深入浅出设计模式》读书笔记 C#版(第一章)
原始需求和设计 事情是这样开始的,公司需要做一套程序,鸭子,设计如下: 一个鸭子父类,多个派生类,三个可override的方法. 第一次需求变更 我们要会飞的鸭子!!!!! 所以我们做了如下的更改: ...
- 分享基于分布式Http长连接框架--设计模型
追求简单的设计. 也许你的设计功能很强大,但能够在满足你需求的前提下尽量简单明了设计. 当你的设计过于复杂的时候想想是不是有其它路可以走,你站在别人的角度想下,如果别人看了你的设计会不会心领神会,还是 ...
- 【模版】AC自动机(简单版)
题目背景 这是一道简单的AC自动机模版题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保证正确的基础上只有两组数据,请不要恶意提交. 题目描述 给定n个模式串和1个文本串,求有多少个模式串在文本 ...
- 笨鸟先飞之ASP.NET MVC系列之过滤器(02授权过滤器)
授权过滤器 概念介绍 在之前的文章中我们已经带大家简单的了解了下过滤器,本次我们开始介绍授权过滤器. 我们之前提到过授权过滤器在认证过滤器之后,其他过滤器和方法被调用之前运行,而授权过滤器和它名字的含 ...
- vue 实现 换一换 功能
点击按钮列表页随机获取三个商品并渲染 后台返回的数据为 d为一个数组 数组 arr=[0,1,2]初始值 data:{ list:d, arr:[0,1,2] } 生产随机数 replace:func ...
- Unity 使用 陀螺仪 实现 《王者荣耀》 登入界面 背景动态效果
在 <王者荣耀> 登入界面 左右上下晃动手机(有些手机不支持)可以看到背景在变化 我使用的是iPhone SE 效果如下: 对比两张图片的左下角 可以看到差异 至于为什么要这么做: 1.使 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(87)-MVC Excel导入和导出
本文示例代码下载: 链接:http://pan.baidu.com/s/1jHBdgCA 密码:hzh7 ps:Vs数据库脚本在解压目录下,修改web.config数据库链接,示例代码包含:导入,导出 ...
- CSS之 z-index 属性
层叠上下文: 三维概念,表示元素在Z轴的位置 层叠可嵌套,组合成一个分层次上下文 每个层叠上下文和兄弟元素独立,进行层叠变化或渲染时,只考虑后代元素 每个层叠上下是自成体系的 层叠顺序 1 bac ...
- python 目录文件
每天写一点,总有一天我这条咸鱼能变得更咸 python 中对文件及目录的操作基本依赖与os,shutil模块,其中以os模块为主,最主要的几个方法实例如下: 1.判断文件/目录是否存在(os.path ...
- win10 UWP读写文件
C# uwp应用的文件读写最常见错误就是没有权限. 而最简单的方法是对已知的文件路径进行访问 已知的文件路径常见的是自身的路径 权限这个和之前不同,UWP读写文件多用StorageFile来读写文件 ...