chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++ Web開(kāi)發(fā)中一個(gè)輕量級(jí)、高性能的大利器

Linux愛(ài)好者 ? 來(lái)源:高效程序員 ? 作者:Waleon ? 2021-10-29 10:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

說(shuō)起 Web 開(kāi)發(fā),大多數(shù)人會(huì)想到 Java、Python、Golang ...因?yàn)樗鼈兊闹髁?Web 框架有很多,Java 有非常知名的 Spring 全家桶,Python 有大而全的 Django、小而精的 Flask、高性能的 Tornado,Golang 也有快速靈活的 Gin、Echo 等框架。

相比之下,C/C++ 陣營(yíng)則遜色不少。之前,我曾寫(xiě)過(guò)一篇《C++ Web(HTTP)開(kāi)發(fā) 10 大利器》,其中介紹了一些 C/C++ Web 框架。有一個(gè)名為Oat++的很不錯(cuò),輕量、跨平臺(tái)、高性能、完全零依賴(lài),非常值得學(xué)習(xí)!

Oat++ 介紹

要深入了解Oat++,離不開(kāi)這幾個(gè)網(wǎng)址:

  • Oat++ 主頁(yè):https://oatpp.io

  • Oat++ 文檔:https://oatpp.io/docs/start

  • GitHub 地址:https://github.com/oatpp/oatpp

其主要特性有:

  • 隨處運(yùn)行

    Oat++ 沒(méi)有任何依賴(lài)性,可以很容易地移植到各種支持的平臺(tái)上(Linux、MacOS、Windows)。
  • 構(gòu)建健壯的api

    使用 Oat++ Simple-API,構(gòu)建靈活而健壯的 API 既簡(jiǎn)單又有趣。
  • 處理 500 萬(wàn)個(gè)連接

    使用 Oat++ Async-API,可以在單個(gè)服務(wù)器上處理超過(guò) 500 萬(wàn)個(gè)并發(fā)連接。
  • 訪問(wèn)數(shù)據(jù)庫(kù)

    Oat++ ORM 提供了一種簡(jiǎn)單而統(tǒng)一的方式來(lái)訪問(wèn)數(shù)據(jù)庫(kù)
  • 保持代碼一致

    Oat++ 在整個(gè)代碼庫(kù)中依靠對(duì)象映射來(lái)確保 API 和數(shù)據(jù)模型的一致性
  • 生成 API 文檔

    使用 Swagger-UI 和 OpenAPI 3.0.0 自動(dòng)記錄 endpoints

最吸引我的是 HTTP/HTTPS、文件上傳/下載、以及強(qiáng)大的 Swagger API 功能。
2

編譯 Oat++

進(jìn)入 Oat++ 的 GitHub 頁(yè)面,你會(huì)發(fā)現(xiàn) Star 多達(dá) 4K+,貢獻(xiàn)者有 30 多個(gè),且最近幾天還有代碼提交,所以不用擔(dān)心熱度和活躍度,這個(gè)框架一直有人在積極地維護(hù)。

環(huán)境要求

Oat++ 的編譯過(guò)程很簡(jiǎn)單,只需要有基本的開(kāi)發(fā)環(huán)境就行了:

  • Git

  • 編譯器支持的 C++ 版本 >= 11

  • Make

  • CMake 版本 >= 3.1

如果沒(méi)有的話,按照下述步驟安裝,以 Ubuntu 為例:

$sudoaptinstallgit
$sudoaptinstallcmake
$sudoaptinstallbuild-essential

編譯安裝

下載 Oat++ 源碼:

$gitclonehttps://github.com/oatpp/oatpp.git

隨后,執(zhí)行編譯安裝四部曲:

$cdoatpp/
$mkdirbuild&&cdbuild
$cmake..
$sudomake&&sudomakeinstall

3

示例程序

為了演示 Oat++,我們從最簡(jiǎn)單的“Hello, World!”開(kāi)始!

