登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 外文翻译 > 计算机类 > 计算机科学与技术 > 正文

ASP.NET外文翻译资料

 2023-03-04 02:03  

ASP.NET

ASP.NET构建的Web应用程序是一个强大的平台,其提供了非常大的灵活性和能力来构建几乎任何类型的Web应用程序。大多数人都熟悉的只有高层次的框架比如WebForms和WebServices,是顶层ASP.NET层次结构。在本文中,我将描述ASP.NET的低层方面和解释如何从Web服务器请求运行ASP.NET,然后通过ASP.NET Http管道来处理请求。

我理解的内部平台总是提供一定的满意和舒适,以及洞察力,这样有助于开发更好的应用。知道工具以及它们如何组合在一起作为整个复杂的框架的一部分,让它更容易找到问题的最佳解决方案,更重要的是有助于故障诊断和调试时出现的问题。本文的目的是要看看ASP.NET从系统水平和帮助理解请求流到ASP.NET处理管道。因此我们将看看核心引擎和Web请求如何结束。在你的日常工作这些信息你并不需要知道,但是你很了解了ASP.NET体系结构的路由请求到您的应用程序代码后,会让你的能力更上一层楼。

大多数人使用ASP.NET熟悉WebForms和web服务。基于Web的应用程序逻辑和ASP.NET驱动引擎,提供了底层接口到Web服务器和路由机制这些抽象概念来提供基础前端服务,这些服务通常用于您的应用程序。WebForms和WebServices仅仅是两个非常复杂的建立在核心ASP.NET框架上的HTTP处理程序的实现。

然而,ASP.NET从一个较低的水平提供了更多的灵活性。HTTP请求和管道运行时提供所有相同的功能,用来建立WebForms和WebService实现.NET代码。所有的功能是提供给你,你应该决定你需要构建一个定制的一个小的水平低于WebForms平台。

构建大多数Web接口,WebForms绝对是最简单的方法,但是如果你正在构建定制的内容处理程序,或有特殊需要处理传入和传出的内容,或您需要构建一个自定义应用程序服务器接口到另一个应用程序中,使用这些低层次的处理程序或模块可以提供更好的性能和更多的控制实际的请求过程。高水平的实现WebForms和WebServices的功能的同时,您可以绕过下级的工作的请求,也提供他们也增加不少开销。

让我们先从一个简单的定义:ASP.NET是什么?我喜欢定义ASP.NET如下:

ASP.NET是一个复杂的引擎使用托管代码处理Web请求。

它不仅仅WebForms和Web服务hellip;

