OSS.Social微信项目标准库介绍

经过本周的努力,昨晚终于完成OSS.Social微信项目的标准库支持,当前项目你已经可以同时在.net framework和.net core 中进行调用,调用方法也发生了部分变化,这里我简单分享下,主要包含下边几个部分:

· 移植后的变化

· 和OSS.Common,OSS.Http关系

· 异步(Task)使用介绍

 

一. 移植后的变化

    如果不了解OSS.Social的同学,可以参看我前面的几篇文章介绍,这里就不多说了。这次移植的变化首先是对.net core项目能够提供直接的支持,当前的使用的.net standard标准库版本为1.3版,对应的framework支持为4.6版,对应.net core 的版本现在基本都支持,源码详见github,在项目我提供了Framework 4.6的单元测试项目,和.netcoreapp1.0的网站项目。由于时间不充裕,并没有做全部接口测试,如果发现有bug可以及时和我联系。

    其次是对异步的支持,这个也是这次变动最大的地方,几乎公号管理功能(Offcial)模块下的所有核心方法都转为异步方式提供,这些完全归功于HttpClient带来便利,在底层IO层面提供了最基础的异步支持。

  当前可以像如下方式调用:

  当然,在很多情况下需要及时对结果进行处理给出对应的响应信息,为了这种同步需求,所以我通过调用Task的wait()方法,封装了一个简单的扩展方法WaitResult(),直接可以如下调用:

 

二. 和OSS.Common,OSS.Http关系

  OSS.Common和OSS.Http我很早以前写的两个基础模块,现在都统一到OSS系列下,现在都已经提供了.Net Standard的支持。前者负责全局结果实体,加密算法,基础辅助类的实现。像在接口方法中所有的返回实体都会继承ResultMo实体,其中提供了IsSuccess属性,Ret和Message信息,统一项目中的传值以及结果判断,统一判断依据。后边会有针对它的文章介绍,这里略过,如果你想在项目中使用它,可以直接通过Nuget安装:

  至于OSS.Http,主要负责对Rest接口请求的封装,底层已经由HttpWebRequest迁移至HttpClient模块,如果你感兴趣,可以参考我写的《完成OSS.Http底层HttpClient重构封装》的文章,当前也可以通过Nuget安装:

三. 异步(Task)使用介绍

  1. 基本介绍

  因为在这个项目中使用了大量的async异步关键字,所以对于这种情况使用较少的同学可能略微有些不适,那这里我主要把异步的常见使用情况给大家介绍下。

  异步在我印象中,从.net体系下最开始的使用Thread,到后来的Task,再后来的async和wait关键字。它的语法越来越精简,在Framework2.0时代我们可能需要通过 new Thread(执行任务).Start()  方式来创建异步线程。因为系统线程的频繁创建会造成系统资源的大量消耗,所以.net维护了一个线程池,可以让我们通过 ThreadPool 来直接调用线程池中已经维护好的线程,我们可以很简单的通过 ThreadPool.QueueUserWorkItem(执行任务) 完成异步线程的调用。

  再后边.net 提供了 Task.Run(()=>{ 执行任务 }) 这种形式的异步调用,这种形式默认使用线程池下的线程,同时返回一个 Task 对象,可以通过这个对象来等待或者判断任务的完成状态等。

  虽然这个时候使用多线程异步操作已经相当简单了,但是有时候异步代码还是要单独进行处理,会造成一定的层级关系。所以后来就有 async和await 关键字,可以让我们能够像同步流程一样写异步代码。在下边我用一个简单的例子讲解一下。

   2. 使用形式:

    这里我通过一个简单的例子来给大家分享一下,假如我们现在有一个需求,需要通过用户手机号,请求另外一个系统下的用户名,并给用户推送短信消息。下边是我使用asyn和await写的一个简单例子。

  

在这个例子中,如果你把await和asyn拿开,那么流程就是一个完整的同步流程,但是加上之后就变成了一个异步。

