C/C++都有哪些开源的Web框架?

CppCMS

CppCMS是一个采用C++语言开发的高性能Web框架,通过模版元编程方式实现了在编译期检查RESTful路由系统,支持传统的MVC模式和多种语言混合开发模式。

CppCMS最厉害的功能是WebSocket,10万连接在内存中长期保存占用的大小不超过600MB,直接将WS和Node.js甩几条街。

某自动驾驶公司的OTA服务使用该框架构建API网关,在编译阶段完成所有的接口参数校验,软件运行三年零事故。

CivetWeb

嵌入式Web服务器,功能非常强大,提供可选择的SSL、CGI和Lua功能。

Drogon

是一个C++17/20开源的HTTP框架,在某头部券商中被广泛使用,就连小米的loT后台也使用了该框架。

该框架的异步I/O模型是使用Linux的epoll接口,在结合自主研发的ORM框架,数据库查询效率比Java JDBC提升了百分之四十。

某券商将自己的核心交易平台接口使用该框架进行了重构,实现了单机就能处理12万的并发请求,Http的平均响应时间不到0.8秒。

QDjango

QDjango主要基于QT库开发的Web框架,设计理念来源与Python Django框架,帮助开发者实现高质量的Web应用构建。

Seastar

Seastar采用C++进行开发,主要应用在Scylla上(与Apache Cassandra兼容的高性能NoSQL数据库),也可以说它就是为Scylla分布式数据库而诞生,让开发者管理数据时强迫使用分片内存池。

某交易所使用Seastar框架重写订单匹配引擎,订单的处理能力达到了纳秒级别,要做到这种级别,管控好每个字节在内存中的生命周期非常关键,相当于使用汇编语言写业务逻辑。

Seastar的诞生,让开发者可以轻松的实现具备C10M性能的网络服务,这难以不让人惊叹。

它的性能可以看官网提供的数据


轻量级、跨平台、无第三方库依赖,提供多个API接口,在单个服务器上能够实现500多万个并发连接。

Kore

Kore是一个可扩展、轻量级的Web应用框架,“安全为先”的设计理念来源于操作系统的强大安全特性,适用的场景包括从嵌入式设备到高性能服务器,支持C和Python语言扩展Web API、HTTP/1.1、默认TLS加密、WebSocket、模块热重载等功能,代码行数在2万行左右。

现在很多的路由器厂商都使用该框架开发界面,运行一个完整的Web服务仅需要8MB内存。

最有名的应用案例就是CDN公司将日志分析服务从Flask框架迁移到C语言开发的Kore框架后,服务器集群从原来的200台缩减到12台,每天的电费节省3000美元。

它的主要工作原理就是采用预派生进程+无锁队列设计,将CPU的利用率由百分之三十五提高到百分之九十八。

TreeFrog Framework

TreeFrog Framework也是基于QT而构建的全栈Web框架,自带基于MVC体系的模版系统和ORM框架,支持HTTP和带O/R映射的WebSocket协议。

Lithium

Lithium是一个高性能、轻量级、可扩展的Web框架,包含了数据库适配器、路由器、MVC模式架构等,它的设计理念是灵活、简洁和高效,提高开发者构建高质量Web应用的效率。

为了避免防注入魔法,它将SQL映射功能模块采用类型体操实现;开发者定义的每一个查询语句,都会被系统解析为抽象语法树,查询语句中的拼接非参数变量都会触发编译器报错,在内部被称之为SQL注入的克星。

某银行使用该框架重写了转账接口,渗透测试团队找了三个月都没有发现什么漏洞。

Crow

Crow是一个轻量级、高性能的Web框架,它在boost::asio上做了二次封装,整个框架只有一个头文件,开发者使用较为简单。如果你想学习该库,可以去搜索教程:《Build your web server in C++ with Crow.》。

目前估计该性能可以在TechEmpower上排到世界前五。

好了,今天就先分享到这里,记得点赞和收藏。

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

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

相关文章

数据结构——环形数组

