国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++ Web開發中一個輕量級、高性能的大利器

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

掃碼添加小助手

加入工程師交流群

說起 Web 開發,大多數人會想到 JavaPython、Golang ...因為它們的主流 Web 框架有很多,Java 有非常知名的 Spring 全家桶,Python 有大而全的 Django、小而精的 Flask、高性能的 Tornado,Golang 也有快速靈活的 Gin、Echo 等框架。

相比之下,C/C++ 陣營則遜色不少。之前,我曾寫過一篇《C++ Web(HTTP)開發 10 大利器》,其中介紹了一些 C/C++ Web 框架。有一個名為Oat++的很不錯,輕量、跨平臺、高性能、完全零依賴,非常值得學習!

Oat++ 介紹

要深入了解Oat++離不開這幾個網址:

  • Oat++ 主頁:https://oatpp.io

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

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

其主要特性有:

  • 隨處運行

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

    使用 Oat++ Simple-API,構建靈活而健壯的 API 既簡單又有趣。
  • 處理 500 萬個連接

    使用 Oat++ Async-API,可以在單個服務器上處理超過 500 萬個并發連接。
  • 訪問數據庫

    Oat++ ORM 提供了一種簡單而統一的方式來訪問數據庫
  • 保持代碼一致

    Oat++ 在整個代碼庫中依靠對象映射來確保 API 和數據模型的一致性
  • 生成 API 文檔

    使用 Swagger-UI 和 OpenAPI 3.0.0 自動記錄 endpoints

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

編譯 Oat++

進入 Oat++ 的 GitHub 頁面,你會發現 Star 多達 4K+,貢獻者有 30 多個,且最近幾天還有代碼提交,所以不用擔心熱度和活躍度,這個框架一直有人在積極地維護。

環境要求

Oat++ 的編譯過程很簡單,只需要有基本的開發環境就行了:

  • Git

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

  • Make

  • CMake 版本 >= 3.1

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

$sudoaptinstallgit
$sudoaptinstallcmake
$sudoaptinstallbuild-essential

編譯安裝

下載 Oat++ 源碼:

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

隨后,執行編譯安裝四部曲:

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

3

示例程序

為了演示 Oat++,我們從最簡單的“Hello, World!”開始!

創建一個 CMake 項目,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})

#將目標文件與庫文件進行鏈接
target_link_libraries(${PROJECT_NAME}oatpp::oatpp)

默認情況下,Oat++ 會對客戶端請求響應 404,除此之外什么都不做。

若要添加自定義響應,必須實現 HttpRequestHandler:

//handler.h
#ifndefHANDLER_H
#defineHANDLER_H

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

#defineO_UNUSED(x)(void)x;

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

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

#endif//HANDLER_H
有了處理程序之后,需要通過 Router 將請求路由到它:
//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請求創建路由器
autorouter=oatpp::createShared();

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

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

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

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

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

//運行服務器
server.run();
}

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

//運行應用
run();

//銷毀oatpp環境
oatpp::destroy();

return0;
}

4

請求驗證

運行程序,在瀏覽器中訪問http://localhost:8000/hello,就會顯示“Hello, World!”信息了:

或者使用 curl 請求http://127.0.0.1:8000/hello,效果一樣:

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1304

    瀏覽量

    74451
  • C++
    C++
    +關注

    關注

    22

    文章

    2123

    瀏覽量

    77110

