ASP论文外文翻译从底层了解ASPNET的结构.docx
- 文档编号:12727169
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:13
- 大小:25.46KB
ASP论文外文翻译从底层了解ASPNET的结构.docx
《ASP论文外文翻译从底层了解ASPNET的结构.docx》由会员分享,可在线阅读,更多相关《ASP论文外文翻译从底层了解ASPNET的结构.docx(13页珍藏版)》请在冰豆网上搜索。
ASP论文外文翻译从底层了解ASPNET的结构
原文1
Alow-levelLookattheASP.NETArchitecture
Abstract
ASP.NETisapowerfulplatformforbuildingWebapplicationsthatprovidesatremendousamountofflexibilityandpowerforbuildingjustaboutanykindofWebapplication.MostpeoplearefamiliaronlywiththehighlevelframeworkslikeWebFormsandWebServiceswhichsitattheverytopleveloftheASP.NEThierarchy.InthisarticleI’lldescribethelowerlevelaspectsofASP.NETandexplainhowrequestsmovefromWebServertotheASP.NETruntimeandthenthroughtheASP.NETHttpPipelinetoprocessrequests.
WhatisASP.NET
Let’sstartwithasimpledefinition:
WhatisASP.NET?
IliketodefineASP.NETasfollows:
ASP.NETisasophisticatedengineusingManagedCodeforfronttobackprocessingofWebRequests.It'smuchmorethanjustWebFormsandWebServices…
ASP.NETisarequestprocessingengine.Ittakesanincomingrequestandpassesitthroughitsinternalpipelinetoanendpointwhereyouasadevelopercanattachcodetoprocessthatrequest.ThisengineisactuallycompletelyseparatedfromHTTPortheWebServer.Infact,theHTTPRuntimeisacomponentthatyoucanhostinyourownapplicationsoutsideofIISoranyserversideapplicationaltogether.Theruntimeprovidesacomplexyetveryelegantmechanismforroutingrequeststhroughthispipeline.Thereareanumberofinterrelatedobjects,mostofwhichareextensibleeitherviasubclassingorthrougheventinterfacesatalmosteveryleveloftheprocess,sotheframeworkishighlyextensible.Throughthismechanismit’spossibletohookintoverylowlevelinterfacessuchasthecaching,authenticationandauthorization.YoucanevenfiltercontentbypreorpostprocessingrequestsorsimplyrouteincomingrequeststhatmatchaspecificsignaturedirectlytoyourcodeoranotherURL.Therearealotofdifferentwaystoaccomplishthesamething,butalloftheapproachesarestraightforwardtoimplement,yetprovideflexibilityinfindingthebestmatchforperformanceandeaseofdevelopment.
TheentireASP.NETenginewascompletelybuiltinmanagedcodeandalloftheextensibilityfunctionalityisprovidedviamanagedcodeextensions.Thisisatestamenttothepowerofthe.NETframeworkinitsabilitytobuildsophisticatedandveryperformanceorientedarchitectures.Aboveallthough,themostimpressivepartofASP.NETisthethoughtfuldesignthatmakesthearchitectureeasytoworkwith,yetprovideshooksintojustaboutanypartoftherequestprocessing.
WithASP.NETyoucanperformtasksthatpreviouslywerethedomainofISAPIextensionsandfiltersonIIS–withsomelimitations,butit’salotcloserthansayASPwas.ISAPIisalowlevelWin32styleAPIthathadaverymeagerinterfaceandwasverydifficulttoworkforsophisticatedapplications.SinceISAPIisverylowlevelitalsoisveryfast,butfairlyunmanageableforapplicationleveldevelopment.So,ISAPIhasbeenmainlyrelegatedforsometimetoprovidingbridgeinterfacestootherapplicationorplatforms.ButISAPIisn’tdeadbyanymeans.Infact,ASP.NETonMicrosoftplatformsinterfaceswithIISthroughanISAPIextensionthathosts.NETandthroughittheASP.NETruntime.ISAPIprovidesthecoreinterfacefromtheWebServerandASP.NETusestheunmanagedISAPIcodetoretrieveinputandsendoutputbacktotheclient.ThecontentthatISAPIprovidesisavailableviacommonobjectslikeHttpRequestandHttpResponsethatexposetheunmanageddataasmanagedobjectswithaniceandaccessibleinterface.
TheISAPIConnection
ISAPIisalowlevelunmangedWin32API.TheinterfacesdefinedbytheISAPIspecareverysimplisticandoptimizedforperformance.Theyareverylowlevel–dealingwithrawpointersandfunctionpointertablesforcallbacks-buttheyprovidehelowestandmostperformanceorientedinterfacethatdevelopersandtoolvendorscanusetohookintoIIS.BecauseISAPIisverylowlevelit’snotwellsuitedforbuildingapplicationlevelcode,andISAPItendstobeusedprimarilyasabridgeinterfacetoprovideApplicationServertypefunctionalitytohigherleveltools.Forexample,ASPandASP.NETbotharelayeredontopofISAPIasisColdFusion,mostPerl,PHPandJSPimplementationsrunningonIISaswellasmanythirdpartysolutionssuchasmyownWebConnectionframeworkforVisualFoxPro.ISAPIisanexcellenttooltoprovidethehighperformanceplumbinginterfacetohigherlevelapplications,whichcanthenabstracttheinformationthatISAPIprovides.InASPandASP.NET,theenginesabstracttheinformationprovidedbytheISAPIinterfaceintheformofobjectslikeRequestandResponsethatreadtheircontentoutoftheISAPIrequestinformation.ThinkofISAPIastheplumbing.ForASP.NETtheISAPIdllisveryleanandactsmerelyasaroutingmechanismtopipetheinboundrequestintotheASP.NETruntime.Alltheheavyliftingandprocessing,andeventherequestthreadmanagementhappensinsideoftheASP.NETengineandyourcode.
AsaprotocolISAPIsupportsbothISAPIextensionsandISAPIFilters.ExtensionsarearequesthandlinginterfaceandprovidethelogictohandleinputandoutputwiththeWebServer–it’sessentiallyatransactioninterface.ASPandASP.NETareimplementedasISAPIextensions.ISAPIfiltersarehookinterfacesthatallowtheabilitytolookatEVERYrequestthatcomesintoIISandtomodifythecontentorchangethebehavioroffunctionalitieslikeAuthentication.IncidentallyASP.NETmapsISAPI-likefunctionalityviatwoconcepts:
HttpHandlers(extensions)andHttpModules(filters).We’lllookattheselaterinmoredetail.
ISAPIistheinitialcodepointthatmarksthebeginningofanASP.NETrequest.ASP.NETmapsvariousextensionstoitsISAPIextensionwhichlivesinthe.NETFrameworkdirectory:
本文摘自http:
//www.west-
译文1
从底层了解ASP.NET的结构
·摘要
ASP.NET是一个用于构建Web程序的强大平台,提供了强大的柔性和能力以至于它可以构建任意的Web程序。
许多人仅仅对处于ASP.NET高层次的框架如:
WebForms和WebServices比较熟悉,因此,在这篇文章里,我将会阐述有关ASP.NET比较底层的知识,并且将会解释,如何将请求从WebServer移交给ASP.NET运行时,然后通过ASP.NETHTTP管道处理这些请求。
1ASP.NET是什么?
我们从最简单的定义开始,ASP.NET是什么?
我通常喜欢用如下语句来描述ASP.NET。
ASP.NET是完全使用托管代码处理Web请求的一个成熟引擎平台。
它不仅仅只是WebForms和WebServices。
ASP.NET是一个请求处理引擎。
它获取客户端请求,然后通过它内置的管道,把请求传到一个终点,在这个终点,开发者可以添加处理这个请求的逻辑代码。
实际上这个引擎和HTTP或者WebServer是完全分开的。
事实上,HTTP运行时是一个组件,你可以把它宿主在IIS之外的应用程序上。
甚至完全可以和其它的服务组合在一起。
通过使用内置的管道路由请求,HTTP运行时提供了一套复杂的,但却很优雅的机制。
在处理请求的每一个层面都牵涉到许多对象,但大多数对象都可以通过派生或者事件接口来扩展。
所以,此框架具有非常高的可扩展性。
通过这一套机制,可以进入较低层次的接口如:
缓存,身份验证,授权等是有可能的。
你可以在处理请求之前或之后过滤内容,或者仅仅把匹配指定签名的客户端请求直接路由到你的代码里或转向其它的URL。
针对同一件事情,可以通过不同的处理方法完成,而且实现代码都非常的直观。
除此之外,在容易开发和性能之间,HTTP运行时还提供了最佳的灵活性。
整个ASP.NET引擎完全构建在托管代码里,所有的扩展性功能都是通过托管代码的扩展提供。
对于功能强大的.NET框架而言,使用自己的东西,构建一个成熟的、高性能的引擎体系结构已经成为一个遗嘱。
尽管如此,但重要的是,ASP.NET给人印象最深的是高瞻远瞩的设计,这使得在其之上的工作变得非常容易,并且提供了几乎可以钩住请求处理当中任意部分的能力。
使用ASP.NET可以完成一些任务,之前这些任务是使用IIS上的ISAPI扩展和过滤来完成的。
尽管还有一些限制,但与ASP相比,已经有了很大的进步。
ISAPI是底层Win32样式的API,仅它的接口就有1兆,这对于大型的程序开发是非常困难的。
由于ISAPI是底层的接口,因此它的速度也是非常的快。
但对于企业级的程序开发是相当的难于管理的。
所以,在一定的时间内,ISAPI主要充当其它应用程序或平台的桥接口。
但是无论如何,ISAPI没有被废弃。
事实上,微软平台上的ASP.NET和IIS的接口是通过宿主在.NET里的ISAPI扩展来通信的,然后直达ASP.NET运行时。
ISAPI提供了与WebServer通信的核心接口,然后ASP.NET使用非托管代码获取请求以及对客户端请求发出响应。
ISAPI提供的内容经由公共对象类似于HttpRequest和HttpResponse,通过一个设计优良的、可访问的接口,以托管对象的方式暴露非托管数据。
2从浏览器到ASP.NET
让我们从一个典型的ASP.NETWeb请求的生命周期的起点开始。
用户通过在浏览器中键入一个URL,点击一个超链接,提交一个HTML表单(一个post请求),或者一个客户端程序调用基于ASP.NET的WebService(通过ASP.NET提供服务)。
在服务器端,IIS5或者IIS6将会收到这个请求。
ASP.NET的底层通过ISAPI扩展与IIS通信,然后,通过ASP.NET,这个请求通常被路由到一个带有.aspx扩展名的页面。
但是,这个处理过程如何工作,则完全依赖于HTTP处理器(handler)的执行。
这个处理器将被安装用于处理指定的扩展。
在IIS中,.aspx经由“应用程序扩展”被映射到ASP.NETISAPI的dll文件:
aspnet_isapi.dll。
每一个触发ASP.NET的请求,都必须经由一个已经注册的,并且指向aspnet_isapi.dll的扩展名来标识。
注:
ISAPI是自定义Web请求处理中第一个并且具有最高性能的IIS入口点。
依靠扩展名,ASP.NET把一个请求路由到一个恰当的处理器,该处理器则负责处理这个请求。
举个例子,WebServices的扩展名.asmx不会把一个请求路由到磁盘上的某一个页面,而是会路由到在定义中附加了指定特性(WebMethodAttribute)的类,此特性会把它标识成一个WebServices的实现。
许多其它的处理器将随着ASP.NET一起被安装。
当然也可以定义你自己的处理器。
在IIS里所有的HttpHandler被映射并指向ASP.NETISAPI扩展,并且这些HttpHandler也都在web.config里配置,用于把请求路由到指定的HTTP处理器里执行。
每一个处理器都是一个.NET类,用于处理指定的扩展。
而这些处理器可以处理简单到只有几行代码的HelloWorld,也可以处理复杂到类似ASP.NET的页面以及执行WebService。
就目前而言,仅仅需要理解扩展就是一种基本的映射机制,ASP.NET用它可以从ISAPI里获取一个请求,然后把请求路由到指定处理该请求的处理器中。
原文2
ThirteenASP.NETMVCextensibilitypointsyouhavetoknow
Abstract
OneofthemaindesignprinciplesASP.NETMVChasbeendesignedwithisextensibility.Everything(ormostof)intheprocessingpipelineisreplaceableso,ifyoudon’tliketheconventions(orlackofthem)thatASP.NETMVCuses,youcancreateyourownservicestosupportyourconventionsandinjectthemintothemainpipeline.
InthispostI’mgoingtoshow13extensibilitypointsthateveryASP.NETMVCdevelopershouldknow,startingfromthebeginningofthepipelineandgoingforwardtilltherenderingoftheview.
1.RouteConstraint
Usuallyyoucouldputsomeconstrainsonurlparametersusingregularexpressions,butifyourconstrainsdependonsomethingthatisnotonlyaboutthesingleparameter,youcanimplementtheIRouteConstrains’smethodandputyourvalidationlogicinit.
Oneexampleofthisisthevalidationofadate:
imagineanurlthathasyear,monthanddateondifferenturltokens,andyouwanttobeabletovalidatethatthethreepartsmakeavaliddate.
·2.RouteHandler
NotreallyspecifictoASP.NETMVC,theRouteHandleristhecomponentthatdecidewhattodoaftertheroutehasbeenselected.ObviouslyifyouchangetheRouteHandleryouenduphandlingtherequestwithoutASP.NETMVC,butthiscanbeusefulifyouwanttohandlearoutedirectlywithsomespecificHttpHanldersorevenwithaclassicWebForm.
3.ControllerFactory
Thecontrollerfactoryisthecomponentthat,basedontheroute,chooseswhichcontrollertoinstantiateandinstantiateit.ThedefaultfactorylooksforanythingthatimplementsIControllerandwhosenameendswithController,and
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASP 论文 外文 翻译 底层 了解 ASPNET 结构