這幾天閒着沒事幹,雖然開學了,可是到下週纔有課上。再者,研二了,也沒啥課了,導師又不讓我出去工做,我那個糾結啊。算鳥,那就本身折騰點東西玩玩吧。
因爲本身的本科的時候,一開始腦子就被驢給T了,學WEB開發去了,算到如今,WEB開發也3,4年了,擅長ASP.NET和PHP開發,數據庫主要是三個,MSSQL,MYSQL和ACCESS。前端知識是必備的,基本的沒有問題。其它方面也有涉略,如:PYTHON,SQLITE,MANGODB等。
一直都想作得再底層一點,由於是WEB,再底層,無非就是到了TCP/IP這一層,若是到這一層了,那就該寫WEB服務器了,目前還沒這想法,估計也沒那個心思去學習去寫。再往上一點,就是寫WEB服務器的接口,像IIS就有ISAPI和FASTCGI等。加上前段時間用PHP寫了個網站,在網上也看了一個開源的C語言WEB程序(Raphters),再者,APACHE和LIGHTTPD,NGIX等都支持FASTCGI,最後就決定學着寫FASTCGI開發。
網上有個相應的包,能夠在
http://www.fastcgi.com下載。封裝了一些API,能夠直接調用。若是想要再底層,那仍是直接寫個WEB服務器來得更直接。這個包用的是nmake編譯,由於主要是在WIN下作開發,用NAMKE或MAKE等,總有那麼點彆扭。幸虧VS自帶了NMAKE的編譯器,不像CMAKE,還得本身下包。
把包下載下來以後,用 VS2012 x86 本機工具命令提示 找到解壓的相應目錄,進去後,NMAKE -F MAKEFILE.NT 便可。記得噢,用VS2012 x86 本機工具命令提示,這個工具,不要用直接用 命令提示符。若是想直接用命令提示符合,就將NMAKE這個編譯器文件所在的路徑,加式PATH中便可。編譯成功以後,能夠到examples\\echo\\release下,找到自帶的DEMO所編譯出來的echo.exe。但,若是直接雙擊打開,很遺憾,會提示出錯,一看錯誤,就知道是什麼緣由,你懂的。到libfcgi\\Release,將libfcgi.dll,複製到windows目錄下,就OK了。再運行echo.exe,就不會出錯了。若是閃一下,就沒有了,那就從命令提示符中運行吧。你懂的。
接下來,就是配置到IIS中。我用的是WIN7(64位),自帶的是IIS7.5,相對於IIS5/6來說,配置FASTCGI就簡單多了,網上一搜就有的哈,配置過PHP5.3及以上的話,應該會不陌生。和配置PHP的FASTCGI同樣,將 請求路徑改爲:*,將 可執行文件選擇echo.exe就OK了,就能夠經過IIS訪問了。
到上面這一步以後,我才發現,跟python裏面一個WEB框架--WEBPY(我沒有玩過DJANGO,勿噴),處理請求方面很類似。感受WEBPY,像是更高一層的封裝,封裝好了MVC,直接定義一個類,就能夠訪問。而如今這樣不行,我以爲如今惟一的方法,就是根據path_info的不一樣,作個簡單的router,至於M和V,那就算鳥,就像我用PHP同樣,很反感MODEL。
從配置,到如今花了兩個下午的時間了,中間有時也很煩躁,多是由於C語言太原始了。我想作個簡單的字符串替換,才發現C語言裏面沒有這個樣的函數(標準庫,爲了跨平臺,木辦法)。寫一個int p_len=strlen(path); 報錯,爲嘛?p_len未定義,我又只得先int p_len;而後再用。偶滴神啊,我要瘋的。
還有,碰上個什麼外部引用的什麼鳥問題,一查才知道,沒有將要用的包,在編譯的時候加進去。神啊,我得本身寫MAKEFILE和MAK文件,要偶的小命啊。
其實Raphters,好像就是在這個包上封裝出來的一個框架,採用的是CMAKE編譯方式。我如今仍是按本身的思路寫,看啥時候,能寫出個像樣的DEMO,哈哈。
目前的思路就是:經過判斷path_info,作一個簡單的路由。模版方面,先作個簡單的字符串替換。數據庫方面的話,得下個包用。數據庫均可之後一步啦。還有不少不肯定的,好比說,SESSION,COOKIE,都不知道會是個什麼狀況。因此,路還很長啊,都不知道能不能繼續堅持下去。
今天記錄下,說不定下次看到這篇日誌,又繼續了。