HTTP服務端JSON服務端

2021-06-26 11:44:03 字數 3588 閱讀 3464

最後更新日期:2014-5-18

author:kagula

內容簡介:

cppcms是個開源web開發框架,通過它可以很容易實現http服務和json服務,這裡介紹cppcms開發環境的搭建。寫乙個cppcms測試程式,它建立http服務,向瀏覽器返回hello,world頁面。cppcms依賴的一些第三方庫,其它地方已經介紹怎麼build,所以這裡不重複了。

環境:windows8.1 64bit、visual studio 2013 professional sp1

zlib-1.2.8、openssl-1.0.1g、pcre-8.35、icu4c-53_1、  cppcms-1.0.4、python-3.4.0.、cmake2.8.12.2、

boost 1.55

搭建cppcms開發環境

cppcms依賴zlib、openssl、pcre、icu4c、python和win sdk等第三方庫或工具

我電腦中編譯好的庫,它們的位置

zlib

標頭檔案位置:d:/sdk/zlib-1.2.8;d:\sdk\zlib-1.2.8\build;

庫檔案位置:d:/sdk/zlib-1.2.8/build/release

openssl

標頭檔案位置:d:\sdk\openssl-1.0.1g\include

庫檔案位置:d:\sdk\openssl-1.0.1g\out32dll

icu4c

開啟d:\sdk\icu4c-53_1-src\icu\source\allinone\allinone.sln檔案,build出release版本即可。

標頭檔案位置:d:\sdk\icu4c-53_1-src\icu\include

庫檔案位置:;d:\sdk\icu4c-53_1-src\icu\lib

pcre

使用cmake工具在d:\sdk\pcre-8.35\build\下生成pcre.sln檔案,使用visualstudio 2013開啟並編譯即可。

標頭檔案位置:d:/sdk/pcre-8.35;d:\sdk\pcre-8.35\build;

庫檔案位置:d:\sdk\pcre-8.35\build\release

準備好後就可以構建cppcms庫了

新增變數

cmake_include_path

型別為filepath

值為d:/sdk/pcre-8.35;d:\sdk\pcre-8.35\build;d:/sdk/zlib-1.2.8;d:\sdk\zlib-1.2.8\build;d:\sdk\icu4c-53_1-src\icu\include;d:\sdk\openssl-1.0.1g\include

新增變數

cmake_library_path

型別為filepath

值為d:\sdk\pcre-8.35\build\release;d:/sdk/zlib-1.2.8/build/release;d:\sdk\icu4c-53_1-src\icu\lib;d:\sdk\openssl-1.0.1g\out32dll;c:\programfiles (x86)\microsoft sdks\windows\v7.1a\lib

重新configure後generate。開啟新生成的sln檔案。buildsolution有四個選項debug、minsizerel(最小發行版)、release、relwithdebinfo(帶debug資訊的發行版),我們這裡選release模式build。

編譯過程中碰到

[1]zconf.h檔案找不到的問題,這個檔案在我的d:\sdk\zlib-1.2.8\build路徑下,給它位址,這個問題解決。

[2]json.cpp 檔案 return is_ **行通不過, 改為returnbool(is_)即可,因為visual studio 2013(c++11標準)要求istream顯式(explicitly)轉換bool型別。

[3]test_formatting.cpp和test_boundary.cpp原始碼檔案因為出現特殊字元(其實是檔案語言編碼的問題)導致無法編譯,跳過,因為這兩個測試專案不能編譯,不影響我們以後使用cppcms庫。

[4]修改d:\sdk\cppcms-1.0.4\booster\booster\nowide\fstream.h檔案第44行,

if(my_base_type::open(convert(s).c_str(),mode))

void main(const char* url);

};void hello::main(const char* url)

int main(int argc, char ** argv)

catch (std::exception const &e) }

新增configure.js檔案,源**清單如下

按[f5]以debug方式執行即可。

現在你可以使用http://localhost:8080/這個位址訪問你的http伺服器了。

我測試了下面這個鏈結中貼出的**,可以用,但是如果你的測試程式是在debug模式,你只能呼叫debug模式編譯出來的cppcms動態庫,如果你是在release模式,就只能呼叫release模式編譯出來的cppcms動態庫,否則會丟擲「bad allocation」的錯誤。

服務端**

使用cppcms開發json_rpc服務

}cppcms在linux下的編譯和安裝

官網的hello world例子

深入學習 cppcms

cppcms和nginx協同工作

cppcms支援檔案上傳

boost庫學習隨記五 boost.locale 之字元轉換 gbkutf8 big5 string wstring等

how to build libiconv with microsoft visualstudio

注意,ie6不支援json_rpc技術。

json服務端簡易實現

orm模型中宣告乙個方法,可以將例項化後物件的資料轉換為字典 式 class product detail db.model 宣告產品明細表 tablename t s product detail id db.column db.integer,primary key true color db....

http服務端架構演進

什麼叫正向 什麼叫反向 服務 與負載均衡的差別 有了nginx,為啥還需要lvs 都有哪些負載均衡的方式 在前面文章中我們介紹過最簡單的一種客戶端 服務端響應模式,如下 這是http服務最簡單的一種形式,服務端就一層web伺服器。現在我們服務端變複雜了,使用者數增加了,併發量增加了。對我們服務端要求...

服務端系統

1.高可用 容錯和降級。容錯級別上,忽略次要 error 服務降級 程式中部分error是可以忽略處理的,或者打個日誌標記下,而不用結束整個執行流程。服務降級是指,當依賴的非核心模組出問題時,可以選擇不請求或者熔斷式請求 過載保護 資料可以不吐給客戶端,這就要求對資料或者服務進行級別劃分,優先保證使...