創(chuàng)建一個(gè) CMake 項(xiàng)目,CMakeLists.txt 配置如下:

cmake_minimum_required(VERSION3.1)
project(helloworld)

set(CMAKE_CXX_STANDARD11)
set(SOURCE_FILESmain.cpphandler.h)

#查找oatpp依賴(lài)
find_package(oatppREQUIRED)

add_executable(${PROJECT_NAME}${SOURCE_FILES})

#將目標(biāo)文件與庫(kù)文件進(jìn)行鏈接
target_link_libraries(${PROJECT_NAME}oatpp::oatpp)

默認(rèn)情況下,Oat++ 會(huì)對(duì)客戶端請(qǐng)求響應(yīng) 404,除此之外什么都不做。

若要添加自定義響應(yīng),必須實(shí)現(xiàn) HttpRequestHandler:

//handler.h
#ifndefHANDLER_H
#defineHANDLER_H

#include"oatpp/web/server/HttpRequestHandler.hpp"

#defineO_UNUSED(x)(void)x;

//自定義請(qǐng)求處理程序
classHandler:publicoatpp::HttpRequestHandler
{
public:
//處理傳入的請(qǐng)求,并返回響應(yīng)
std::shared_ptrhandle(conststd::shared_ptr&request)override{
O_UNUSED(request);

returnResponseFactory::CODE_200,"Hello,World!");
}
};

#endif//HANDLER_H
有了處理程序之后,需要通過(guò) Router 將請(qǐng)求路由到它:
//main.cpp
#include"oatpp/web/server/HttpConnectionHandler.hpp"
#include"oatpp/network/tcp/server/ConnectionProvider.hpp"
#include"oatpp/network/Server.hpp"
#include"handler.h"

voidrun()
{
//為HTTP請(qǐng)求創(chuàng)建路由器
autorouter=oatpp::createShared();

//路由GET-"/hello"請(qǐng)求到處理程序
router->route("GET","/hello",std::make_shared());

//創(chuàng)建HTTP連接處理程序
autoconnectionHandler=oatpp::createShared(router);

//創(chuàng)建TCP連接提供者
autoconnectionProvider=oatpp::createShared({"localhost",8000,oatpp::IP_4});

//創(chuàng)建服務(wù)器,它接受提供的TCP連接并將其傳遞給HTTP連接處理程序
oatpp::Serverserver(connectionProvider,connectionHandler);

//打印服務(wù)器端口
OATPP_LOGI("MyApp","Serverrunningonport%s",connectionProvider->getProperty("port").getData());

//運(yùn)行服務(wù)器
server.run();
}

intmain()
{
//初始化oatpp環(huán)境
oatpp::init();

//運(yùn)行應(yīng)用
run();

//銷(xiāo)毀oatpp環(huán)境
oatpp::destroy();

return0;
}

4

請(qǐng)求驗(yàn)證

運(yùn)行程序,在瀏覽器中訪問(wèn)http://localhost:8000/hello,就會(huì)顯示“Hello, World!”信息了:

或者使用 curl 請(qǐng)求http://127.0.0.1:8000/hello,效果一樣:

$curlhttp://127.0.0.1:8000/hello
Hello,World!
責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1296

    瀏覽量

    73046
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2120

    瀏覽量

    76447

