標籤:

有沒有C++的web伺服器?

就像java寫後端可以用tomcat,c++有沒有類似的應用伺服器呢?還是如果用C++寫服務端程序的話,socket之類的都是有自己去編寫呢?


有個框架叫poco,可以參考一下:

Overview | POCO C++ Libraries


看到這個題目,我又忍不住來安利我的https://github.com/windoze/fibio 了……


  1. cpp-net lib cpp-netlib: The C++ Network Library,號稱是要進入標準的,但是感覺還不stable;

  2. facebook做了一個HTTP庫 facebook/proxygen · GitHub,只對Linux系統比較友好;
  3. 另外還有一個叫pion的HTTP庫 splunk/pion · GitHub

C/C++好的網路庫有很多,像asio, libevent, libuv等的性能都是極好的,可以在這個基礎上加上HTTP協議解析,比如用joyent的http_parser,然後就是處理HTTP協議本身了,但這個時候問題就來了,是支持到1.1還是2.0?要不要支持SPDY、WebSocket?

沒有GC的語言處理字元串是很虐心的,如果一定要強求用C++,那我只能安慰題主:node也是C++寫的,你就當node的框架是C++ Web伺服器咯~

更好的選擇是用nginx,靠譜,實用。


發一個我們自己寫的吧.雖然目前還只能算是個玩具

topcpporg/cinatra · GitHub

但是我們會不斷完善它的


fastcgi


兩個基於C++/Qt的開源WEB框架


Cheerp: the C++ compiler for the Web platform.?


golang才是你的最終歸宿


強烈建議題主不要進這個坑,我剛剛從這個坑裡爬出來,淚流滿面。這會兒在地鐵上用手機答題。

我的上一代產品就是用c++寫的嵌入式web伺服器,首先處理字元串用c++真是累,添加新功能也不靈活。用c++跨平台?準備被各種編譯器輪虐吧!重量級線程即使採用線程池也不能很好的滿足高並發,後期會遇到各種問題。於是在新的產品中我用golang重寫了web模塊,瞬間輕鬆了好多,我也終於不用每天加班到半夜了


http - high performance application webserver in C/C++

上面這個問題的最高票回答里有若干 C/C++ 的 webserver 對比,更客觀的性能對比看這裡:yarosla / nxweb / wiki / Benchmarks

個人還是更喜歡 cesanta/mongoose · GitHub 這種小巧易用的(一個 .c 一個 .h 就沒了),雖然需要自己再搭配上幾個順手的輪子(比如 xml 解析、json encode/decode、以及 url escape 的處理等),不過性能確實不錯。

不得不說 Cesanta 他們家好多項目我都挺喜歡,好多 Embedded 的項目,比如一個 js 的引擎cesanta/v7 · GitHub 同樣也是只有一個 .c 一個 .h 就搞定了……嵌入項目相當方便。


https://en.m.wikipedia.org/wiki/Mongoose_(web_server)


時間對於自己來說是最寶貴的,不要妄想用低層的語言去干高層語言可以做到的事情。

每個語言都有各自適合的場合,選擇適合的工具干合適的事情,是程序員最為重要的技能。


nghttp2的asio版本


試下:Apache + knewcode

在百度上搜下:Apache knewcode

參考下面這篇文章:

使用Apache + knewcode,用傳統C++構建Web網站


facebook/proxygen


boost asio裡面有web server的 demo


FastCGI配合CGICC。

用它們搭了一個簡易的web框架:https://github.com/hczhcz/webpp。


有個庫 叫做poco 特別全 可以看看


推薦閱讀:

會C語言,如何學好C++?
C++ 編譯時會把標準庫里所有的函數都編譯嗎?還是其他的實現方式?如果全部編譯不是太費時間了?
如何從只會 C++ 語法的水平到達完成項目編寫軟體的水平?
這段c++代碼存在內存泄露的可能嗎?
如何格式化代碼能夠將類成員/函數的名字對齊?

TAG:C | 後台開發 |