WSS3.0技術內幕-----SharePoint體系結構(2)(翻譯)

ASP.NET Pages

該網頁是在ASP.NET框架的最寶貴的抽象之一。建立ASP.NET應用程序開發人員通常構建的拖放到Visual Studio中的可視化設計表面服務器控件和使用標準的屬性表修改頁面和控件的屬性頁。 ASP.NET框架和Visual Studio也變得相對簡單添加託管代碼編寫,爲響應頁面執行級和控制級別活動,邏輯頁。

 

在物理層,在ASP.NET應用程序頁面是一個。aspx擴展駐留在Web服務器上,是爲一種由ASP.NET運行時根據需要編譯的DLL文件。考慮下面的。aspx頁的定義,其中包含一個服務器端控件和一個簡單的事件處理程序。

 

<%@ Page Language="C#" %>

<script runat="server">

  protected override void OnLoad(EventArgs e) {

    lblDisplay.Text = "Hello, ASP.NET";

  }

</script>

<html>

<body>

  <form id="frmMain" runat="server">

    <asp:Label runat="server" ID="lblDisplay" />

  </form>

</body>

</html>

 

在幕後,ASP.NET框架確實相當多向編譯到DLLaspx文件。首先,它必須分析。aspx文件生成一個C#(或Visual BasicNET中)的源文件,其中包含一個公共類,從Page類是在System.Web.UI命名空間中定義的內部system.web.dll中繼承裝配。當ASP.NET頁分析器生成此頁的派生類,它建立一個控制樹,其中包含所有的服務器端控件在頁面文件中定義。該網頁分析器還添加了所需的代碼掛鉤的任何事件都是在頁面定義的處理器。

 

一旦ASP.NET頁分析器生成源。aspx頁文件,它可以編譯到DLL了。這一彙編自動發生的第一次。aspx文件請求。當ASP.NET運行時已彙編成一個DLL,該DLL的可用於所有的目標是相同的。aspx文件的後續請求使用的複製。aspx文件。然而,ASP.NET運行時的監控。aspx文件日期時間郵票和retriggers的編制過程中重建DLL,如果它看到的關聯的。aspx文件已被更新。

 

原因之一ASP.NET框架如此受歡迎,是關乎方便的服務器端控件。它非常容易使用的網頁撰寫的現成控件運出的ASP.NET框架,如驗證控件,日曆控件,控件支持數據綁定,GridView控件和Repeater控件等。此外,它的相對簡單的作者自定義控件的開發和使用的網頁中。

 

Master Pages

ASP.NET 2.0中引入母版頁,它提供一個非常有效的方法,頁面模板。特別是,母版頁定義了一些共同的因素是在許多不同的頁面使用(如頂部橫幅),以及網站導航控件。母版頁中定義的佈局然後,可以使用在許多不同的網頁鏈接到它。在ASP.NET中的術語,一個頁面的母版頁的鏈接被稱爲內容頁。之間的母版頁及其相關內容的網頁的基本關係

 

例如,假設您要創建一個母版頁定義了在網頁上方的橫幅的HTML佈局。你開始創建一個帶有。主人擴展名,如Default.master的,文件。接下來,您添加@碩士在網頁上方的指令。下面,你定義網頁的HTML佈局和添加指定的佔位符,如下面的例子。

<%@ Master %>

<html>

<body>

  <form id="frmMain" runat="server">

    <table width="100%">

      <tr>

        <td> <!-- Display Litware Banner -->

          <h1>Litware Inc.</h1><hr />

        </td>

      </tr>

      <tr>

        <td> <!-- Display Main Body of Page -->

          <asp:contentplaceholder id="PlaceHolderMain" runat="server" />

        </td>

      </tr>

    </table>

  </form>

</body>

</html>

 

當你想創建一個內容頁,您創建一個。aspx文件,並添加一個@ Page指令,其中包含一個MasterPageFile屬性。一旦你決定哪個從主網頁您想取代指定的佔位符,然後定義爲每一個內容元素。下面是一個內容頁簡單的例子,到default.master頁在前面的代碼中顯示的鏈接,並取代了名爲PlaceHolderMain佔位符的內容。

