云原生CAx软件: HTTP基础知识汇总

随着云原生(Cloud Native)的兴起,面向服务架构(Service-Oriented Architecture,SOA)、微服务(Microservice)容器(Container)等相关概念与技术正在逐渐影响CAx(CAD/CAE/CAM)软件的架构设计与开发。

云原生CAx软件中,首先需要把系统按照功能划分成不同的服务单元然后再根据业务流程完成各种服务的集成(Enterprise Application IntegrationEAI)。Web ServicesMicroservice是将应用程序转换成服务的常用方法,而这些技术实际上大多数都是以HTTP为基础的。

因此,非常有必要对HTTP的概念、原理等基础知识进行总结,以期能够更好的进行云原生CAx软件的设计与开发。

注1:限于研究水平,分析难免不当,欢迎批评指正

注2:文章内容会不定期更新

一、HTTP基础

HTTP(HyperText Transfer Protocol, 超文本传输协议)是一种采用"请求-应答"通信模式、运行在TCP协议之上的应用层协议,早期主要应用于Web服务器与客户端之间HTML数据传输。

  1.1 HTTP工作原理

HTTP采用请求-应答通信模式,一般用于B/S架构中HTTP Client与HTTP Server之间的网络通信。

首先,HTTP Client(通常是浏览器)创建一个到HTTP Server指定端口(默认为80端口)的TCP连接,然后HTTP Client向HTTP Server发送HTTP请求报文。

HTTP server收到HTTP请求报文之后,完成HTTP请求报文数据报文解析,执行对应的业务逻辑,然后将状态码、处理结果等写入到一个HTTP响应报文,并将该HTTP响应报文返还给HTTP Client。

HTTP Client收到HTTP响应报文之后,根据返还状态、处理结果等完成显示、数据存储等工作。

  1.2 HTTP数据报文

HTTP请求报文由请求行、请求头部、空行、请求数据等四个部分组成。

 HTTP响应报文由状态行、消息报头、空行、响应正文等四个部分组成。

  1.3 浏览器架构

Chromium's high-level architecture

二、实现与衍生

  2.1 Boost

ModuleDescriptionScenario
BeastPortable HTTP, WebSocket, and network operations using only C++11 and Boost.Asio

  2.2 Qt

ModuleDescriptionScenario
Qt Network

Classes to make network programming easier and more portable.

Currently HTTP, FTP and local file URLs are supported for uploading and downloading.

封装了套接字,也实现了HTTP、FTP等常见网络协议
Qt WebSocketsProvides WebSocket communication compliant with RFC 6455.  It provides an implementation for the WebSocket protocol, which is offered by IETF (Internet Engineering Task Force) as a better alternative for bidirectional communication using the existing web infrastructure.服务端主动向客户端推送数据
Qt WebChannelProvides access to QObject or QML objects from HTML clients for seamless integration of Qt applications with HTML/JavaScript clients.基于Qt的Server应用
Qt WebKitThe QtWebKit module provides a web browser engine as well as classes to render and interact with web content在Qt5中,被Qt WebEngine替换
Qt WebEngineClasses and functions for embedding web content in applications using the Chromium browser project.作为Qt WebEngine替换者,在应用中显示Web内容
Qt WebViewDisplays web content in a QML application by using APIs native to the platform, without the need to include a full web browser stack.在QML程序中显示Web内容
Qt for WebAssemblyA platform target to compile Qt applications for the web browsers using WebAssembly.将Qt应用嵌入到Web页面

  2.3 Web Services 

  2.4 ESB

  2.5 API GateWay

  2.6 WebGL and Three.js

参考文献

罗军舟. TCP/IP协议及网络编程技术. 清华大学, 2004.

Joseph Ingeno. Handbook of Software Architecture.

顾宁. Web Services原理与研发实践. 机械工业出版社, 2005.

网络资料

大型CAx(CAD/CAE/CAM)工业软件开发中的关键组件https://blog.csdn.net/qq_26221775/article/details/123193318?spm=1001.2014.3001.5501

 HTTP 1.1https://datatracker.ietf.org/doc/html/rfc2616

