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

news2025/3/25 20:08:01

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.coloradmin.cn/o/2321516.html

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

相关文章

RISC-V AIA学习2---IMSIC

我在学习文档这章时,对技术术语不太理解,所以用比较恰当的比喻来让自己更好的理解。 比较通俗的理解: 将 RISC-V 系统比作一个工厂: hart → 工厂的一条独立生产线IMSIC → 每条生产线配备的「订单接收员」MSI 中断 → 客户通过…

2024年MathorCup数学建模B题甲骨文智能识别中原始拓片单字自动分割与识别研究解题全过程文档加程序

2024年第十四届MathorCup高校数学建模挑战赛 B题 甲骨文智能识别中原始拓片单字自动分割与识别研究 原题再现: 甲骨文是我国目前已知的最早成熟的文字系统,它是一种刻在龟甲或兽骨上的古老文字。甲骨文具有极其重要的研究价值,不仅对中国文…

Python----计算机视觉处理(Opencv:霍夫变换)

一、霍夫变换 霍夫变换是图像处理中的一种技术,主要用于检测图像中的直线、圆或其他形状。其基本思想就是将图像空间中的点映射到参数空间中,通过在参数空间中寻找累计最大值来实现对特定形状的检测。 二、 霍夫直线变换 那么对于一个二值化后的图形来说…

多语言生成语言模型的少样本学习

摘要 大规模生成语言模型,如GPT-3,是极具竞争力的少样本学习模型。尽管这些模型能够共同表示多种语言,但其训练数据以英语为主,这可能限制了它们的跨语言泛化能力。在本研究中,我们在一个涵盖多种语言的语料库上训练了…

QT开发(4)--各种方式实现HelloWorld

目录 1. 编辑框实现 2. 按钮实现 前面已经写过通过标签实现的了,所以这里就不写了,通过这两个例子,其他的也是同理 1. 编辑框实现 编辑框分为单行编辑框(QLineEdit)双行编辑框(QTextEdit)&am…

Flutter 输入组件 Radio 详解

1. 引言 在 Flutter 中,Radio 是用于单选的按钮组件,适用于需要用户在多个选项中选择一个的场景,如表单、设置选项等。Radio 通过 value 和 groupValue 进行状态管理,并结合 onChanged 监听选中状态的变化。本文将介绍 Radio 的基…

3.23学习总结

完成了组合Ⅲ,和电话号码的字母组合两道算法题,都是和回溯有关的,很类似。 学习了static的关键字和继承有关知识

力扣刷题-热题100题-第23题(c++、python)

206. 反转链表 - 力扣(LeetCode)https://leetcode.cn/problems/reverse-linked-list/solutions/551596/fan-zhuan-lian-biao-by-leetcode-solution-d1k2/?envTypestudy-plan-v2&envIdtop-100-liked 常规法 记录前一个指针,当前指针&am…

vue3 项目的最新eslint9 + prettier 配置

注意:eslint目前升级到9版本了 在 ESLint v9 中,配置文件已经从 .eslintrc 迁移到了 eslint.config.js 配置的方式和之前的方式不太一样了!!!! 详见自己的语雀文档:5、新版eslint9prettier 配…

SAP GUI Script for C# SAP脚本开发快速指南与默认主题问题

SAP GUI Script for C# 快速指南 SAP 脚本的快速使用与设置. 解决使用SAP脚本执行后,默认打开的SAP是经典主题的问题 1. 解决默认主题问题 如果您使用的是SAP GUI 740,并遇到无法打开对话框的问题,请先将主题设置为经典主题(Classic Theme…

FFmpeg + ‌Qt‌ 简单视频播放器代码

一个基于 ‌FFmpeg 4.x‌ 和 ‌Qt‌ 的简单视频播放器代码示例,实现视频解码和渲染到 Qt 窗口的功能。 1)ffmpeg库界面,视频解码支持软解和硬解方式。 2)QImage/QPixmap显示视频图片。 ‌1. Qt 项目配置(.pro 文件&…

Unity跨平台构建快速回顾

知识点来源:人间自有韬哥在,豆包 目录 一、发布应用程序1. 修改发布必备设置1.1 打开设置面板1.2 修改公司名、游戏项目名、版本号和默认图标1.3 修改 Package Name 和 Minimum API Level 2. 发布应用程序2.1 配置 Build Settings2.2 选择发布选项2.3 构…

【嵌入式学习2】内存管理

## C语言编译过程 预处理:宏定义展开、头文件展开、条件编译,这里并不会检查语法,将#include #define这些头文件内容插入到源码中 gcc -E main.c -o main.i 编译:检查语法,将预处理后文件编译生成汇编文件&#xff…

TDengine又新增一可视化工具 Perspective

概述 Perspective 是一款开源且强大的数据可视化库,由 Prospective.co 开发,运用 WebAssembly 和 Web Workers 技术,在 Web 应用中实现交互式实时数据分析,能在浏览器端提供高性能可视化能力。借助它,开发者可构建实时…

【Linux文件IO】Linux中标准IO的API的描述和基本用法

Linux中标准IO的API的描述和基本用法 一、标准IO相关API1、文件的打开和关闭示例代码: 2、文件的读写示例代码:用标准IO(fread、fwrite)实现文件拷贝(任何文件均可拷贝) 3、文件偏移设置示例代码: 4、fgets fputs fget…

Ant Design Vue Select 选择器 全选 功能

Vue.js的组件库Ant Design Vue Select 选择器没有全选功能&#xff0c;如下图所示&#xff1a; 在项目中&#xff0c;我们自己实现了全选和清空功能&#xff0c;如下所示&#xff1a; 代码如下所示&#xff1a; <!--* 参数配置 - 风力发电 - 曲线图 * 猴王软件学院 - 大强 …

系统与网络安全------网络应用基础(1)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 TCP/IP协议及配置 概述 TCP/IP协议族 计算机之间进行通信时必须共同遵循的一种通信规定 最广泛使用的通信协议的集合 包括大量Internet应用中的标准协议 支持跨网络架构、跨操作系统平台的数据通信 主机…

JDK 24 发布,新特性解读!

一、版本演进与技术格局新动向 北京时间3月20日&#xff0c;Oracle正式发布Java SE 24。作为继Java 21之后的第三个非LTS版本&#xff0c;其技术革新力度远超预期——共集成24项JEP提案&#xff0c;相当于Java 22&#xff08;12项&#xff09;与Java 23&#xff08;12项&#…

k8s中service概述(二)NodePort

NodePort 是 Kubernetes 中一种用于对外暴露服务的 Service 类型。它通过在集群的每个节点上开放一个静态端口&#xff08;NodePort&#xff09;&#xff0c;使得外部用户可以通过节点的 IP 地址和该端口访问集群内部的服务。以下是关于 NodePort Service 的详细说明&#xff1…

Oracle归档配置及检查

配置归档位置到 USE_DB_RECOVERY_FILE_DEST&#xff0c;并设置存储大小 startup mount; !mkdir /db/archivelog ALTER SYSTEM SET db_recovery_file_dest_size100G SCOPEBOTH; ALTER SYSTEM SET db_recovery_file_dest/db/archivelog SCOPEBOTH; ALTER SYSTEM SET log_archive…