閱讀本文需要具備基本的web/cgi 、mfc 以及visual c++ v4.1或更新版本的知識。
isapi 與cgi
很長時期以來,cgi都作為互動web開發的乙個標準工具。cgi指令碼允許使用者用各種語言來編寫簡單的應用程式,它在網路伺服器上執行並直接輸出到使用者的網路瀏覽器上。使用者的資料通過環境變數或者標準輸入裝置輸入,程式則會通過標準輸出返回html文字。這麼乙個簡單的設計,就結合了perl及tcl語言,也使得cgis非常簡單易用。
但cgis也有乙個非常大的缺點:效能問題。雖然有很多方法讓cgi執行得更快(例如:使用者可以把cgi寫成可執行的可編譯的語句,而不是perl指令碼),但速度仍是問題所在。每次進入cgi都得通過網路,可執行cgi仍必須為每一次進入請求建立新的程式。對於乙個訪問量大的站點來說,上述方法對於伺服器無疑是個巨大的負擔。
當微軟開始研究他們的網路伺服器(ms iis 或者是 iis)時意識到cgis對於大型的網路伺服器來說是個主要的問題所在。
一、進入isapi
速度在功能上此優點得到最大體現。
特徵isapi可以建立伺服器過濾器。完全由mfc整合。
isapi的不足
標準性目前只有少數幾種伺服器支援isapi
開發的簡便性
文件非常少,並且除錯程式的過程比較枯燥。
當請求為空或包含"default"這個函式被呼叫,請求通過chttpservercontext進入程式體,第乙個引數必須是乙個chttpservercontext物件。startcontent()方法在pctxt中放置<html><body>,writetitle()則是放置 <title>標記。下面 三行語句則寫入預設訊息,並使pctxt指向chtmlstream,在isa處理完成後傳送到客戶端。
hello web
第乙個程式會以"hello web"替換預設資訊串。
找到chellowebextension class 中的default() 成員函式,按照下面的方式更改。
建立,執行dll並從網路瀏覽器重新載入並替換dll
預設資訊為:
produced by the internetserver dll wizard. edit
your chellowebextension::default() implementation to change it.
將會顯示:
hello web!
如果出現"server error 500: specified module not found."提示,您所建立的專案是動態連線,而且缺少必要的dlls。糾正這個錯誤,就必須使用mfc重新靜態的連線專案。
網路伺服器設計
資訊家電網路伺服器設計 2016 年 6 月 目 錄 第三章 嵌入式平台開發環境 3.2 軟體開發環境 3.2.1 交叉編譯開發環境的建立 第二步 安裝交叉工具鏈 2.解壓arm linux gcc 3.4.1.tar.bz2 tar jxvf arm linux gcc 3.4.1.tar.bz2...
關於網路伺服器
假如我有數千萬甚至是上億的使用者資料,我想把使用者自增id和使用者名稱username放到快取裡。我的需求是,當要查詢使用者的資訊時,我想先從快取裡根據使用者名稱username獲取到使用者的id,然後再通過id在資料庫裡查詢使用者的資訊。我想當乙個使用者表達到上億的數量級別時,用自增id來查詢肯定...
網路伺服器宕機
1.伺服器程序終止 當伺服器程序終止時,伺服器傳送fin給客戶端,客戶端回以ack,客戶端進入close wait狀態,但還沒有結束連線。此時客戶端阻塞於fgets,客戶端繼續傳送buffer,伺服器傳送rst,客戶端readline返回0。而如果客戶端不理睬readline返回的rst,繼續wri...