当前位置: 首页 > wzjs >正文

编程网站免费中文版保定网络公司电话

编程网站免费中文版,保定网络公司电话,wordpress添加代码,九号公司前言 本文重点解决的是,按照官网学习路径学习Tcp模块内容时,越看越混乱的问题。仿照官网案例,书写代码时,产生的各种疑惑。比如,类与类之间的关系,各种配置信息究竟有多少,为什么越写越混乱。那…

前言

本文重点解决的是,按照官网学习路径学习Tcp模块内容时,越看越混乱的问题。仿照官网案例,书写代码时,产生的各种疑惑。比如,类与类之间的关系,各种配置信息究竟有多少,为什么越写越混乱。那些官方文档中并没有提及的令人迷惑的地方。

本篇文章适合在看RCP官方教程之前,做辅助铺垫用。以便于更容易理解其代码书写原因,做到写一遍之后就不用再参照文档,自己自然就知道怎么写了。官方教程连接如下

对于文章中有些图片由于太大展示模糊,请在附件中下载,便于清晰阅览!

华为开发者学堂

好接下来讲讲这个RCP模块。

正文

Rcp我之前知之甚少。查了一下才知道这个协议很适合分布式系统的实现,是分布式系统实现高效通讯的重要工具。并且是官方主推替代http模块的工具。

原因是,Rcp可以实现http能实现的能力,而且能做到http做不到事, 比Http更好用,具备更多的功能。

RCP提供的能力与设置,涵盖了整个Http所有环节

  • 发起网络请求
  • 多表单提交
  • 双向证书校验
  • DNS灵活的解析方式(系统,自定义)
  • 数据发送数据传输与数据响应拦截
  • 捕获有关http发送流,响应流的信息

RCP请求过程

首先先对请求过程有大致的了解,接下来我们重点介绍的,RCP代码中, 请求配置参数,几乎涵盖每一个细节的配置方式。大家看到配置信息的时候,能回顾到大致会影响到哪些环节即可。

RCP框架简介

  • RCP全称 Remote Communication Platform。其通过对HTTP协议的NAPI封装,提供基于场景化的声明式开发范式API接口,使开发人员无需处理低级别的HTTP细节,降低代码量并提升开发效率。
  • 提供基于会话的多线程模型,并动态调整和部署HTTP参数。
  • 相比于ohos.net.http模块。RCP在并发场景下进行了性能优化,使数据传输更快,性能更强。

代码实现及代码使用上的关系梳理

Session

Session指的是会话,它主要用于管理一组相关的请求(Request)与响应(Response)。 也就是跟请求是1vn的关系。

它管理的是很多请求,这点需要着重理解下。同时Session内部管理了一组TCP连接,是一组!

  • 允许的最大并发TCP连接数,默认值为6条, 允许设置的最大的数量是2147483647条。
  • Session允许多个TCP连接同时连接,最大活跃条数支持量为64条, 允许设置的最大值也是2147483647条。
  • Session内部像Http一样实现了底层对TCP连接的复用。避免TCP连接频繁所带来的客户端和服务端资源浪费。
  • 正因为上述两个原因,它才能管理一组的相关请求与响应的。所以,一个Session的生命周期,可以很长。绝对要长过一条http请求。

一个应用最多能创建16个Session。 超出范围会报错。

Request 与 Response

Request指的是Http请求对象。用于构造http请求的信息,通过Session发送出去,从而获得对应的数据响应(Response)

关系总结

Session是一个生命周期略长的会话,在会话期间,可以发送多条Request,从而获取Response。

所以他们的使用规则在代码上的表现为:

// 首先先创建一个Session实例,此为最简单的实例创建方式。商业代码中会很复杂。
// 此session之后会不断地被用来发送请求。与request是1vn的关系
const session = rcp.createSession(sessionCfg)// 创建一个request实例, request实例会有很多参数,之后我们会涉及学习。
let req = new rcp.Request('/test/post', 'POST', rcpHeader, multiForm, cookies, transferRange, configuration)// 发送
session.fetch(req).then((response) => {hilog.info(this.LOG_DOMAIN, this.LOG_TAG, "rcp request fetch success! response=" + JSON.stringify(response))}).catch((err : BusinessError) => {hilog.error(this.LOG_DOMAIN, this.LOG_TAG, "rcp request fetch error! err=" + JSON.stringify(err))
})

最粗略的调用关系就是这些。

有关于RCP中的各项Configuration

在商用代码中的调用,远不如上一节中的代码那么简单。要确保数据的传输绝对安全,也要确保数据的传输速度很快,很高效。另外,对于每一条请求还有一些统计上的需求,比如响应延迟时常,正确回复率等等,这是服务端伙伴们向上汇报的重要数据。总之啊,商用代码要加一些配置才能确保数据传输的安全和高效,这里讲的配置就是Configuration。

