如何在 C# 平台调用云开发?
▌关于作者
苏震巍,云开发Linker计划成员,《微信开发深度解析》作者、Senparc.Weixin 微信 SDK 作者、微软最有价值专家(MVP)、盛派网络创始人兼首席架构师、微软 Ignite 技术大会讲师、从事软件及互联网研发已有26年,发布了中国第一个HTML5商业应用,主持了众多大型项目的架构、开发和集成,对物联网、大数据和人工智能相关技术有深入的实践和理解,已为30余家世界 500 强企业提供解决方案和技术支持。
我一直在关注微信生态开发领域和云开发,看到有不少开发者需要服务端 SDK,在服务端调用云开发的数据库和函数,便在我自己的 SDK 中加入了相关的能力,帮助更多的开发者开发出更好的应用
▌关于 SDK
Senparc.Weixin SDK 是目前使用率最高的微信 C#/.NET SDK,包括了微信公众号、小程序、开放平台、微信支付、企业微信、微信硬件平台等几乎全套接口。Senparc.Weixin SDK 也是目前 GitHub 综合排名第一的中国 .NET 开源项目。项目同时兼容多版本的.NET Framework、.NET Standard 和 .NET Core,具备企业级系统集成的所有要素:支持容灾降级和热切换的分布式缓存策略、日志系统、AccessToken 全生命周期管理模块、消息上下文模块、消息队列模块、加解密算法模块,以及全套同步/异步方法。
▌使用教程-上手说明
使用 Senparc.Weixin SDK 开发项目可以参考现有的官方 Demo,其中包括了大部分常用的功能演示,且支持不同 .NET 版本 https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Samples。
以下以使用 .NET Core 开发的小程序为例,开发一个可以调用腾讯云的云函数接口的项目。
1.初始化一个项目
使用 Visual Studio 或 Visual Studio Code 创建一个 ASP.NET Core 项目,并配置项目的基础信息
选择具体的项目模板
看到这里,就说明你完成了项目的初始化
2.安装 SDK
鼠标点击【WeChatCloudFunction.Web】项目右键,选择【管理Nuget程序包...】
在 Nuget 管理窗口内,【浏览】标签下,搜索:Senparc.Weixin.WxOpen
注意:如需开发公众账号,则搜索 Senparc.Weixin.MP,以下操作以小程序为例,仅命名空间不同,对应功能的开发过程对于公众号(MP)、企业微信(Work)是完全一致的,可以举一反三。
3.配置 Senparc.Weixin 框架
在使用 Senparc.Weixin SDK 之间,还有两步基础的配置工作。
除了使用以下手动配置的方式,也可以参考现成的 Demo 直接复制对应代码:https://url.cn/5vUHVMF。
3.1 配置 appsetting.json
在 appsetting.json 追加如下内容:
//CO2NET 设置
"SenparcSetting": {
"IsDebug": true,
"DefaultCacheNamespace": "DefaultCache",
//分布式缓存
"Cache_Redis_Configuration": "#{Cache_Redis_Configuration}#", //Redis配置
"Cache_Memcached_Configuration": "#{Cache_Memcached_Configuration}#", //Memcached配置
"SenparcUnionAgentKey": "#{SenparcUnionAgentKey}#"
},
//Senparc.Weixin SDK 设置
"SenparcWeixinSetting": {
//微信全局
"IsDebug": true,
//小程序
"WxOpenAppId": "#{WxOpenAppId}#",
"WxOpenAppSecret": "#{WxOpenAppSecret}#",
"WxOpenToken": "#{WxOpenToken}#",
"WxOpenEncodingAESKey": "#{WxOpenEncodingAESKey}#"
}
其中, WxOpenAppId 和 WxOpenAppSecret 的字符串值(包括#{}#占位符)替换为小程序后台的值,如,将"#{WxOpenAppId}#" 替换为:"wx12b4f63276b14d4c"。
WxOpenToken 和 WxOpenEncodingAESKey 对应于对话消息管理的 Token 和 EncodingAESKey 参数,如果仅开发高级接口,可以忽略。
3.2 配置 startup.cs
在 ConfigureServices() 方法中追加代码(可以使用自动提示 using 命名空间):
services.AddSenparcWeixinServices(Configuration);
//Senparc.Weixin 注册
完整方法代码
在 Configure() 方法中添加两个参数,自动引入 appsettings.json 中的配置:IOptionssenparcSetting, IOptionssenparcWeixinSetting,完整代码:
在方法体末尾追加代码:
app.UseSenparcGlobal(env, senparcSetting.Value, null, true)
.UseSenparcWeixin(senparcWeixinSetting.Value,
weixinRegister =>
{
weixinRegister.RegisterWxOpenAccount(senparcWeixinSetting.Value,
"【云函数】小程序");
});
其中第一行代码是配置启用 CO2NET(Senparc.Weixin 的一个基础库)全局配置,第二行代码开始配置 Senparc.Weixin SDK 及小程序参数。
完整代码:
在 startup.cs 中添加以上3段代码,就可以开始使用所有微信的高级接口了。
4.调用小程序云开发的云函数
高级接口可以在任意地方出发,这里为了方便演示,我们将其放置在首页中。
打开 Controllers/HomeController.cs,创建一个新的 Action 方法 Api(),添加如下代码,即可调用云函数相关的接口:
var wxOpenSetting =
Senparc.Weixin.Config.SenparcWeixinSetting.WxOpenSetting;
var envId= "senparc-robot-5f5128";
var result = Senparc.Weixin.WxOpen.AdvancedAPIs.Tcb
.TcbApi.DatabaseCollectionGet(wxOpenSetting.WxOpenAppId,
envId);
return Content(result.ToJson(true));
其中,wxOpenSetting 是通过 startup.cs 中代码自动进行了全局配置的全套小程序配置参数,evnId 是云函数的环境ID,可以通过以下方式获取到:
打开小程序开发工具,点击【云开发】按钮
在新窗口中点击【设置】按钮
即可在右上角看到“环境ID(Environment ID)”。
完整代码:
启动项目后,即可看到默认的首页:
访问新建的页面/Home/Api,即可看到成功获得到接口结果:
▌其他
演示项目地址:https://github.com/Senparc/WeChatCloudFunction/tree/master
▌关于 Linker 计划
Linker计划,是云开发推出的,面向开源作者和开源团队的开源协调合作计划,旨在共建良好的云开发开源生态,为【云开发者】提供更多便利好用的开源SDK、案例或适配软件。
Linker计划,鼓励开源项目提供云开发版本或内建云开发支持,云开发将助力合作开源项目成长。如果有兴趣,可以发送您的开源项目、希望和云开发的合作方式等信息到 cloudbase@tencent.com
云开发目前已有两个不同语言的社区 SDK:Golang 和 C#, 除了这两门语言,你还期待什么语言 SDK 呢?
源码地址
https://github.com/TencentCloudBase/Good-practice-tutorial-recommended
云开发(CloudBase)是一款云端一体化的产品方案 ,采用 serverless 架构,免环境搭建等运维事务 ,支持一云多端,助力快速构建小程序、Web应用、移动应用。
技术文档:https://www.cloudbase.net/
如果你想要了解更多关于云开发CloudBase相关的技术故事/技术实战经验,请扫码关注【腾讯云云开发】公众号~