原文標(biāo)題:一個(gè)輕量級(jí)、高性能的 C++ Web 框架

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【CW32】uart_obj_fw 輕量級(jí)串口框架

    輕量級(jí)跨平臺(tái)串口通信框架,專(zhuān)為資源受限的嵌入式設(shè)備設(shè)計(jì)。單個(gè)對(duì)象RAM占用最小68字節(jié)左右(不算緩沖區(qū)),ROM占用1-2k字節(jié)左右,功能支持裁剪,資源占用小并不代表低性能,該庫(kù)參考了freeRTOS
    的頭像 發(fā)表于 09-29 18:02 ?7192次閱讀

    Crypto核心庫(kù):顛覆傳統(tǒng)的數(shù)據(jù)安全輕量級(jí)加密方案

    傳統(tǒng)加密方案常陷入“安全與性能”的二元悖論。Crypto核心庫(kù)打破這僵局,通過(guò)輕量級(jí)架構(gòu)與算法優(yōu)化,實(shí)現(xiàn)加密解密的雙向突破:在保障銀行級(jí)安全的同時(shí),將資源消耗壓縮至極致,讓數(shù)據(jù)安全“輕”裝上
    的頭像 發(fā)表于 08-04 14:44 ?449次閱讀
    Crypto核心庫(kù):顛覆傳統(tǒng)的數(shù)據(jù)安全<b class='flag-5'>輕量級(jí)</b>加密方案

    基于米爾瑞芯微RK3576開(kāi)發(fā)板部署運(yùn)行TinyMaix:超輕量級(jí)推理框架

    本文將介紹基于米爾電子MYD-LR3576開(kāi)發(fā)平臺(tái)部署超輕量級(jí)推理框架方案:TinyMaix 摘自優(yōu)秀創(chuàng)作者-短笛君 TinyMaix 是面向單片機(jī)的超輕量級(jí)的神經(jīng)網(wǎng)絡(luò)推理庫(kù),即 TinyML
    發(fā)表于 07-25 16:35

    如何在RK3576開(kāi)發(fā)板上運(yùn)行TinyMaix :超輕量級(jí)推理框架--基于米爾MYD-LR3576開(kāi)發(fā)

    本文將介紹基于米爾電子MYD-LR3576開(kāi)發(fā)平臺(tái)部署超輕量級(jí)推理框架方案:TinyMaix摘自優(yōu)秀創(chuàng)作者-短笛君TinyMaix是面向單片機(jī)的超輕量級(jí)的神經(jīng)網(wǎng)絡(luò)推理庫(kù),即TinyML推理庫(kù),可以
    的頭像 發(fā)表于 07-25 08:03 ?3851次閱讀
    如何在RK3576<b class='flag-5'>開(kāi)發(fā)</b>板上運(yùn)行TinyMaix :超<b class='flag-5'>輕量級(jí)</b>推理框架--基于米爾MYD-LR3576<b class='flag-5'>開(kāi)發(fā)</b>板

    Nginx和Apache的差異

    Nginx是個(gè) 輕量級(jí)/高性能 的反向代理Web服務(wù)器,用于 HTTP、HTTPS、SMTP、POP3 和IMAP 協(xié)議。
    的頭像 發(fā)表于 07-09 09:45 ?351次閱讀

    Nginx常見(jiàn)面試題總結(jié)

    Nginx是個(gè) 輕量級(jí)/高性能的反向代理Web服務(wù)器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 協(xié)議。
    的頭像 發(fā)表于 03-03 09:36 ?1368次閱讀
    Nginx常見(jiàn)面試題總結(jié)

    源代碼加密、源代碼防泄漏c/c++與git服務(wù)器開(kāi)發(fā)環(huán)境

    源代碼加密對(duì)于很多研發(fā)性單位來(lái)說(shuō)是至關(guān)重要的,當(dāng)然每家企業(yè)的業(yè)務(wù)需求不同所用的開(kāi)發(fā)環(huán)境及開(kāi)發(fā)語(yǔ)言也不盡相同,今天主要來(lái)講c++及git開(kāi)發(fā)
    的頭像 發(fā)表于 02-12 15:26 ?724次閱讀
    源代碼加密、源代碼防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>與git服務(wù)器<b class='flag-5'>開(kāi)發(fā)</b>環(huán)境

    熱門(mén)前端框架:引領(lǐng)現(xiàn)代 Web 開(kāi)發(fā)的潮流

    在當(dāng)今快速發(fā)展的前端開(kāi)發(fā)領(lǐng)域,熱門(mén)前端框架如 React、Vue 和 Angular 等,成為了開(kāi)發(fā)者構(gòu)建高效、高性能 Web 應(yīng)用的得力工具。它們各自具有獨(dú)特的特點(diǎn)和優(yōu)勢(shì),引領(lǐng)著現(xiàn)代
    的頭像 發(fā)表于 01-22 10:08 ?741次閱讀

    從Delphi、C++ Builder和Lazarus連接到Oracle數(shù)據(jù)庫(kù)

    從 Delphi、C++ Builder 和 Lazarus 連接到 Oracle 數(shù)據(jù)庫(kù) Oracle 數(shù)據(jù)訪問(wèn)組件 (ODAC) 是個(gè)組件庫(kù),它為 32 位和 64 位平臺(tái)提供從 Delphi
    的頭像 發(fā)表于 01-15 10:01 ?1167次閱讀

    Spire.XLS for C++組件說(shuō)明

    Spire.XLS for C++款專(zhuān)業(yè)的 C++ Excel 組件,可以用在各種 C++ 框架和應(yīng)用程序中。Spire.XLS for C+
    的頭像 發(fā)表于 01-14 09:40 ?1142次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說(shuō)明

    AKI跨語(yǔ)言調(diào)用庫(kù)神助攻C/C++代碼遷移至HarmonyOS NEXT

    /C++代碼快速遷移至HarmonyOS NEXT。憑借卓越的兼容性,AKI已成為廠商與開(kāi)發(fā)者打造鴻蒙原生應(yīng)用過(guò)程中廣泛使用的跨語(yǔ)言調(diào)用解決方案。 AKI是款專(zhuān)為鴻蒙原生開(kāi)發(fā)設(shè)計(jì)的
    發(fā)表于 01-02 17:08

    華為云 Flexus X 實(shí)例部署安裝 HivisionIDPhoto 個(gè)輕量級(jí)的 AI 證件照制作算法

    背景 最近有個(gè)開(kāi)源項(xiàng)目非?;?,就是 HivisionIDPhotos 個(gè)輕量級(jí)的 AI 證件照制作算法 github 倉(cāng)庫(kù) https:
    的頭像 發(fā)表于 12-25 17:08 ?1097次閱讀
    華為云 Flexus X 實(shí)例部署安裝 HivisionIDPhoto <b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>輕量級(jí)</b>的 AI 證件照制作算法

    HarmonyOS Web開(kāi)發(fā)性能優(yōu)化指導(dǎo)

    20ms收益。 | 低 | - | ArrayBuffer格式的數(shù)據(jù)傳輸。 | (二)預(yù)啟動(dòng)Web渲染進(jìn)程 原理介紹 此方案適用于Web頁(yè)面啟動(dòng)場(chǎng)景。開(kāi)發(fā)者需額外創(chuàng)建
    發(fā)表于 12-06 08:41

    AWTK-WEB 快速入門(mén)(1) - C 語(yǔ)言應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開(kāi)發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹下如何使用C語(yǔ)言開(kāi)發(fā)AWTK-
    的頭像 發(fā)表于 11-27 11:46 ?1003次閱讀
    AWTK-<b class='flag-5'>WEB</b> 快速入門(mén)(1) - <b class='flag-5'>C</b> 語(yǔ)言應(yīng)用程序

    如何使用高性能浮點(diǎn)TMS320C67x DSP立即開(kāi)始開(kāi)發(fā)

    電子發(fā)燒友網(wǎng)站提供《如何使用高性能浮點(diǎn)TMS320C67x DSP立即開(kāi)始開(kāi)發(fā).pdf》資料免費(fèi)下載
    發(fā)表于 10-17 09:35 ?0次下載
    如何使用<b class='flag-5'>高性能</b>浮點(diǎn)TMS320<b class='flag-5'>C</b>67x DSP立即開(kāi)始<b class='flag-5'>開(kāi)發(fā)</b>