Session实例中的配置-SessionConfiguration

上文已经讲到了,Session负责的是n多条TCP连接,掌管n多个http请求响应过程。所以Session的配置有以下特点

  • 配置内容偏公共偏基础,以便于每一条请求响应中可以用到
  • 有一些不乏便于管理的配置项

createSession函数的声明为:

export function createSession(sessionConfiguration?: SessionConfiguration): Session;

在使用的时候我们直接用rcp调用即可。传入的参数就是配置参数 SessionConfiguration。

const session = rcp.createSession(sessionCfg) // sessionCfg为 SessionConfiguration对象, 管配置的

SessionConfiguration

SessionConfiguration是一个很庞大的配置类,其下聚合了很多方面的配置。这些配置单看源码的话,非常容易混淆,使用的时候需要不断的查源码看调用方式。比较麻烦。 另外就是。config的存在,便于我们按图索骥,大约能估摸出来这个RCP具体实现了什么能力。

我画了一张图,便于查看持有关系,以及分类脉络便于记忆。由于图片太大,本文附件中会包含一份整理完的原图。

Request实例中的配置

Request实例的初始化方法是:

let req = new rcp.Request('/test/post', 'POST', rcpHeader, multiForm, cookies, transferRange, configuration)

这个request初始化的时候,是需要很多参数的,我们这个章节讲的就是配置,只拿最后一个参数讲,就是Request的专有配置, 类型为 Configuration。

constructor(url: URLOrString, method?: HttpMethod, headers?: RequestHeaders, content?: RequestContent, cookies?: RequestCookies, transferRange?: TransferRange | TransferRange[], configuration?: Configuration);

这个Configuration与Session对象创建时传入的SessionConfiguration中的 requestConfiguration属性,类型是一样的。也就是Session间接持有了一个Configuration, 而Request直接持有了 Configuration, 与此同时还存在一些配置项,如Header, Cookies 都有可能在整个系统中出现两份!

接下来明了了,也就是如图所示,Session创建实例的时候传入的配置信息,和Request创建实例的时候传入的配置信息,有一部分是冲突的!存在冲突的可能!

session组件,Request组件同时设置configuration,哪个会生效

既然代码设置的时候,像上一章讲的存在两份,那么必然会存在冲突问题。RCP模块中对于这种冲突的处理流程如下图所示:

Configuration以request组件中的参数为准, 如果request中没有设置,就以session为准。

Response对象

对于Response对象,这个就是请求之后返回来的响应对象。对于这个对象的了解,侧重点就是其数据结构。它里面的属性很多都是只读的。我们知道什么属性存什么数据就行了。

我将Response也画了一个图,以便于有大致的印象。

铺垫好这些内容之后,请大家愉快的学习官方文档吧:

华为开发者学堂

http://www.dtcms.com/wzjs/827736.html

相关文章:

  • 婚庆网站开发工具点击网站首页域名又添加一个
  • 网站备案图标怎么添加国内高端医疗网站建设
  • wordpress关闭多站点wordpress防止爆破
  • 官方网站建设pptwordpress 文章索引
  • 顶针 东莞网站建设wordpress v3.3.1空间上传php
  • 建设网站需要做哪些工作内容做网站前台用什么软件
  • 企业门户网站建设新闻网站刷流量对网站有影响吗
  • 旅游网站开发选题背景宁波网站建设服务公司电话
  • 贸易网站有哪些表白网站制作系统源码
  • 哈尔滨手机网站制作重庆网站icp备案查询
  • 公司的网站建设费入什么科目南京seo关键词优化服务
  • 哪个网站做图找图片旅游项目网站开发
  • 网站分享的功能怎么做的管理系统oa
  • 正规网站开发公司天河电子商务网站建设
  • 漯河专业做网站的公司centos7 wordpress安装
  • 天津做网站找谁网站没有内容可以备案吗
  • 免费推广网站如何提高排名域名购买后怎么使用
  • iis上部署手机网站网站建设问题大全
  • 合肥网站制作公司电话域名一级和二级的区别
  • 网站商城前台模板四川公司网站建设
  • 做网站需要准备的工具返利网站建设服务
  • 网站对于企业的意义建设网站服务器 知乎
  • 国外自建站怎么样frontpage怎么做网站
  • 网站建设合同属于技术服务么代做毕业设计网站 道路桥梁
  • 电子商务网站建设岗位要求wordpress ajax form
  • 哈尔滨品牌网站建设编程跟做网站
  • 门户网站类是什么意思营口 微网站建设
  • 学校网站建设培训心得aspnet网站开发教程
  • 三水专业网站建设哪家好用什么软件可以制作图片
  • 网页制作三剑客是指什么资阳地网站seo