首頁>技術>

一、Drogon是一個基於C++14/17的Http應用框架,使用Drogon可以方便的使用C++構建各種型別的Web應用服務端程式。 本版本庫是github上Drogon工程的映象庫。Drogon是作者非常喜歡的美劇《權力的遊戲》中的一條龍的名字(漢譯作卓耿),和龍有關但並不是dragon的誤寫,為了不至於引起不必要的誤會這裡說明一下。

Drogon是一個跨平臺框架,它支援Linux,也支援macOS、FreeBSD,和Windows。

二、它的主要特點如下:

網路層使用基於epoll(macOS/FreeBSD下是kqueue)的非阻塞IO框架,提供高併發、高效能的網路IO。詳細請見TFB Tests Results;

全非同步程式設計模式;

支援Http1.0/1.1(server端和client端);

基於template實現了簡單的反射機制,使主程式框架、控制器(controller)和檢視(view)完全解耦;

支援cookies和內建的session;

支援後端渲染,把控制器生成的資料交給檢視生成Html頁面,檢視由CSP模板檔案描述,通過CSP標籤把C++程式碼嵌入到Html頁面,由drogon的命令列工具在編譯階段自動生成C++程式碼並編譯;

支援執行期的檢視頁面動態載入(動態編譯和載入so檔案);

非常方便靈活的路徑(path)到控制器處理函式(handler)的對映方案;

支援過濾器(filter)鏈,方便在控制器之前執行統一的邏輯(如登入驗證、Http Method約束驗證等);

支援https(基於OpenSSL實現);

支援websocket(server端和client端);

支援Json格式請求和應答, 對Restful API應用開發非常友好;

支援檔案下載和上傳,支援sendfile系統呼叫;

支援gzip/brotli壓縮傳輸;

支援pipelining;

提供一個輕量的命令列工具drogon_ctl,幫助簡化各種類的建立和檢視程式碼的生成過程;

基於非阻塞IO實現的非同步資料庫讀寫,目前支援PostgreSQL和MySQL(MariaDB)資料庫;

基於執行緒池實現sqlite3資料庫的非同步讀寫,提供與上文資料庫相同的介面;

支援ARM架構;

方便的輕量級ORM實現,支援常規的物件到資料庫的雙向對映操作;

支援外掛,可通過配置檔案在載入期動態拆裝;

支援內建插入點的AOP

/file/2020/08/21/20200821225641_1623.jpg 其安裝環境比較麻煩。故選擇用docker搭建開發環境

#docker pull drogonf ramework/drogon

docker run -p 8778:8777 -V /Users/apple/data/drogon:/data/drogon -it drogonf ramework/drogon /bin/bash

將本地8778埠對映到容器的8777 ,本地的 /Users/apple/data/drogon目錄 對映到容器的 /data/drogon同時進入到 容器bash

drogon_ctl create project first#建立專案

drogon_ctl create project your_project_name

.新建項目錄為下面

├── CMakeLists.txt

├── build

├── config.json

├── controllers

├── filters

├── main.cc

├── models

│ └── model.json

├── plugins

└── views

修改main.cc

cat main.cc

#include <drogon/drogon.h>

int main() {

//Set HTTP listener address and port

drogon::app().addListener("0.0.0.0",8777);

//Load config file

//drogon::app().loadConfigFile("../config.json");

//Run HTTP framework,the method will block in the internal event loop

drogon::app().run();

return 0;

}

8777表示用8777埠啟動。

然後構建專案:

cd build

cmake ..

make

在build建立index.html

在 echo '<h1>Hello Drogon!</h1>' >>index.html

執行專案

./first

在本地伺服器開啟:http://localhost:8778發現專案啟動。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 給Angular應用增添搜尋Search功能