如何在 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 呢?

 更多精彩 

点击下方图片即可阅读


      点击在看让更多人发现精彩

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何打造组织级敏捷,你想知道的都在这里!

“敏捷是适应和响应变化的能力……敏捷组织将变化视为机遇,而不是威胁。” — Jim Highsmith注:Highsmith 在软件开发和 IT 行业有着超过 30 年的经验,曾是敏捷宣言的签署人之一,敏捷联盟的发起人和第一任理事,在很多行…

Azure DevOps Server CI - 自搭跨平台容器代理Agents

前言最近在地端(On-premises)幫團隊搭一套CI/CD流程,也順帶整理了一下從無到有的搭建過程,這次使用了docker技術來解決現有團隊使用CI/CD時讓現有CI/CD hosting環境過於複雜的問題。在開始之前,我先預備一下搭建的環境,如下:Windo…

python练习题:列表排序

Description 已知一个列表a [1,3,5,7,9],系统会通过input()函数给你输入2、4、6、8中的任意一个数字,请你将这个数字和列表a中的数字重新排列,要求新列表中的数字依旧按从小到大的方式排列,您只需要输出新列表即可。 Input 系统会…

.Net Core 认证组件源码解析

不知不觉.Net Core已经推出到3.1了,大多数以.Net为技术栈的公司也开始逐步的切换到了Core,从业也快3年多了,一直坚持着.不管环境怎么变,坚持自己的当初的选择,坚持信仰 .Net Core是个非常优秀的框架,如果各位是从WebForm开始,一步步走到今天,自然而然就会发现.微软慢慢的开始将…

7-10 逆波兰表达式求值 (20 分)(c语言)(数据结构)

逆波兰表示法是一种将运算符(operator)写在操作数(operand)后面的描述程序(算式)的方法。举个例子,我们平常用中缀表示法描述的算式(1 2)*(5 4)…

在.NET Core下的机器学习--学习笔记

摘要.NET Core 在机器学习的应用场景,除了 ML .NET 还会介绍一个非常棒的開源技術 TensorFlow .NET , Keras .NET.讲师介绍本课内容人工智能介绍ML .NETICSharpCoreTensorFlow .NETKeras .NETSciSharp人工智能应用图像识别/物体识别自然语言/翻译搜索/知…

6-5 顺序表操作集 (20 分)(创建,查找,插入,删除)以及顺序表的理解

顺序表: 线性表的顺序存储 线性表的顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素 在程序设计语言中,一维数组在内存中占用的存储空间就是一组连续的存储区域,因此,用一维数组来表示顺序存储的数据区域是…

asp.net core 自定义基于 HttpContext 的 Serilog Enricher

asp.net core 自定义基于 HttpContext 的 Serilog EnricherIntro通过 HttpContext 我们可以拿到很多有用的信息,比如 Path/QueryString/RequestHeader 等请求信息, StatusCode/ResponseHeader 等响应信息,借助 HttpContext 我们可以在日志中记录很多有用…

我的 .NET Core 博客性能优化经验总结

点击上方蓝字关注“汪宇杰博客”导语去年8月,我用 .NET Core 重写了我的博客系统。经过一年多的优化,服务器响应速度从上线时候的 80ms 提高到了现在的 8ms,十倍提速。可惜由于部署在国外,自然不可抗力会导致中国用户晚上访问速度…

7-11 堆栈操作合法性 (20 分)以及堆栈讲解(c语言实现)

关于堆栈: 1.它是什么 2.它为什么会出现/它的出现解决了什么问题 3.我们要怎么使用它 堆和栈到底是什么 栈和堆(托管堆)都存在于进程的虚拟内存中。 栈(Stack) 是操作系统在建立某个进程时或者线程(在支持…

pta数据结构 彩虹瓶(c++实现)(详解)

简单了解一下c: 一&#xff1a; #include<iostream> //头文件&#xff0c;给予使用部分功能的权限 using namespace std; //为了解决命名冲突的问题而引入的概念 int main() //main函数&#xff0c;每一个C程序都需要有一个main函数 {cout<&l…

csredis-in-asp.net core理论实战-主从配置、哨兵模式

csredisGitHub https://github.com/2881099/csredis看了github上的开源项目,上面真的只是单纯的使用文档&#xff0c;可能对于我这种人&#xff08;菜鸟&#xff09;就不太友好&#xff0c;我知道他对标的是ServiceStack.Redis&#xff0c; 一开始csredis只支持. net 版本&…

数据结构(队列)

一、队列的顺序存储 #define MAXSIZE 100 typedef int ElementType; typedef struct{ElementType Data[MAXSIZE];//用一维数组存放队列元素int front;//队头指针int rear;//队尾指针 }SqQueue;front指针指向队头元素 rear指针指向队尾元素的下一个位置 空对时&#xff1a;re…

Redis 6 RC1发布,带来众多新特性

Redis 6 RC1 发布了&#xff0c;项目创建人 antirez 在博客中介绍&#xff0c;这是迄今最“企业”化的版本&#xff08;SSL 与 ACL 等特性与企业极相关&#xff09;&#xff0c;也是最大的版本&#xff0c;同时也是参与人数最多的版本。GA 版本预计在明年三月到五月之间发布。R…

数据结构 树和二叉树

树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 根节点&#xff1a;根节点没有前驱结点除根节点…

Serverless那么火,2019年的采用如何?

传统的 IT 架构已经不适合当今快速发展的数字经济环境。技术顾问 Declan Morris 表示&#xff1a;“客户不仅期望零停机时间&#xff0c;而且要求应用程序无论在世界任何地方都具有一致的性能。”他还预测到&#xff0c;接下来是 Serverless 计算和函数即服务&#xff08;FaaS&…

数据结构判断题

1.将N个数据按照从小到大顺序组织存放在一个单向链表中。如果采用二分查找&#xff0c;那么查找的平均时间复杂度是O(logN)。 F 解析&#xff1a; 二分查找的平均复杂度是O&#xff08;logN&#xff09;没有错&#xff0c;一看到这个就跳坑了。然后知道陷阱来了&#xff01;按顺…

【C】Natasha 插件编程

文章转载授权级别&#xff1a;CNatasha 是一个代替 Emit / Expression 的动态构建项目&#xff0c;旨在为开发者提供方便、快捷、高性能的动态构建服务&#xff0c;动态编程是生态的重要组成部分&#xff0c;希望开发者们能有足够的兴趣来了解、使用、建设它。1、插件生成使用 …

二叉树先序,中序,后序,层次遍历(数据结构)

先序遍历 先序遍历可以想象为&#xff0c;一个小人从一棵二叉树的根节点为起点&#xff0c;沿着二叉树的外沿&#xff0c;逆时针走一圈回到根节点&#xff0c;路上遇到的元素顺序&#xff0c;就是先序遍历的结果 先序遍历的结果为&#xff1a;A B D H I E J C F K G 中序遍…

.NET Core 在 K8S 上的开发实践--学习笔记

摘要本主题受众是架构师&#xff0c;开发人员&#xff0c;互联网企业 IT 运维人员。大纲&#xff1a;1、 K8S 对应用的要求&#xff1b;2、 .NET Core 上 K8S 的优势&#xff1b;3、 K8S 下的 .NET Core 配置&#xff1b;4、 .NET Core 上分布式组件概览。大纲kubernetes 对应用…