这里要特殊说一下,await后边并不是立刻执行异步,他只有在真正的异步操作时才会处理,在这个例子中,也就是1,2,3 步会同步执行,4,5则是在异步线程中执行,同时在执行第4步时,UpdateUserInfo()方法结束返回

  3. 异常注意问题:

   对于异步异常,我推荐这篇文章《关于C#中async/await中的异常处理(上)》,这里有一个问题需要强调一下,异步之后最好要对返回的 Task 有后续的操作, 这样如果有异常就会及时抛出,否则会在 GC 回收资源时触发,如果没有设置全局异常处理,很可能会引起应用程序池的崩溃。 

如果你对我的代码感兴趣,可以直接查看我的GitHub,或者关注公众号(OSSCoder):

原文地址:http://www.cnblogs.com/sunhoy/p/6411357.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

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

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

相关文章

ssh(Spring+Spring mvc+hibernate)简单增删改查案例

最近和spring mvc干上了,各种奇葩问题,各种解决。。。现在想想这历程还挺艰辛的,好了,不在这墨迹了,我们进入正题。 据说,现在Springmvc很流行,既然很流行就搞搞它,看看是个什么鬼&…

按小区楼栋单元楼层房间号进行排序-多列字符串提取数字进行排序

多列字符串提取数字进行排序 order by e.community_code, e.estate_id, cast(cour.court_name as UNSIGNED) , cast(b.build_name as UNSIGNED) , cast(u.unit_name as UNSIGNED) ,cast(f.floor_name as UNSIGNED) , cast(a.house_no as UNSIGNED) <select id"ge…

Visual Studio 2017 离线安装方式

Visual Studio&#xff0c; 特别是Visual Studio 2017 通常是一个在线安装程序&#xff0c;如果你在安装过程中失去连接&#xff0c;你可以遇到问题。但是&#xff0c;由于法律原因&#xff0c;微软没有提供完整的可下载的ISO镜像。他们不能将Android安装程序从Google打包到ISO…

如何用xshell上宝塔

如何下载xshell7免费版 网盘链接 提取码tmtn 如何连接服务器 第一步 第二步 第三步 第四步 第五步 安装宝塔 直接输入命令 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh得到 打开浏览…

Essential MSBuild: .NET 工具生成引擎概述

过去几年大家一直都在使用 .NET Core&#xff08;有这么久吗&#xff1f;&#xff09;并且都知道“生成系统”经历了重大改变&#xff0c;不论是终止对 Gulp 的内置支持&#xff0c;还是放弃 Project.json。对于我这个专栏作家来说&#xff0c;这些变化一直很棘手&#xff0c;因…

单片机中存储器扩展位地址线怎么算_51单片机存储器小结

存储器分为程序存储器(ROM)和数据存储器(RAM)&#xff0c;两种又都可以分为片内和片外&#xff0c;片外即需要自己在单片机外部扩展。8051单片机的片内程序存储器有4K&#xff0c;片内数据存储器有256个字节&#xff0c;其中又分为高128字节位特殊功能寄存器区&#xff0c;真正…

[Java]对double变量进行四舍五入,并保留小数点后位数

[Java]对double变量进行四舍五入&#xff0c;并保留小数点后位数 - 雾霾王者 - 博客园 [Java]对double变量进行四舍五入&#xff0c;并保留小数点后位数 1.功能 将double类型变量进行四舍五入&#xff0c;并保留小数点后位数 2.代码 import java.math.BigDecimal; import ja…

尊贵豪礼:微软2017最有价值专家MVP奖套件开箱图集

IT之家编者按&#xff1a;台湾省某科技网站站长获得了微软2017年度最有价值专家&#xff08;Most Valuable Professional&#xff0c;MVP&#xff09;奖&#xff0c;得奖的领域则是 Windows and Devices for IT。这位站长于是就展示了这份MVP的礼包开箱&#xff0c;从照片上看&…

echart vue 图表大小_vue之将echart封装为组件

