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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值