WSS3.0技术内幕-----SharePoint体系结构(2)(翻译)

来源:互联网 发布:淘宝毁了中国经济 编辑:程序博客网 时间:2024/04/28 19:42

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场环境。