Qat++,轻量级开源C++ Web框架

目录

一.简介

二.编译Oat++

1.环境

2.编译/安装

三.试用

1.创建一个 CMake 项目

2.自定义客户端请求响应

3.将请求Router到服务器

4.用浏览器验证


一.简介

Oat++是一个面向C++的现代Web框架
官网地址:https://oatpp.io
github地址:https://github.com/oatpp/oatpp
Oat++具有如下特性:
●随处运行
Oat++没有任何依赖性,可以很容易地移植到各种支持的平台上(Linux、BSD、MacOS、OpenWRT、Windows)。
●构建健壮的api
使用Oat++的Simple-API,很容易就能构建出灵活而健壮的High-Level API。
●高并发
使用Oat++的Async-API,可以在单个服务器上处理超过500万个并发连接。
●访问数据库
Oat++ ORM提供了一种简单而统一的方式来访问数据库。
●保持代码一致
Oat++在整个代码中依靠对象映射(Object-Mapping)来确保API和数据模型的一致性。详见:更多
●生成API文档
使用Swagger-UI和OpenAPI 3.0.0自动记录endpoints。详见:更多
Qat++可以应用于多种不同的领域,比如构建运行在嵌入式设备的REST API,构建微服务和高负载的云应用程序。目前主要的应用案例是IOT和Robotics。
那么在实践中该如何选择Oat++的API类型呢?
优先选择Simple API,因为它开发得更加完善。如果是并发任务,就可以考虑使用Async API了,Async API通常用于以下几种场景:
●文件上传、下载
●向大量客户端推流
●Websocket聊天服务器
说起Web开发,大多数人会想到 Java、Python、Golang ... ,因为用它们实现的主流Web框架有很多:Java有非常知名的Spring全家桶,Python有大而全的Django、小而精的Flask、高性能的Tornado,Golang也有快速灵活的Gin、Echo等框架。
不过现在做C/C++开发的同学可以收回羡慕的眼神啦,Oat++作为C/C++ Web框架的后起之秀,还是非常值得研究的。

二.编译Oat++

这里以Windows为例,其他平台可参考官网。

1.环境

Window 10
Visual Studio 2017(官网测试用的就是这个版本)
CMake 3.25.1(推荐用最新版)

2.编译/安装

以管理员权限打开“VS 2017的开发人员命令提示符”窗口
否则安装的时候会报如下错误:

git clone https://github.com/oatpp/oatpp.git
cd oatpp
MD build
cd build
cmake ..
cmake --build . --target INSTALL

常用CMake参数表

参数默认值说明
CMAKE_BUILD_TYPEDebug编译类型
BUILD_SHARED_LIBSOFF默认值为OFF,此时 Oat++ 被编译Wie静态库.
OATPP_BUILD_TESTSON如果设置为OFF,表示不编译tests
OATPP_DISABLE_ENV_OBJECT_COUNTERSOFF如果设置为ON, 不统计oatpp对象(不检测内存泄漏),可以提升性能
注意: 不要用OFF去编译或运行 tests, 因为tests不检测内存泄漏.
OATPP_DISABLE_POOL_ALLOCATIONSOFF如果设置为ON,不使用 oatpp memory-pools.
OATPP_COMPAT_BUILD_NO_THREAD_LOCALOFF编译时禁用thread_local特性,详见 #81.

 几分钟就能编译安装完成,无报错。安装路径是:C:/Program Files (x86)/oatpp/lib/oatpp-1.3.0/oatpp
下图是执行cmake ..时的打印信息:

三.试用

1.创建一个 CMake 项目

CMakeLists.txt 配置如下:

cmake_minimum_required(VERSION 3.1)
project(HelloWorld)
 
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp handler.h)
 
# 查找 oatpp 依赖
find_package(oatpp REQUIRED)
 
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
 
# 将目标文件与库文件进行链接
target_link_libraries(${PROJECT_NAME} oatpp::oatpp)

2.自定义客户端请求响应

handler.h