ASP.NET是一个请求处理引擎。需要传入请求并将它通过其内部的管道传递到一个终点,你作为一个开发者可以附加代码来处理该请求。这个引擎实际上是完全分开的HTTP或Web服务器。事实上,HTTP运行时是一个组件,您可以在您自己的应用程序主机以外的IIS或任何服务器端应用程序。例如,您可以主机ASP.NET运行在Windows表单(查看http://www.west-wind.com/presentations/aspnetruntime/aspnetruntime.asp以获得更详细的信息在运行时宿主Windows窗体应用程序)。

运行时提供了一个复杂但很优雅的管道路由请求的机制。有许多相互关联的对象,其中大部分是通过事件接口,可扩展通过子类化或在几乎每一个级别的过程,因此,是高度可扩展的框架。通过这种机制可以钩到非常低的水平等接口缓存、身份验证和授权。你甚至可以过滤内容,前置或后置处理请求,或仅仅是传入的请求路由匹配特定的代码直接签名或另一个URL。有许多不同的方式来完成同样的事情,但是所有的方法都是易于实现,灵活地找到最佳匹配的性能和易于开发。

整个ASP.NET是完全建立在托管代码和所有的通过托管代码扩展提供的功能。ASP.NET构建复杂和非常面向性能的架构。不过,最重要的是ASP.NET的最令人印象深刻的部分是深思熟虑的设计使结构简单,但提供了挂钩到任何请求处理的一部分。

ASP.NET可以在执行任务之前,ISAPI在IIS上扩展领域和过滤器,但这接近ASP。ISAPI是低水平Win32 API,是非常微薄的接口而且工作起来是非常困难和复杂的应用程序。正因为ISAPI非常低的水平,它也非常快,但是相当难以管理应用程序级发展。所以,ISAPI主要降级了一些时间向其他应用程序或平台提供桥接接口。但ISAPI并没有死。事实上,ASP.NET微软平台上的网络接口与IIS主机在ASP.NET运行时通过一个ISAPI扩展。ISAPI提供从Web服务器和ASP.NET的核心接口,使用非托管ISAPI代码检索输入和输出发送回客户端。ISAPI提供的内容是可以通过常见的物品,例如HttpRequest和HttpResponse公开非托管数据作为管理对象与一个漂亮的和可访问的接口。

从浏览器访问ASP.NET

我们开始之初一个典型的ASP.NET Web请求。从浏览器上的URL开始一个请求, ,点击一个超链接或提交HTML表单(POST请求)。或者客户机应用程序可能会调用一个ASP.NET基于Web服务,这也是由ASP.NET提供服务。在服务器端Web服务器- Internet Information server 5或6拿起请求。在ASP的最低水平,通过一个ISAPI扩展网络接口与IIS。ASP.NET这个请求通常是一个路由到一个aspx扩展页面。但是这一过程是如何工作的完全取决于HTTP处理程序的实现,建立了处理指定的扩展名。在IIS.aspx映射通过一个“应用程序扩展”(又名,作为一个映射到ASP脚本映射),如ISAPI dll,aspnet_isapi.dll。每个请求, ASP.NET必须经过注册的一个扩展,并指出在aspnet_isapi.dll。

根据扩展ASP.NET将请求路由到一个适当的处理程序,负责捡请求。例如,.asmx扩展Web服务路由请求而不是磁盘上的一个页面一个特殊原因确定它作为Web服务实现的类。其他处理程序是安装ASP.NET,你还可以自定义。所有这些HttpHandlers映射到ASP.NET,ISAPI扩展在IIS,并且网络配置路由到一个特定的HTTP处理程序实现。每个处理程序是一个.NET类,处理一个特定的扩展,扩展的范围可以从简单的Hello World行为几行代码到非常复杂的处理程序,如ASP.NET页面或Web服务实现。现在才明白,一个扩展是ASP的基本映射机制。ASP.NET从ISAP接收请求,然后将其路由到一个特定的处理程去处理请求。

ISAPI连接

ISAPI unmanged Win32 API是一个低水平。ISAPI规范定义的接口非常简单和优化性能。他们处于非常低水平——处理原始指针和函数指针表回调,但他们提供他最低和最面向性能的接口,开发人员和工具厂商可以使用钩到IIS。因为ISAPI很低水平不适合构建应用程序级别的代码,ISAPI往往是主要用作桥接口提供应用服务器类型功能更高水平的工具,例如ASP和ASP.NET都是分层的ISAPI冷聚变,大多数Perl、PHP和JSP实现上运行IIS以及许多第三方解决方案如自己的全国计算机等级考试二级网络连接框架。ISAPI是一个很好的工具来提供更高水平的高性能管道接口的应用程序,然后抽象ISAPI提供的信息。在ASP和ASP.NET,引擎抽象ISAPI接口提供的信息在请求和响应对象的形式,读其内容ISAPI请求的信息。把ISAPI认作为管道。ASP.NET的ISAPI dll非常瘦,只是作为一个路由机制管入站请求到ASP.NET运行时所有的重担和处理,甚至请求线程管理里发生的ASP.NET引擎和代码。

作为协议ISAPI同时支持ISAPI扩展和ISAPI过滤器。扩展是一个请求处理接口并提供处理输入和输出的逻辑与Web服务器,它本质上是一个事务接口。ASP和ASP.NET被实现为ISAPI扩展。ISAPI过滤器是钩接口,允许查看每个请求的能力,进入IIS和修改内容或改变行为等功能的验证。顺便说一下ASP.NET地图ISAPI-like功能通过两个概念:Http处理程序(扩展)和Http模块(过滤器)。之后我们将更详细地看看这些。

ISAPI初始代码点,标志着一个ASP.NET请求的开始。在ASP.NET框架目录上ASP.NET绘制了各种扩展的ISAPI。

lt;.NET FrameworkDirgt;aspnet_isapi.dll

cd lt;.NetFrameworkDirectorygt;

aspnet_regiis - i

这将注册的特定版本的ASP.NET运行时对整个网站通过注册scriptmaps和设置客户端脚本库使用的各种控制uplevel浏览器。注意,注册的特定版本的CLR安装在上面的目录。aspnet_regiis让你单独配置虚拟目录。每个版本的.NET框架aspnet_regiis有自己的版本,你需要运行相应的注册一个网站或一个虚拟目录的特定版本.NET框架。首先是ASP.NET 2.0,IIS ASP.NET配置页面允许您选择.NET版交互在IIS管理控制台。

IIS 5和6的工作不同

当一个请求传入时,IIS检查脚本和路由请求映射到aspnet_isapi.dll。DLL的操作以及它如何到达ASP.NET运行时相差很大。

在IIS 5主机aspnet_isapi.dll直接在inetinfo.exe运行或一个孤立的工作进程,这个工作进程如果你有隔离设置为中等或高的Web或虚拟目录时可以运行。当第一个ASP.NET DLL的请求将在另一个EXE——aspnet_wp产生一个新进程,并且路线处理这产生的过程。这个过程反过来加载和启动.NET运行。每个请求,走进ISAPI DLL然后通过命名管道路线这一工作进程调用。

IIS 6 -万岁的应用程序池

IIS 6处理模型有了显著的变化,IIS不再执行任何其他可执行代码,像ISAPI扩展。而不是像IIS 6总是创建一个单独的工作进程,一个应用程序池,所有处理这个过程,包括执行ISAPI dll。应用程序池IIS 6相比有了很大改善,他们允许非常细粒度的控制在一个给定的过程中执行。应用程序池可以配置为每个虚拟目录或者整个网站,所以你可以隔离每个Web应用程序轻松地进入自己的过程,将完全独立于任何其他Web应用程序运行在同一台机器上。如果一个进程死亡至少从Web处理角度来看将不会影响任何其他的进程。

此外,应用程序池是高度可配置的。在同一情况下,您可以通过设置一个执行模拟水平的池允许您定制的权利执行安全环境配置给Web应用程序。一个大的改进为ASP.NET应用程序池取代大部分在machine.config ProcessModel条目。这个条目在IIS 5难以管理,因为设置无法覆盖全面在应用程序特定的web.config文件。当运行IIS 6时ProcessModel设置主要是忽视而设置读取应用程序池。我主要是说,一些设置,比如ThreadPool的大小和IO线程仍然通过这个关键,因为他们没有同等配置的应用程序池设置服务器。

因为应用程序池外部可执行这些可执行文件也可以轻松地监控和管理。IIS 6提供了许多的健康检查、重新启动和超时选项,可以检测并在许多情况下正确的应用程序的问题。最后IIS 6不要依赖COM 应用程序池的IIS 5隔离过程并提高了性能和稳定性尤其是对内部需要使用COM对象应用程序。

尽管IIS 6应用程序池是单独的费用,他们是高度优化的HTTP操作直接与内核模式的HTTP.SYS通信。传入的请求直接路由到适当的应用程序池。InetInfo行为只是作为管理和配置服务,实际上大多数交互之间直接发生HTTP系统和应用程序池,所有这些都转化成一个更稳定的环境和更高的性能在IIS 5之上。特别是静态内容和ASP.NET应用程序。

IIS 6应用程序池也有内在的知识ASP.NET并且ASP.NET可以与新的低级别APIs通信,允许直接访问HTTP缓存APIs ,可以卸载缓存从ASP.NET直接到Web服务器的缓存中。

在IIS 6中,ISAPI扩展运行在应用程序池中。.NET运行时也在这个过程中运行,所以ISAPI扩展和.NET之间的通信发生的进程是本质上是更有效的IIS5使用的管道接口。IIS托管模型非常不同的于实际接口的托管代码非常相似,只有获得请求路由有点不同。

实际的入口点进入.NET运行时发生未登记类和接口的数量。很少有人知道这些接口之外的微软,并且微软的人并不急于谈论细节,因为他们认为这是一个实现了的细节,对与ASP.NET开发人员构建应用程序几乎没有影响。

ASPNET_WP.EXE (IIS5) and W3WP.EXE (IIS6)的工作流程主导.NET运行时和ISAPI DLL调用通水平组unmanged接口COM向前,最终调用ISAPIRuntime类的子类的一个实例。第一个入口点运行时是非法ISAPIRuntime类,暴露了IISAPIRuntime通过COM接口调用者。基于这些COM接口的低水平IUnknown接口,是内部调用的ISAPI扩展为ASP.NET。

IISAPIRuntime接口充当接口点之间的非托管代码来自ISAPI扩展IIS 6中(直接和间接地通过命名管道处理程序在IIS 5)。如果你看看这个类,你会发现一个ProcessRequest方法签名:

[return: MarshalAs(UnmanagedType.I4)]

int ProcessRequest([In] IntPtr ecb,

[In,MarshalAs(UnmanagedType.I4)]int useProcessModel);

事件控制块参数是ISAP

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[498807],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图