標籤:返回 複雜 web應用 sch simple https dom http協議 app
System.URI
常用屬性:
Scheme協議名稱
Host主機
Port連接埠
AbsoultePath絕對路徑
QueryURI地址中的參數部分
URI(通用資源標識符)
URL(統一資源定位器)
為IP取一個有意義的名字就是網域名稱,通過DNS(網域名稱伺服器)來關聯IP和網域名稱
程式與程式的通訊層次
1.物理層
2.資料連結層
3.網路層
4.傳輸層
5.會話層
6.展示層
7.應用程式層
應用程式層協議的內容需要通過傳輸層在瀏覽器和伺服器之間進行傳送
TCP/IP中
TCP負責可靠通訊的傳輸層協議
IP負責網路層的協議
HTTP協議就是TCP/IP協議中專門用於瀏覽器與web伺服器之間通訊的應用程式層協議
在同一個網路地址上,為了區分使用相同的協議的不同應用程式,可以為不同的應用程式分配一個數字編號,這個編號稱為網路連接埠(2位元組)由IANA(互連網地址分配機構)分配這些網路連接埠
1.0-1023為眾所周知的連接埠
2.1024-49151登記連接埠
3.49152-65535私人連接埠
那怎麼來實現一個簡單的HTTP伺服器?
1.SOCKET基於SOCKET 最原始的,那也就是功能最強大的,當然也就最複雜
2.TCPListener基於TCP的,因為HTTP就是基於TCP/IP的,對SOCKET的進一步封裝
3.HttpListener基於TCP/IP,對TCPListener的進一步封裝
常用屬性:
IsSupport 是否支援
prefixes首碼
程式集管理的最小邏輯單位為應用程式定義域(AppDomain)
>應用程式定義域
>應用程式集
應用程式的四大機制
1.隔離,不同應用程式定義域之間不能之間訪問,跨應用程式定義域訪問的對象必須派生自System.MarshalByRefObject
2.卸載被載入後必須以應用程式定義域為單位卸載
3.安全以應用程式定義域為邊界的安全機制
4.配置以應用程式定義域為邊界的程式配置
Web 應用程式域
ApplicationHost類的靜態方法CreateApplicationHost(Type,virtualDir,physicalDir);
默默無聞的工作者對象:
在ASP.NET中,準備用於處理的請求,必須封裝為HttpWorkerRequest類型對象
SimpleWorkerRequest可以處理簡單的請求,將返回的內容輸出到TextWriter流中
Web應用程式的運行時
>System.Web.HttpRuntime類是整個ASP.NET伺服器處理入口
>HttpResponse
預設情況下,HttpResponse對輸出的頁面進行了緩衝
可以通過BufferOutput屬性來擷取
重新導向(Redirect)原理
返回狀態代碼:302
設定回應頭["Location"]="地址"
>HttpRequest
>Headers
>Form
>Cookies
>Files
輔助的常用工具類HttpServerUtility
一個簡單的Asp.net web伺服器實現步驟
1.可以通過SimpleHttpListener來擷取一個Http的串連
2.擷取一個串連以後呢,就需要對它的請求進行處理,但是在這裡我們進行直接的處理,因為不在同一個應用程式定義域中,所以我們用委託指向它
3.建立跨應用程式定義域的對象,繼承至System.MarshalByRefObject,建立一個處理請求的方法
4.在處理請求的方法中指明asp.net程式的入口,並通過HttpRuntime.ProcessRequest(HttpWorkRequest)方法來擷取請求的結果
第一章 網站應用程式程式