最近的新项目里&#xff0c;有大量数据图表类的需求&#xff0c;为了增强代码的复用性&#xff0c;减少冗余&#xff0c;我开始思考如何将echart封装为组件调用。本文将会以雷达图为案例&#xff0c;一步步讲解在vue项目中如何使用echart&#xff0c;如何将其封装为能重复调用的…

个性化配置你的SQL Server on Linux

问题引入 这天老鸟满面春风找到菜鸟&#xff1a;“鸟儿啊&#xff0c;看你最近研究SQL Server On Linux如鱼得水&#xff0c;干得不错啊。不过呢&#xff0c;这是一个张扬个性的年代&#xff0c;要创新&#xff0c;要与众不同&#xff0c;那你怎么在Linux平台对SQL Server做个性…

idea查看读取的那个nacos配置和yaml配置 naocos 日志

logging.level.com.alibaba.cloud.nacos.client.NacosPropertySourceBuilderdebug

二叉树的前中后序查找+思路分析

思路分析 代码实现 package com.atguigu.tree;/*** 创建人 wdl* 创建时间 2021/3/24* 描述*/ public class BinaryTreeDemo {public static void main(String[] args) {//先需要创建一颗二叉树BinaryTree binaryTree new BinaryTree();//创建需要的节点HeroNode root new He…

spark sql uv_使用Spark Streaming SQL进行PV/UV统计

作者&#xff1a;关文选&#xff0c;花名云魄&#xff0c;阿里云E-MapReduce 高级开发工程师&#xff0c;专注于流式计算&#xff0c;Spark Contributor1.背景介绍PV/UV统计是流式分析一个常见的场景。通过PV可以对访问的网站做流量或热点分析&#xff0c;例如广告主可以通过PV…

二叉树删除节点+思路分析

思路分析 代码实现 ![在这里插入代码片](https://img-blog.csdnimg.cn/20210325193201194.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NzgzNjYw,size_16,color_FFFFFF,t_70)

ddm模型公式_简单判断目前行情——从股利贴现模型切入

本文目录&#xff1a;1.介绍股利贴现模型&#xff1b;2.以贵州茅台为例根据现有情况估计模型内部各参数&#xff1b;3.得出结论&#xff1b;一、股利贴现模型&#xff08;DDM&#xff09;我们知道给一项资产定价最朴素的想法是将它未来产生的所有现金流以一定的贴现率贴现至当前…

分布式事务与一致性算法Paxos amp; raft amp; zab

1.CAP原理 要想数据高可用&#xff0c;就得写多份数据写多分数据就会导致数据一致性问题数据一致性问题会引起性能问题 2.一致性模型 弱一致性最终一致性&#xff08;一段时间达到一致性&#xff09;强一致 1、2 异步冗余&#xff1b;3是同步冗余 3. 扩展服务的方案 数据分区&…

打开数据库_数据库客户端navicat遇到问题怎么办?

前面的文章介绍了&#xff1a;mysql数据库如何安装&#xff0c;客户端navicat如何安装。下面是客户端navicat使用过程中常见问题的解决办法。【问】使用navicat连接数据库报错信息&#xff1a;12511251Client does not support authentication protocol requested by server,co…

遍历线索化二叉树+图解

图解 代码实现 package com.atguigu.tree.threadedbinarytree;/*** 创建人 wdl* 创建时间 2021/3/25* 描述*/ public class ThreadedBinaryTreeDemo {public static void main(String[] args) {//测试一把中序线索化二叉树的功能HeroNode root new HeroNode(1, "tom&quo…

JS实现星星评分功能实例代码(两种方法)

转载自 JS实现星星评分功能实例代码(两种方法) 一、方法1 1、用到图片 2、结构和样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style>ul {padding-left: 0;…

SQL on Linux Run on Docker

摘要 SQL Server 2016以及SQL on Linux版本已经支持跑在Docker容器中&#xff0c;也展示微软拥抱开源的决心和勇气。这篇博文就是以SQL on Linux为例&#xff0c;看看如何将SQL Server实例部署在Docker容器中。 背景 大概在两个月之前&#xff0c;在SQL On Linux刚发布预览版本…