#ifndef HANDLER_H
#define HANDLER_H
 
#include "oatpp/web/server/HttpRequestHandler.hpp"
 
#define O_UNUSED(x) (void)x;
 
// 自定义请求处理程序
class Handler : public oatpp::web::server::HttpRequestHandler
{
public:
    // 处理传入的请求,并返回响应
    std::shared_ptr<OutgoingResponse> handle(const std::shared_ptr<IncomingRequest>& request) override {
        O_UNUSED(request);
 
        return ResponseFactory::createResponse(Status::CODE_200, "Hello, World!");
    }
};
 
#endif // HANDLER_H

3.将请求Router到服务器

main.cpp

#include "oatpp/web/server/HttpConnectionHandler.hpp"
#include "oatpp/network/tcp/server/ConnectionProvider.hpp"
#include "oatpp/network/Server.hpp"
#include "handler.h"
 
void run()
{
    // 为 HTTP 请求创建路由器
    auto router = oatpp::web::server::HttpRouter::createShared();
 
    // 路由 GET - "/HelloWorld" 请求到处理程序
    router->route("GET", "/HelloWorld", std::make_shared<Handler>());
 
    // 创建 HTTP 连接处理程序
    auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared(router);
 
    // 创建 TCP 连接提供者
    auto connectionProvider = oatpp::network::tcp::server::ConnectionProvider::createShared({"localhost", 8000, oatpp::network::Address::IP_4});
 
    // 创建服务器,它接受提供的 TCP 连接并将其传递给 HTTP 连接处理程序
    oatpp::network::Server server(connectionProvider, connectionHandler);
 
    // 打印服务器端口
    OATPP_LOGI("MyApp", "Server running on port %s", connectionProvider->getProperty("port").getData());
 
    // 运行服务器
    server.run();
}
 
int main()
{
    // 初始化 oatpp 环境
    oatpp::base::Environment::init();
 
    // 运行应用
    run();
 
    // 销毁 oatpp 环境
    oatpp::base::Environment::destroy();
 
    return 0;
}

4.用浏览器验证

运行上面的服务器程序

在浏览器中访问http://localhost:8000/HelloWorld,就会显示“Hello,World!”


参考链接:https://waleon.blog.csdn.net/article/details/120376280
原文链接:Qat++,轻量级开源C++ Web框架-CSDN博客

  • 120
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 150
    评论
OpenSSL QAT是指OpenSSL与英特尔快速加密技术(Intel QuickAssist Technology)的结合。通过将OpenSSL与QAT驱动程序结合使用,可以加速SSL/TLS协议的性能。在配置OpenSSL QAT时,通常需要设置一些参数。 引用中提到了一个设置OpenSSL QAT安装目录的参数`--with-openssl_install_dir=/root/openssl-1.1.1b/.openssl`。这个参数指定了OpenSSL的安装目录,也就是QAT驱动程序的安装路径。 引用中提到了一个设置OpenSSL配置文件路径的参数`export OPENSSL_CONF=/root/openssl-1.1.1b/.openssl/ssl/openssl.cnf`。这个参数指定了OpenSSL的配置文件路径,其中包含了QAT驱动程序的配置信息。 通过配置好这些参数,可以使OpenSSL能够正确使用QAT驱动程序,从而提高SSL/TLS协议的性能。 除了配置参数,还可以通过对比不同的实现方式来评估OpenSSL QAT的性能。引用提到了针对TLS1.2 RSA卸载的例子,比较了普通的OpenSSL、同步QAT OpenSSL和异步QAT OpenSSL的每秒连接数。这个比较可以帮助我们了解QAT加速对性能的影响。 总之,OpenSSL QAT是通过将OpenSSL与英特尔快速加密技术结合使用,来提高SSL/TLS协议的性能的。配置OpenSSL QAT需要设置安装目录和配置文件路径,并可以通过比较不同实现方式来评估性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [nginx 异步openssl Intel QAT硬件加速方案](https://blog.csdn.net/realmardrid/article/details/117456917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 150
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草上爬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值