原文標題:一個輕量級、高性能的 C++ Web 框架

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    高性能電源利器:LTC7050 - 1深度解析

    高性能電源利器:LTC7050 - 1深度解析 引言 在現代電子設備不斷向高性能、小型化發展的今天,電源管理模塊的性能與設計變得尤為關鍵。其中,LTC7050 - 1作為
    的頭像 發表于 02-03 13:55 ?159次閱讀

    高性能數字X射線系統利器:AD8488模擬前端芯片解析

    高性能數字X射線系統利器:AD8488模擬前端芯片解析 在高性能數字X射線系統的設計中,模擬前端(AFE)芯片的選擇至關重要。今天我們就來深入了解款由ADI公司推出的128通道數字X
    的頭像 發表于 01-14 11:15 ?278次閱讀

    RC38208A評估板:高性能時鐘綜合與抖動衰減評估利器

    ,RC38208A - EVK)為工程師們提供了評估高性能綜合器和抖動衰減器應用的理想平臺。今天,我們就來深入了解下這個評估板。 文件下載: Renesas Electronic
    的頭像 發表于 12-26 18:10 ?1082次閱讀

    C語言與C++的區別及聯系

    缺點:性能比面向過程低。 二、具體語言上的區別 1、關鍵字的不同 C語言有32關鍵字;C++有63關鍵字。 2、后綴名不同
    發表于 12-24 07:23

    輕量級參數的管理框架(C語言)

    如何統管理軟件中的各類系統數據參數。 該參數管理并不涉及數據是如何儲存的。因為有些系統數據并不需要儲存起來,只需要進行管理而已。 介紹 參數管理 通過將已定義變量(全局變量)添加到參數表進行參數
    發表于 12-16 06:24

    CC++之間的聯系

    ,后來才逐漸演變為種成熟的面向對象編程語言。 總之,C語言和C++雖然有很多共同之處,但在編程范式、安全性、抽象層次等方面存在顯著差異。開發者可以根據項目需求選擇合適的語言,
    發表于 12-11 06:51

    【CW32】uart_obj_fw 輕量級串口框架

    輕量級跨平臺串口通信框架,專為資源受限的嵌入式設備設計。單個對象RAM占用最小68字節左右(不算緩沖區),ROM占用1-2k字節左右,功能支持裁剪,資源占用小并不代表低性能,該庫參考了freeRTOS
    的頭像 發表于 09-29 18:02 ?7823次閱讀

    【M-K1HSE開發板免費體驗】相關源碼之閱讀和分析1-使用XComponent + Vsync 實現自定義動畫

    libentry.so 文件。 SHARED: 表示生成的是共享動態庫。 ...: 列出了所有需要被編譯進這個庫的 C++ 源文件。 find_library(...): 查找系統依賴庫
    發表于 09-03 16:05

    Crypto核心庫:顛覆傳統的數據安全輕量級加密方案

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

    基于米爾瑞芯微RK3576開發板部署運行TinyMaix:超輕量級推理框架

    本文將介紹基于米爾電子MYD-LR3576開發平臺部署超輕量級推理框架方案:TinyMaix 摘自優秀創作者-短笛君 TinyMaix 是面向單片機的超輕量級的神經網絡推理庫,即 TinyML
    發表于 07-25 16:35

    如何在RK3576開發板上運行TinyMaix :超輕量級推理框架--基于米爾MYD-LR3576開發

    本文將介紹基于米爾電子MYD-LR3576開發平臺部署超輕量級推理框架方案:TinyMaix摘自優秀創作者-短笛君TinyMaix是面向單片機的超輕量級的神經網絡推理庫,即TinyML推理庫,可以
    的頭像 發表于 07-25 08:03 ?4221次閱讀
    如何在RK3576<b class='flag-5'>開發</b>板上運行TinyMaix :超<b class='flag-5'>輕量級</b>推理框架--基于米爾MYD-LR3576<b class='flag-5'>開發</b>板

    Nginx和Apache的差異

    Nginx是 輕量級/高性能 的反向代理Web服務器,用于 HTTP、HTTPS、SMTP、POP3 和IMAP 協議。
    的頭像 發表于 07-09 09:45 ?679次閱讀

    輕量級≠低效能:RK3506J核心板如何用性價比感動用戶?

    瑞芯微 RK3506J憑借多核異構架構設計與國產化供應鏈整合,以輕量級硬件資源實現工業級性能輸出,重新定義了控制芯片的性價比邊界,為工業控制芯片領域帶來了全新的解決方案與發展方向。
    的頭像 發表于 06-17 09:20 ?2798次閱讀
    <b class='flag-5'>輕量級</b>≠低效能:RK3506J核心板如何用性價比感動用戶?

    Nginx基礎安裝與配置教程

    說起Web服務器,大家第反應可能是Apache,但作為在運維路上摸爬滾打的技術人,我必須要為Nginx正名下!這個由俄羅斯大神Igo
    的頭像 發表于 06-13 16:13 ?933次閱讀

    主流的 MCU 開發語言為什么是 C 而不是 C++

    在單片機的地界兒里,C語言穩坐中軍帳,C++想分杯羹?難嘍。咱電子工程師天天跟那針尖大的內存空間較勁,C++那些花里胡哨的玩意兒,在這兒真玩不轉。先說內存這道坎兒。您當stm32f4的256kRAM
    的頭像 發表于 05-21 10:33 ?1037次閱讀
    主流的 MCU <b class='flag-5'>開發</b>語言為什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?