Google Chromehttps://www.google.cn/intl/en_uk/chrome/

The Chromium Projectshttps://www.chromium.org/Home/

gSOAPhttps://www.genivia.com/

Boosthttps://www.boost.org/doc/libs/1_80_0/

Qt5 All Moduleshttps://doc.qt.io/qt-5/qtmodules.html

Qt5 Porting Guidehttps://doc.qt.io/qt-5/portingguide.html

Qt4.8 WebKithttps://doc.qt.io/archives/qt-4.8/qtwebkit-module.html

WebSockethttps://datatracker.ietf.org/doc/html/rfc6455

Qt for WebAssemblyhttps://doc.qt.io/qt-5/wasm.html

Spring Web Serviceshttps://spring.io/projects/spring-ws

OpenESBhttp://www.open-esb.net/

Pattern: API Gateway / Backends for Frontends Contexthttps://microservices.io/patterns/apigateway.html

Spring Cloud Gatewayhttps://spring.io/projects/spring-cloud-gateway

Netflix Zuulhttps://github.com/Netflix/zuul

Nginx http://nginx.org/en/index.html

Konghttps://github.com/Kong/kong

WebGL https://www.khronos.org/webgl/

Three.js https://threejs.org/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

六、CANdelaStudio入门-通信参数编辑

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的通信参数编辑,欢迎各位朋友订阅、评论,…

heic格式转化jpg的3种好用方法

如果你是使用iOS手机的用户,那么一定对HEIC格式不陌生。虽然HEIC格式可以保存原始图像质量,但它只能在苹果手机或Mac电脑上打开。如果我们想要在安卓或Windows系统上打开,就需要使用转换软件将HEIC格式转换成常用的JPG格式。HEIC 是一种新型的…

H.264/AVC加密----选择加密

