我剛剛讀了http://www.meebo.com/關於我們頁面,並閱讀了下面這行: 「再加上,我們是少數仍在使用C的人之一!」用C編寫一個網站?
考慮到meebo是一個在線聊天客戶端,他們如何使用C?他們如何將C用於後端?它如何與前端進行交互?例如,假設一個用戶創建一個新帳戶,並創建一個新目錄,這個信息是如何從前端傳輸到後端的?
對不起,如果這是一個無效的問題。
謝謝
編輯1:CGI的介紹教程很棒。我可以從我的圖書館收到有關這方面的好書嗎?
非常感謝快速回復的傢伙!
我剛剛讀了http://www.meebo.com/關於我們頁面,並閱讀了下面這行: 「再加上,我們是少數仍在使用C的人之一!」用C編寫一個網站?
考慮到meebo是一個在線聊天客戶端,他們如何使用C?他們如何將C用於後端?它如何與前端進行交互?例如,假設一個用戶創建一個新帳戶,並創建一個新目錄,這個信息是如何從前端傳輸到後端的?
對不起,如果這是一個無效的問題。
謝謝
編輯1:CGI的介紹教程很棒。我可以從我的圖書館收到有關這方面的好書嗎?
非常感謝快速回復的傢伙!
我不知道meebo是怎麼做到的,但鑑於它是聊天軟件,他們可能有一個用C編寫的自定義服務器來處理實際的消息流量。
但是,Apache和大多數其他HTTP服務器一直能夠調用C程序,就像它們可以爲某些請求調用PHP,CGI和其他語言一樣。有些網站甚至用Lisp編寫。
與解釋型語言不同,後端必須每次都進行編譯,但這種情況發生在卷展欄上,並且是構建/生產腳本的一部分。
C程序運行時給出的權限和用戶帳戶必須仔細選擇,當然C網站也會遇到其他C程序可能遇到的相同問題,例如緩衝區溢出,段錯誤,堆棧溢出等。只要你用更低的權限運行它,你就可以得到更好的保護,並且它不比任何其他語言/平臺/架構差。
然而,對於服務器來說,它仍然被廣泛使用 - 我認爲是黃金標準。你可以找到很多用Java,C++和其他語言編寫的服務器,但是C似乎還是堅持不懈。
- 亞當
很多服務器端程序可以用C來完成,更何況CGI programming。他們也可能是Using C with MySQL,這很可能。但是如果沒有訪問他們的源代碼,我們無法知道他們使用了多少C。
聲稱他們是「仍然使用C的少數人之一」可能只是一個笑話。像this至少我希望如此。
-John
你可以看到一個在C網站源代碼的一個很好的例子:fossil。
它使用SQLite作爲後端。
Meebo使用名爲mod_meebo的自定義Lighttpd模塊。它沒有完全回答你的問題,但我認爲你可能會感興趣。
我已經在少至50行代碼(稀疏)或幾百(更好),高達約5k(安全)的情況下滾動了非阻塞HTTP 1.1服務器。服務器將加載動態共享對象作爲模塊來處理特定類型的請求。
父代碼將處理連接跟蹤,保持活動狀態,GET/POST/HEAD請求,並將它們送到啓動時加載的處理程序。當我在嵌入式設備上使用非常小的肘部空間時,我必須擁有某種基於Web的控制面板,特別是一種控制電源插座的設備。
每個DSO的入口點由所使用的URL和方法定義(即,/ foo根據請求類型提供不同的操作)。
我的小服務器做得很好,可以處理大約150個客戶端,無需分叉或線程,甚至有一個漂亮的小模板系統,因此UI人員可以在不需要手持的情況下修改頁面。
我決不會不是在任何一種製作網站上都可以使用這種設置,甚至可以在留言簿中使用這種基本的Hello World主頁。
現在,如果我所要做的只是偵聽端口80/443,接受帶有小型POST有效載荷的請求,請將它們消毒並將它們轉發給其他客戶端......它有點不同。但這是一個特定任務服務器僞裝成一個Web服務器,它不使用C來生成動態頁面。