FastCPP — C++ Web Development Environment

來源:互聯網
上載者:User
FastCPP -- C++ Web Development Environment

          Powered By Apache2

 Jsp,Asp,Asp.net,Php,Perl,Python,Ruby on Rails,FastCGI, and FastCPP.

 FastCPP是一個甚於Apache(現在只支援Apache2)的C++ Web開發環境,利用FastCPP可以快速的開發出高效能的Web應用,提供了Cookie,session還有動態開發以及混嵌HTML的功能。

 和其他Web開發語言的對比.

   優勢:

       1).基於C++,擁有STL,Boost以及Loki等強大開發庫的支援。

         
FastCPP並不是一個新的指令碼語言,只是一個支援混嵌HTML的C++虛擬碼,通過FastCPP的翻譯功能,將FastCPP的代碼翻譯成c++的
源檔案,並調用g++編譯成動態連結程式庫。所以,你可以直接使用你熟悉的C++文法,使用強大的STL以及直接使用系統調用,擁有比任何一個WEB開發語言
更強大的程式庫 .

       2).可以提供高效能的WEB服務能力。

         
FastCPP是基於Apache2的Module開發的,由FastCPP的偽檔案編譯成的動態連結程式庫直接由進程直接使用,在效能上和寫module是
一樣的。理論上效能會遠在jsp,php,perl以及fastcgi之上,因為jsp,php,perl是指令碼引擎來執行,而FastCGI是通過
FastCGID來維護cgi,將cgi的運行結果通過管道來傳給
apache2,所以儘管FastCGI可以使用C語言來增加語言本身的效能,但通過管道的傳輸也會成為FastCGI的瓶頸之一.

          FastCPP沒有明顯的效能瓶頸,因為FastCPP的最終的程式都是Apache2進程的一部分,不經過管道之類的傳輸資料,而是在進程內直接傳遞,所以比FastCGI有更多的優勢。

       3).快速的開發過程。

          只要配置好Apache2,寫好FastCPP的虛擬碼放在web目錄下就可以直接存取,並得到結果,FastCPP第一次訪問時需要編譯,所以在速度上會很明顯的慢,在第二次訪問之後就不需要編譯,已經和Apache2的主進程結合成一個進程。

          FastCPP支援HTML混嵌,可以像編輯HTML一樣的編輯FastCPP的頁面。而且提供了編譯參數的設定,完成可以按照MVC的理念來開發程式,

       4).完整的功能支援.

          FastCPP支援cookie和session這兩個強大的功能,你可以把你需要的變數存在session裡,在兩個不同的頁面中共用。

    缺點:

        1).不支援其他的開發語言,只支援C++語言,預設的編譯器是g++. ^^

        2).受到進程概念的影響。只支援Apache2的Single-Process Multi-Thread的Worker的單進程多線程的工作方式。

           因為FastCPP依賴的兩個全域變數,pages 和
sessions分別是fastcpp的頁面緩衝和session管理器,如果使用
Multi-Process的話,一但Apache2根據負載情況fork出新的進程,兩個進程間的pages和sessions就是兩個不同的單元,對
sessions的唯一性的破壞是可想而知的,所以就只能選擇Single-Process,不過很幸運的是,Worker是apache2推薦的高效能
的MPM。

           或許FastCPP在將來會提供一個功能更強,效能也比較優秀的MPM。

        3).暫時不支援FastCPP的叢集,不過在以後的開發中,會加入這個功能。

        4).暫時不支援apache1.x,會支援的
        5).暫時不支援除Linux之外的作業系統,也會支援的。

        6).現在FastCPP和Apache2是綁定在同一個進程的,所以如果page的記憶體訪問錯誤會直接導致Apache2的崩潰, 這是挺嚴重的,風險也很大.所以在選擇FastCPP,你要自己小心。不過,充分利用C++語言的強大功能,我想很容易避免這些問題的。

   如何獲得和安裝FastCPP?

   FastCPP在將來是支援跨平台的,只不過只支援Linux,所以現在,你只能用Linux來使用FastCPP.

   1.獲得源碼.

     FastCPP是遵守GPL的要求而發布的代碼。

     apache2.你需要一份apache2的源碼,你可以在httpd.apache.org中下載,我使用的httpd-2.0.54

     fastcpp.在http://dragon.linux-vs.org/~jinti/fastcpp-0.0.1.tar.gz 中獲得。

   2.安裝

     1).apache2的安裝

        jinti@heaven:~$tar jxf httpd-2.0.54.tar.bz2

        jinti@heaven:~$cd httpd-2.0.54

        jinti@heaven:~/httpd-2.0.54$ ./configure --with-mpm=worker

        jinti@heaven:~/httpd-2.0.54$ make && make install

     2).fastcpp的安裝

        jinti@heaven:~$tar jxf fastcpp-0.0.1.tar.gz

        jinti@heaven:~$cd fastcpp-0.0.1

        jinti@heaven:~/fastcpp-0.0.1$./configure && make && make install

        fastcpp安裝之後你需要在httpd.conf加上

 LoadModule fastcpp_module modules/mod_fastcpp.so

 AddHandler fastcpp-script .fc

        這樣,就可以調用副檔名為.fc的fastcpp指令碼了.

   3.運行

        首先你要運行apache2.

        ./apachectl -DONE_PROCESS -k start

        #一定要加上-DONE_PROCESS 否則有可能會產生兩個sessionmaps影像,這是錯誤的。

        在apache2/htdocs 下建一個hello.fc

jinti@heaven:~$ cat apache2/htdocs/hello.fc

       <%@inc   "-I/usr/include/"%>

<%@link  "-L/usr/lib/" %>

<%@comp  "-O2" %>

<%!

    #include <iostream>

    using namespace std;

    static int i = 0;

 %>

 <html>

 <head>

       <title>Thank you for choicing FastCPP</title>

        </head>

        <body>

 <%

  page<<"<B>Hello,FastCPP "<<i++<<"<BR></B>"<<endl;

  %>

        </body>

        </html>

       開啟你的瀏覽器訪問http://127.0.0.1/hello.fc就可以看到運行結果了.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.