文献学习: 《Data Hiding in Encrypted H.264/AVC Video Streams by Codeword Substitution》 期刊:IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY 简介 通过分析H.264/AVC编解码器的特性,提出了三个敏感部分(IPM、MVD和残差系…

深度学习-第R2周——LSTM火灾温度预测

深度学习-第R2周——LSTM火灾温度预测 深度学习-第R2周——LSTM火灾温度预测一、前言二、我的环境三、前期工作1、导入数据集2、数据可视化 四、构建数据集1、设置x,y2、归一化3、划分数据集 五、构建模型六、模型训练1、编译2、训练 七、评估1、loss图2、预测 深度学习-第R2周…

区间DP (Java) 解析/模板/案例

一. 区间DP简单介绍 区间DP,是经常会用到的、解决区间问题的一种方法,经常以动态规划(dfs/记忆化搜索)的形式展现,最核心的思想就是枚举区间(枚举端点),寻找切割点,处理因…

并发编程基石:管程

大家好,我是易安! 如果有人问我学习并发并发编程,最核心的技术点是什么,我一定会告诉他,管程技术。Java语言在1.5之前,提供的唯一的并发原语就是管程,而且1.5之后提供的SDK并发包,也…

手写Spring框架---IOC容器实现

目录 框架具备的最基本功能 实现容器前奏 创建注解 提取标记对象 extractPacakgeClass里面需要完成的事情 获取项目类加载器的目的 为什么不让用户传入绝对路径 类加载器ClassLoader 统一资源定位符URL ClassUtil提取标记类 获取包下类集合 装载目标类的集合 获取…

【Unity入门】21.预制体

【Unity入门】预制体 大家好,我是Lampard~~ 欢迎来到Unity入门系列博客,所学知识来自B站阿发老师~感谢 (一)预制体制作 (1)什么是预制体 这一章节的博客,我们将会学习一个预制体的概念。什么是…

【C语言】struct结构体

文章目录 一. 结构体简述二. 结构体的声明和定义1、简单地声明一个结构体和定义结构体变量2、声明结构体的同时也定义结构体变量3、匿名结构体4、配合typedef,声明结构体的同时为结构体取别名5、在声明匿名结构体时,使用typedef给这个匿名结构体取别名 三…

中国的chatGpt-中国chatGPT软件

chatGPT中文免费版 您是否在寻找一款免费且实用的聊天软件来更好地与别人交流?那么,“chatGPT中文免费版”将是您的不二选择! 作为一款由 OpenAI 训练的大型语言模型,chatGPT 中文免费版可以让您轻松地与其他人进行交流&#xf…

( 栈和队列) 155. 最小栈 ——【Leetcode每日一题】

❓155. 最小栈 难度:中等 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。…

计算机网络【2】 子网掩码

学习大佬记下的笔记 https://zhuanlan.zhihu.com/p/163119376 "子网"掩码,顾名思义,它就是拿来划分子网的,更准确的说,划分子网的同时,还能通过它知道主机在子网里面的具体ip的具体地址。 子网掩码只有一个…

Pytest接口自动化测试实战演练

结合单元测试框架pytest数据驱动模型allure 目录 api: 存储测试接口conftest.py :设置前置操作目前前置操作:1、获取token并传入headers,2、获取命令行参数给到环境变量,指定运行环境commmon:存储封装的公共方法connect_mysql.p…

【计算机是怎么跑起来的】基础:计算机三大原则

【计算机是怎么跑起来的】基础:计算机三大原则 计算机的三个根本性基础1.计算机是执行输入,运算,输出的机器输入,运算,输出 2. 软件是指令和数据的集合指令数据 3. 计算机的处理方式有时与人们的思维习惯不同对计算机来…

如何做好采购计划和库存管理?

“销售计划不专业且不稳定”“准确性低” “目前只按照过往销量和采购周期做安全库存,但欠货和滞销依然严重” 题主的问题其实蛮有代表性的, 也是传统采购和库存管理常常面临的问题: ① 前后方协作困难 采购/销售/财务工作相互独立&#x…

NetXpert XG2帮您解决“布线安装与维护”难题

在传输大量数据时,光纤变得越来越重要,而铜缆在未来也将继续发挥重要作用,因此我们不仅要比较两种类型布线的优缺点,还要探究光纤传输中的错误来源。 测试光缆传输损耗的准确性对于故障排除至关重要,特别是在光纤情况下…

2023五一数学建模竞赛(五一赛)选题建议

提示&#xff1a;DS C君认为的难度&#xff1a;C<A<B&#xff0c;开放度&#xff1a;B<A<C 。 A题&#xff1a;无人机定点投放问题 这道题是传统的物理类题目&#xff0c;基本每次建模竞赛都会有。由于这道题目并未给明数据&#xff0c;所以数据获取和搜集资料是…

来了来了,我使用 ChatGPT 开发了一个 AI 应用

ChatGpt 实在太火爆了&#xff0c;很多人在问我怎么使用 chatgpt 开发一个 AI 应用程序。这不就来了吗~ 开始 你所需要准备的一个OpenAI 的密钥和一点点代码来发送提示并返回结果&#xff0c;例如下面这段代码&#xff1a; import { OpenAIApi, Configuration } from openai…

超火爆的ChatGPT课,送ChatGPT账号啦~~

HOT! HOT! HOT! &#x1f525; &#x1f525; &#x1f525; 上周&#xff0c;ChatGPT全栈开发课程一经推出&#xff0c;就在程序员圈子中引起了广泛关注。这两天 都被挤爆了&#xff0c;纷纷表示对课程内容很是期待呢。 明天就要开班直播啦&#xff0c;还未报名的同学&…

神经网络模型入门及蠓虫分类问题简单实战

学习知识要实时简单回顾&#xff0c;我把学习的神经网络模型简单梳理一下&#xff0c;方便入门与复习。 神经网络模型 神经网络简介 人工神经网络是在现代神经科学的基础上提出和发展起来的&#xff0c;旨在反映人脑结构及功能的一种抽象数学模型。自 1943 年美国心理学家W.M…