設計網路伺服器ISAPI

2021-04-01 17:02:06 字數 1476 閱讀 7066

閱讀本文需要具備基本的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...