<%@ Page Language="C#" MasterPageFile="~/default.master" %>
<script runat="server">
  protected override void OnLoad(EventArgs e) {
    lblDisplay.Text = "Hello World";
  }
</script>
<asp:Content ID="main" Runat="Server"
             ContentPlaceHolderID="PlaceHolderMain" >
  <asp:Label ID="lblDisplay" runat="server" />
</asp:Content>

 

請注意,當您創建一個內容頁的母版頁的鏈接,任何HTML你想補充必須的元素內書面內容,爲特定的命名佔位符點。該網頁將無法編譯如果您嘗試添加HTML或服務器端控制之外的內容元素。但是,你可以從上面的例子,您可以添加內容之外的元素,並添加你喜歡的任何代碼腳本塊。

 

當母版頁定義了一個名爲佔位符,您不需要內更換內容頁面上。因此,母版頁可以創建一個默認的內容裏面的佔位符。任何內容的網頁,爲母版頁的鏈接,但不包括被點名的佔位符將得到默認內容。另一個內容頁相同的主網頁鏈接和不包括被點名的佔位符將覆蓋默認的內容,代之以自己的定製內容上。

 

最後請注意,誰創建了一個母版頁決定什麼指定的佔位符將其所含默認內容。這一點很重要當談到設計一個WSS網站,因爲你將要創建的內容網頁鏈接到的WSS的團隊創建母版頁。在這種情況下,你必須學會如何在WSS小組確定哪些類型的內容是替換佔位符。

 

HTTP Request Pipeline

工作在較低的水平。它提供了一種控制的ISAPI編程模型可比程度的開發。但是,當您創建一個HTTP請求管道組件,您可以編寫如C代碼在託管語言#或Visual BasicNET中。您也可以使用ASP.NET框架,這是很容易提供的API比使用的ISAPI編程模型。

 

顯示的圖片的HTTP請求管道及其三個更換組件類型:的HttpHandlerHttpApplication的,和HTTP模塊。當請求來了,他們排隊,並分配給工作線程然後處理了與這些組件的每種類型的互動要求。

 

任何要求,最終目的地是端點,它是在HTTP請求管道模型通過使用一個HttpHandler類,它實現了IHttpHandler接口。作爲一個開發人員,您可以創建自定義的HttpHandler組件插入到HTTP請求管道配置元素添加到Web.config文件。

 

HTTP請求管道的地方在前面一個HttpApplicationHttpHandler組件。在一個應用程序範圍的基礎上,傳入的請求總是通過HttpApplication的路由纔到達目標的HttpHandler,從而使有能力的HttpApplication預先處理而沒有任何要求的HttpHandler它被路由到的問題。這是處理的預處理階段,通過一系列的活動是內如BeginRequestAuthenticateRequest HttpApplication類的定義,AuthorizeRequest

 

在這種情況下,當你不想使用自定義的HttpApplication組件,ASP.NET框架初始化一個標準的HttpApplication對象的默認行爲,提供了HTTP請求管道。但是,您可以替換創建名爲Global.asax和放置在主機ASP.NET應用程序的根目錄下的文件這一標準組件。例如,您可以創建一個Global.asax看起來像如下:

<%@ Application Language="C#" %>
 
<script runat="server">
 
  protected void Application_AuthenticateRequest(object sender, EventArgs e) {
    // your code goes here for request authentication
  }
 
 
  protected void Application_AuthorizeRequest(object sender, EventArgs e) {
    // your code goes here for request authorization
  }
</script>

 

第三個在HTTP請求管道更換的組件類型是HTTP模塊。類似的HttpModule的,因爲它是爲了處理由HttpApplication類定義的事件HttpApplication的組成部分,是控制處理之前傳遞到任何HttpHandler類。例如,您可以創建自定義HTTP模塊組件來處理請求,如BeginRequestAuthenticateRequest一級的活動,和AuthorizeRequest。如同的HttpHandler,一個HttpModule類定義一個接口。您可以創建一個類實現IHttpModule接口,並配置元素添加到Web.config文件插入到HTTP請求管道它。

 