环形数组 start 指向第一个有效元素的索引,end 指向最后一个有效元素的下一个位置索引。 注意: start是闭区间,先左移后赋值,先赋值(null)后右移;end是开区间,先赋值再右移,先左移再赋值(null…

大数据学习(59)-DataX执行机制

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…

云原生性能测试全解析:如何构建高效稳定的现代应用?

一、引言 随着云计算技术的快速发展,云原生(Cloud Native)架构成为现代应用开发的主流模式。云原生应用通常采用微服务架构、容器化部署,并利用 Kubernetes(K8s)等编排工具进行管理。然而,云原…

golang的Map

Map集合 概述 Map 是一种无序的键值对的集合。 Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。 Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,遍历 Map…

USB数据采集卡 Labview采集卡 32路AD模拟量采集 DAQ卡

今天给大家介绍阿尔泰科技的一款多功能数据采集卡USB3150/1/2/5/6 。 该板卡提供 32RSE / NRSE 通道或 16 通道 DIFF 模 拟量输入;4 通道模拟量同步输出;16 路可编程 I/O;2 路计数器。 USB3150/1/2/5/6 的主要应用场合为:电子产品…

K8s 1.27.1 实战系列(十)PV PVC

一、核心概念与关系 ​1、PV(Persistent Volume)​ PV 是集群中的持久化存储资源,由管理员预先创建并配置,独立于 Pod 生命周期。它抽象了底层存储(如 NFS、云存储等),定义存储容量、访问模式(如 ReadWriteOnce)、回收策略(Retain/Delete/Recycle)等属性。例如,一…

基于DeepSeek的智能数据分析和自动化处理系统:引领BI行业新变革

近期,一款基于DeepSeek API的智能数据分析和自动化处理系统横空出世,以其强大的功能和灵活的可扩展性,为BI行业带来了颠覆性的变革。 该系统支持多类型数据分析,包括文本 、指标和日志等。在文本分析方面,它能够提取关…

图形学面试题总结

图形学面试题总结 文章目录 图形学面试题总结Opengl 与 Vulkan1、OpenGL的渲染管线有哪些主要阶段?分别做什么?2、OpenGL中的VAO、VBO和EBO分别是什么?为什么需要它们?3、细分着色器与几何着色器是什么4、Vulkan与Opengl的区别是什…

Vue 系列之:路由

vue-router 组件 router-link 功能&#xff1a;用于导航&#xff0c;即渲染一个链接&#xff0c;当点击时&#xff0c;导航到由 to 属性指定的 URL。 示例&#xff1a;<router-link to"/home">Home</router-link> 它会渲染为一个 <a> 标签&…

通过mybatis的拦截器对SQL进行打标

1、背景 在我们开发的过程中&#xff0c;一般需要编写各种SQL语句&#xff0c;万一生产环境出现了慢查询&#xff0c;那么我们如何快速定位到底是程序中的那个SQL出现的问题呢&#xff1f; 2、解决方案 如果我们的数据访问层使用的是mybatis的话&#xff0c;那么我们可以通过…

【Linux】centos配置可用的yum源

在 CentOS 系统中配置可用的 YUM 源&#xff08;仓库&#xff09;是保持系统更新和软件包管理的重要步骤。下面是一些步骤和示例&#xff0c;帮助你配置可用的 YUM 源&#xff1a; 1. 备份当前 YUM 仓库配置 首先&#xff0c;备份你当前的 YUM 仓库配置文件&#xff0c;以防万…

【CentOS】搭建Radius服务器

目录 背景简介&#xff1a;Radius是什么&#xff1f;Radius服务器验证原理搭建Radius服务器环境信息yum在线安装配置FreeRADIUS相关文件clients.conf文件users文件重启服务 验证 参考链接 背景 在项目中需要用到Radius服务器作为数据库代理用户的外部验证服务器&#xff0c;做…

机器学习_特征工程

一、核心知识点&#xff1a;特征工程的核心概念与流程 1. 特征工程的定义与重要性 定义&#xff1a;通过数据预处理、特征构造、特征选择等方法&#xff0c;将原始数据转化为更适合机器学习模型输入的特征&#xff0c;提升模型性能。重要性&#xff1a; “数据和特征决定了机…

Elasticsearch Java High Level Client [7.17] 使用

es 的 HighLevelClient存在es源代码的引用&#xff0c;结合springboot使用时&#xff0c;会存在es版本的冲突&#xff0c;这里记录下解决冲突和使用方式&#xff08;es已经不建议使用这个了&#xff09;。 注意es服务端的版本需要与client的版本对齐&#xff0c;否则返回数据可…

rtsp在网页上显示(webrtc-stream)

一&#xff1a;windos 平台 1&#xff1a;下载已经编译好的windos平台程序 Releases mpromonet/webrtc-streamer (github.com) or 【免费】webrtc-streamerv0.8.6一款werbrtc服务器&#xff08;windos版本&#xff09;&#xff0c;可以直接将rtsp流拉到网页上显示资源-CSDN文…

【AI大模型智能应用】Deepseek生成测试用例

在软件开发过程中&#xff0c;测试用例的设计和编写是确保软件质量的关键。 然而&#xff0c;软件系统的复杂性不断增加&#xff0c;手动编写测试用例的工作量变得异常庞大&#xff0c;且容易出错。 DeepSeek基于人工智能和机器学习&#xff0c;它能够依据软件的需求和设计文…

如何在vscode中编译linux中的c++文件

方式一 在终端打开进行连接编译 指令含义&#xff1a;将 muduo_server.cpp 源文件编译成一个可执行文件 server&#xff0c;并且在链接过程中使用 muduo_net、muduo_base 库以及 pthread 库 方式二 在vscode中修改配置文件 按F1打开配置文件搜索栏&#xff0c;输入C/C 打开…

基于Flink SQL的实时指标多维分析模型

数据流程介绍 1.创建源表kafka接入消息队列数据&#xff0c;定义字段映射规则&#xff1b; 2.创建目标表es_sink配置Elasticsearch输出&#xff1b; 3.通过多级视图&#xff08;tmp→tmp_dedup→tmp1/tmp2→tmp3→tmp_groupby&#xff09;实现数据清洗、去重、状态计算&#x…

【vscode-01】vscode不同项目不同语言扩展插件隔离方案

vscode不同项目不同语言扩展插件隔离方案 1. 背景2. vscode 扩展插件隔离方案2.1 code-profile 配置文件2.2 配合extensions.json 1. 背景 最近打开vscode 发现越来越卡&#xff0c;这是一个轻量级代码编辑器&#xff0c;怎么会如此占用内存呢&#xff1f; 我使用了‘code --l…

《基于大数据的营养果蔬推荐系统的设计与实现》开题报告

目录 一、选题的理论意义现实意义及应用价值 &#xff08;一&#xff09;理论意义 &#xff08;二&#xff09;现实意义 1.用户价值提升 2.效率提升 3.经济效益提升 &#xff08;三&#xff09;应用价值 1.提升用户健康水平 2.优化购物体验 3.支持健康决策 4.促进农业…