Asp.net大檔案上傳(一)

來源:互聯網
上載者:User

Asp.net大檔案上傳(一)

吳劍 2010-4-19
轉載請註明出處:http://www.cnblogs.com/wu-jian/

1. 前言

本文從基礎知識開始系統的描述了.Net大檔案上傳解決方案,希望給有需要的人提供協助,同時介紹了IIS、Http管道、Asp.Net管道一些相對較底層知識,個人能力有限,不足之處請及時指正。

2. HTTP管道

2.1. ISAPI

當使用者在瀏覽器中鍵入一個URL、點擊一個超連結或提交一個HTML表單,在伺服器端,IIS5或IIS6將會收到這個請求,並根據請求URL的副檔名不同交由不同的ISAPI擴充來處理,如所示:

ISAPI是底層非託管的win32 API,它定義的介面非常的單一併且效能最優。開發人員和第三方廠商可以使用這些介面深入到IIS裡。由於ISAPI是非常低層的,所以不太適合使用它構建應用級的程式。ISAPI趨向於被當作橋介面使用,用於給高層次的工具提供應用服務類型的功能,例如運行於IIS的Apache、Tomcat就是構建於ISAPI之上。ISAPI是個非常好的工具,它給高層次的應用程式提供了高效能垂直提供者,這使得那些高層次的應用程式需要的資訊可以從ISAPI提供的資訊中提煉。在ASP和ASP.NET裡,引擎可以提煉ISAPI介面提供的表單裡的對象如:Request和Response,這些對象可以從ISAPI請求的資訊中讀取它們各自的內容。可以說,ISAPI是自訂Web請求處理中第一個並且具有最高效能的IIS進入點。

2.2. ISAPI擴充

作為約定,ISAPI支援ISAPI擴充(extensions)和ISAPI過濾(filters)。擴充是請求處理介面,提供了跟Web Server輸入和輸出相關的邏輯處理。從本質上來說,它是一個事務介面,ASP和ASP.NET都被看作ISAPI擴充的實現。ISAPI是鉤子介面,它允許你查看進入IIS的每一個請求並且可以修改請求的內容(包括輸入和輸出)。
ASP.NET的ISAPI擴充為aspnet_isapi.dll,如所示:


 
2.3. IIS5與IIS6

當一個aspx請求到達IIS時,會檢查指令碼映射,然後把請求路由到aspnet_isapi.dll。接下來這個DLL檔案的操作是什麼呢?在IIS5和IIS6裡,這個請求又是如何到達ASP.NET運行時的呢?它們兩者的處理方式有沒有重大變化呢?


在IIS5中:
1、用戶端的請求進入IIS,IIS根據請求的URL試圖找到一個擴充映射,當發現URL是一個.aspx時,則將請求交由aspnet_isapi.dll
2、ISAPI DLL再通過一些已命名的管道與ASP.NET工作者進程串連
3、ASP.NET把請求傳遞給一個指定的AppDomain
4、在AppDomain中開始走ASP.NET管道流程,這個流程經過了一系列的步驟,最終結果是將請求傳遞給服務終點(Endpoint)----我們編寫的.aspx.cs類,這個類從Page派生,並實現IHttpHandler介面

 


在IIS6中:
IIS不再直接寄宿像ISAPI擴充的任何外部可執行代碼。代替的是,IIS總會保持一個單獨的背景工作處理序:應用程式集區。所有的處理都發生在這個進程裡,包括ISAPI dll的執行。對於IIS6而言,應用程式集區是一個重大的改進,因為它們允許以更小的粒度控制一個指定進程的執行。你可以為每一個虛擬目錄或者整個Web網站配置應用程式集區,這可以使你很容易的把每一個應用程式隔離到各自的進程裡,這樣就可以把它與運行在同一台機器上其他程式完全隔離。從Web處理的角度看,如果一個進程死掉,至少它不會影響到其它的進程。

 

下一篇:Asp.net大檔案上傳(二)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.