我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

webapi+Task并行请求不同接口实例-创新互联

标题的名称定义不知道是否准确,不过我想表达的意思就是使用Task特性来同时请求多个不同的接口,然后合并数据;我想这种场景的开发对于对接过其他公司接口的人不会陌生,本人也是列属于之内,更多的是使用最原始的异步委托的方法去处理,今天抽空写了一个使用4.5新特性Task来处理这种场景;各位看客有什么疑问或者好的建议及分享请博客通知,谢谢。

金水ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

A.项目结构图

webapi+Task并行请求不同接口实例

B.namespace Pm.V.PM_BLL下面的BaseClass定义如下:

webapi+Task并行请求不同接口实例 View Code

主要是在实例的时候读取各个业务模块的配置文件,初始化一些常用并且是公共的属性信息;其次创建了一个虚方法_GetArticles,注意里面的参数是object这个将再后面的时候重提;

C.下面就是请求第三方业务实现类的代码,这里测试的时候分别使用

1.CnblogsClass类抓取博客园首页的博客列表信息

webapi+Task并行请求不同接口实例 View Code

.注意这里使用 : base("")直接继承了上面说的父类的方法,来初始化配置信息(当然这个可能不算知识点)

.接下来就是实现的_GetArticles方法里面PublicClass._HttpGet方法封装的HttpClient获取博客园的数据

.解析了返回的数据信息(这里使用的正则,可能有些同学觉得正则可能还不太熟悉,可以自行百度参考分析下)

.记录日志,我这里是记录的文本日志暂时注释了,因为怕抓取的信息多,忘记删除占用空间

以上几点就是实际情况中经常遇到的步奏,这个处理步奏在从来没有对接过第三方接口的人还是值得学习的

2.HuJiangClass类是抓取了博客园中.Net第一页的数据,步奏和方法和上面相同,请关注代码部分

webapi+Task并行请求不同接口实例 View Code

D.今天要讲的主要内容来了,以上算是过度,让人了解对接第三方接口的一些处理步奏和简单的封装吧;这里将看到的是Pm.Api.Controllers空间下BlogsController里面的Post方法,代码如:

webapi+Task并行请求不同接口实例 View Code

1.首先使用了var baseRequest = Newtonsoft.Json.JsonConvert.DeserializeObject(param); 来第一次返序列化,得到验证的基本信息如账号,token等

2.常用的接口形式使用参数节点名称来确定将要执行的方法,或者直接在节点值中标注方法的名称,因此有了这么一句switch (baseRequest.FunName)来判断程序的走向

3.在此反序列得到真实调用者post给接口的数据(上面第一次反序列使用的是基类,基类里面就包含了验证需要的属性,为什么这里不直接使用第一次反序列的对象呢,因为这里将要传递给后面方法参数的值是子类里面封装的)

4.开始定义Task任务的数量,一般根据有几个第三方接口第一几个吧,Task[]保证后面产生的任务量

5.Task.Factory.StartNew(dataType._GetArticles, r_GetArticles) 方法来创建任务,这里要说的是dataType._GetArticles是之前上面说的请求第三方接口定义的方法,r_GetArticles这个是需要传递的值是object的,这也是StartNew固定的参数类型;再通过Task[]存储创建的任务;

6.Task.WaitAll(tasks, 1000 * 1 * 30);这个WaitAll是自带的,意思是等待任务执行多少毫秒,也算是知识点吧,第一个参数是任务数组,是数组的形式,第二个是毫秒单位的等待时间

7.最后通过foreach (var task in tasks) 来循环整合task.Result返回的结果

之后是效果截图DataType表示不同的数据来源:

webapi+Task并行请求不同接口实例

大致就是这些吧,不知道说的东西是否说明白了,这就是处理对接第三方不同接口的业务逻辑,也是使用task来并行处理的方法

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:webapi+Task并行请求不同接口实例-创新互联
分享URL:http://mswzjz.cn/article/ccpjcj.html

其他资讯