而自HttpApplication的組件可以作爲一個。asax簡單的文本文件擴展名的定義,自定義HTTP模塊組件總是編譯爲內部的階級組裝的DLL。要添加到HTTP請求管道自定義HTTP模塊組件,然後添加到web.config文件項。

 

雖然一個HttpApplication部分和HTTP模塊組成部分,在他們做了什麼類似的HTTP模塊包含了一些值得注意的差異。首先,你不能僅限於一個每個應用程序的HttpModule,你的HttpApplication的組成部分。在ASP.NET應用程序的web.config文件中可以添加多種不同的HttpModule組成部分。二,HTTP模塊組件可以在機器配置的水平。事實上,ASP.NET框架附帶幾個不同的,它們會自動在機器級別配置提供的東西,如Windows身份驗證,窗體身份驗證ASP.NET功能的HttpModule組件,輸出緩存。

 

最後一個部分,我們要討論關於HTTP請求的HttpContext的管道。由於ASP.NET初始化請求發送到HTTP請求管道,它從創建一個HttpContext類對象並初始化的重要背景資料。

 

從時間的角度來看,重要的是要看到,在任何ASP.NET創建HTTP請求內的管道自定義代碼,這個對象有一個機會開始執行。這意味着,您可以隨時對HttpContext對象和子對象進行編程,它包含諸如請求,用戶,和響應。當你在創作一個組件,是在執行HTTP請求管道,你可以寫代碼如下所示:

HttpContext currentContext = HttpContext.Current;

string incomingUrl = currentContext.Request.Url;

string currentUser = currentContext.User.Identity.Name;

currentContext.Response.Write("Hello world");

WSS Integration with ASP.NET

當你建立你瞭解如何使用ASP.NET集成WSS的,你應該首先通過高級別WSS的設計,都是爲了補充的ASP.NET框架之上的價值目標的想法。 WSS的增加了對ASP.NET頂部的環境中,要求網站必須不斷創造,更新和刪除具有重要價值。 WSS還增加了網站的要素配置的ASP.NET頂部,使網站管理員可以快速創建頁面,列表,並在一個網站中的文檔庫方面。

 

WSS的整合在IIS Web站點一級ASP.NET。每個IIS的網站在其中您打算將WSS站點必須經過一次性轉型的過程中,它被配置成爲什麼WSS的術語,是指作爲一個Web應用程序。這個轉變過程包括加入IIS元數據庫項和一個WSS特定的web.config文件的存取IIS Web站點的根目錄。一旦改造完成後,WSS的擴展了IISASP.NET路由體系結構,妥善的途徑是WSS的運行所有傳入的請求。

 

本章下一節將討論如何在Web應用程序配置螺母和螺栓。但是,在這些細節之前,我們要你做了重要意見。特別是,我們希望您考慮如何爲進入大圖片WSS的建築從可管理性和可擴展性角度,整體適合Web應用程序。

 

在一個WSS Web應用程序的創建是一個重要的管理任務,需要農場一級管理權限。創建Web應用程序需要的文件系統,並在每個前端Web服務器IIS元數據庫大量更改。在Web場環境中,這些變化會自動反映在每個前端Web服務器在運行時的WSS的農場。這是創建Web應用程序的步驟只需要在最初安裝和配置WSS的。

 

一旦Web應用程序創建,它不再需要接觸文件系統或IIS的前端數據庫前端Web服務器在創建,更新和刪除網站或網站集。在WSS架構使只需添加條目到配置數據庫和資料庫的內容有可能提供新的網站和網站集。這是這一WSS的架構,使得它在ASP.NET大量的管理和供應方面的優勢。這增加了管理水平更爲明顯在Web場環境。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章