在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(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ì)想到 JavaPython、Golang ...因?yàn)樗鼈兊闹髁?Web 框架有很多,Java 有非常知名的 Spring 全家桶,Python 有大而全的 Django、小而精的 Flask、高性能的 Tornado,Golang 也有快速靈活的 Gin、Echo 等框架。

相比之下,C/C++ 陣營(yíng)則遜色不少。之前,我曾寫過(guò)一篇《C++ Web(HTTP)開(kāi)發(fā) 10 大利器》,其中介紹了一些 C/C++ Web 框架。有一個(gè)名為Oat++的很不錯(cuò),輕量、跨平臺(tá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)有任何依賴性,可以很容易地移植到各種支持的平臺(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依賴
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();

//銷毀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)容及配圖由入駐作者撰寫或者入駐合作網(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

    文章

    1266

    瀏覽量

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

    關(guān)注

    22

    文章

    2113

    瀏覽量

    73742

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    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

    為了學(xué)習(xí)內(nèi)核開(kāi)發(fā),大佬手搓了個(gè)輕量級(jí)操作系統(tǒng)YiYiYa OS

    /kernel。 在移植適配的時(shí)候基本上和這些模塊打交道比較多,同時(shí)單獨(dú)個(gè)庫(kù)可以提高內(nèi)核代碼復(fù)用性,內(nèi)核有專門的內(nèi)核庫(kù),以便增加代碼安全,減少出錯(cuò)。 01 支持荔枝派系列開(kāi)發(fā)板,全志V3s,F(xiàn)1
    發(fā)表于 08-30 14:57

    國(guó)產(chǎn)芯上運(yùn)行TinyMaxi輕量級(jí)的神經(jīng)網(wǎng)絡(luò)推理庫(kù)-米爾基于芯馳D9國(guó)產(chǎn)商顯板

    本篇測(cè)評(píng)由優(yōu)秀測(cè)評(píng)者“短笛君”提供。本文將介紹基于米爾電子MYD-YD9360商顯板(米爾基于芯馳D9360國(guó)產(chǎn)開(kāi)發(fā)板)的TinyMaxi輕量級(jí)的神經(jīng)網(wǎng)絡(luò)推理庫(kù)方案測(cè)試。 算力測(cè)試TinyMaix
    發(fā)表于 08-09 18:26

    基于Openharmony輕量級(jí)操作系統(tǒng)的分布式數(shù)據(jù)管理開(kāi)發(fā)案例

    實(shí)驗(yàn)內(nèi)容本例程演示如何在小凌派-RK2206開(kāi)發(fā)板上使用OpenHarmony輕量級(jí)操作系統(tǒng)進(jìn)行KvStore(即分布式數(shù)據(jù)管理)數(shù)據(jù)讀寫。例程:(1)創(chuàng)建兩個(gè)線程,
    的頭像 發(fā)表于 08-07 08:23 ?1010次閱讀
    基于Openharmony<b class='flag-5'>輕量級(jí)</b>操作系統(tǒng)的分布式數(shù)據(jù)管理<b class='flag-5'>開(kāi)發(fā)</b>案例

    鴻蒙語(yǔ)言基礎(chǔ)類庫(kù):ohos.data.storage 輕量級(jí)存儲(chǔ)

    輕量級(jí)存儲(chǔ)為應(yīng)用提供key-value鍵值型的文件數(shù)據(jù)處理能力,支持應(yīng)用對(duì)數(shù)據(jù)進(jìn)行輕量級(jí)存儲(chǔ)及查詢。數(shù)據(jù)存儲(chǔ)形式為鍵值對(duì),鍵的類型為字符串型,值的存儲(chǔ)數(shù)據(jù)類型包括數(shù)字型、字符型、布爾型。
    的頭像 發(fā)表于 07-15 18:21 ?1007次閱讀

    深度詳解嵌入式系統(tǒng)專用輕量級(jí)框架設(shè)計(jì)

    MR 框架是專為嵌入式系統(tǒng)設(shè)計(jì)的輕量級(jí)框架。充分考慮了嵌入式系統(tǒng)在資源和性能方面的需求。通過(guò)提供標(biāo)準(zhǔn)化的設(shè)備管理接口,極大簡(jiǎn)化了嵌入式應(yīng)用開(kāi)發(fā)的難度,幫助開(kāi)發(fā)者快速構(gòu)建嵌入式應(yīng)用程序。
    發(fā)表于 04-27 02:32 ?1019次閱讀
    深度詳解嵌入式系統(tǒng)專用<b class='flag-5'>輕量級(jí)</b>框架設(shè)計(jì)

    未來(lái)輕量級(jí)深度學(xué)習(xí)技術(shù)探索

    除了輕量級(jí)架構(gòu)設(shè)計(jì)外,作者提到了可以應(yīng)用于壓縮給定架構(gòu)的各種高效算法。例如,量化方法 旨在減少數(shù)據(jù)所需的存儲(chǔ)空間,通常是通過(guò)用8位或16位數(shù)字代替32位浮點(diǎn)數(shù),甚至使用二進(jìn)制值表示數(shù)據(jù)。
    發(fā)表于 04-23 15:54 ?424次閱讀
    未來(lái)<b class='flag-5'>輕量級(jí)</b>深度學(xué)習(xí)技術(shù)探索

    鴻蒙OS開(kāi)發(fā)實(shí)例:【Native C++

    使用DevEco Studio創(chuàng)建個(gè)Native C++應(yīng)用。應(yīng)用采用Native C++模板,實(shí)現(xiàn)使用NAPI調(diào)用C標(biāo)準(zhǔn)庫(kù)的功能。使用
    的頭像 發(fā)表于 04-14 11:43 ?2703次閱讀
    鴻蒙OS<b class='flag-5'>開(kāi)發(fā)</b>實(shí)例:【Native <b class='flag-5'>C++</b>】

    百度智能云推出全新輕量級(jí)大模型

    在近日舉辦的百度智能云千帆產(chǎn)品發(fā)布會(huì)上,三款全新的輕量級(jí)大模型——ERNIE Speed、ERNIE Lite以及ERNIE Tiny,引起了業(yè)界的廣泛關(guān)注。相較于傳統(tǒng)的千億級(jí)別參數(shù)大模型,這些輕量級(jí)大模型在參數(shù)量上有了顯著減少,為客戶提供了更加靈活和經(jīng)濟(jì)高效的解決方案。
    的頭像 發(fā)表于 03-22 10:28 ?688次閱讀

    嵌入式開(kāi)發(fā)者的常用終端工具概覽

    PUTTY 是種流行的終端仿真器,是個(gè)開(kāi)源、**輕量級(jí)且免費(fèi)** 的 SSH 客戶端。它是由Simon Tatham 用C語(yǔ)言
    的頭像 發(fā)表于 02-21 13:54 ?988次閱讀
    嵌入式<b class='flag-5'>開(kāi)發(fā)</b>者的常用終端工具概覽

    c語(yǔ)言,c++,java,python區(qū)別

    C語(yǔ)言、C++、Java和Python是四種常見(jiàn)的編程語(yǔ)言,各有優(yōu)點(diǎn)和特點(diǎn)。 C語(yǔ)言: C語(yǔ)言是種面向過(guò)程的編程語(yǔ)言。它具有底層的特性,能
    的頭像 發(fā)表于 02-05 14:11 ?2507次閱讀

    vb語(yǔ)言和c++語(yǔ)言的區(qū)別

    Microsoft開(kāi)發(fā)種面向?qū)ο蟮氖录?qū)動(dòng)編程語(yǔ)言。它的設(shè)計(jì)目標(biāo)是簡(jiǎn)化編程過(guò)程,讓初學(xué)者也能快速上手。與之相比,C++語(yǔ)言是種通用的、面向?qū)ο蟮木幊陶Z(yǔ)言,其設(shè)計(jì)目標(biāo)是提供
    的頭像 發(fā)表于 02-01 10:20 ?2418次閱讀

    C++在Linux內(nèi)核開(kāi)發(fā)中從爭(zhēng)議到成熟

    Linux 內(nèi)核郵件列表中一篇已有六年歷史的老帖近日再次引發(fā)激烈討論 —— 主題是建議將 Linux 內(nèi)核的開(kāi)發(fā)語(yǔ)言從 C 轉(zhuǎn)換為更現(xiàn)代的 C++
    的頭像 發(fā)表于 01-31 14:11 ?655次閱讀
    <b class='flag-5'>C++</b>在Linux內(nèi)核<b class='flag-5'>開(kāi)發(fā)</b>中從爭(zhēng)議到成熟

    web前端開(kāi)發(fā)和前端開(kāi)發(fā)的區(qū)別

    、CSS和JavaScript等技術(shù)來(lái)構(gòu)建用戶界面,實(shí)現(xiàn)用戶與應(yīng)用程序的交互。Web前端開(kāi)發(fā)包括網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)頁(yè)編碼、前端框架使用以及優(yōu)化頁(yè)面性能等任務(wù)。 前端開(kāi)發(fā)
    的頭像 發(fā)表于 01-18 09:54 ?3614次閱讀
    主站蜘蛛池模板: 色站视频| 久久午夜网| 久久中文字幕一区二区| 亚洲综合国产一区二区三区| 777黄色片| 白嫩美女一级高清毛片免费看| www.亚洲黄色| 97伊人| 国产网站免费视频| 欧美日韩高清性色生活片| 欧美在线高清视频| 色婷婷欧美| 日本xxxx色视频在线观看免 | 免费国产黄网站在线观看视频| 午夜伦理片在线观看| 天堂福利视频| 伊人精品视频在线| 性欧美xxxx视频| 日本亚洲精品色婷婷在线影院| 日韩一区二区三区免费| 看真人一一级毛片| se在线播放| 天天操夜夜拍| 99福利| 黄网站色在线视频免费观看| 性欧美黑人巨大videos| 欧美日韩高清一本大道免费| 国产日韩精品一区二区三区| 久久本道综合色狠狠五月| 久久日精品| 毛片毛片免费看| 欧美黄色免费网址| 国产高清免费在线| 天天色综合社区| 亚洲另类电击调教在线观看 | 天天插天天操| 五月天丁香激情| 一级做a爱 一区| 噜噜噜噜影院| 天堂资源在线官网资源| 在线免费视频一区二区|