ASP.NET网页设计.net的URL Rewriting利用申明
今天去面试,被问到C#中的new关键字,看了那么多的书对new关键字还是有一定认识,回来又把new复习了一遍,发现了许多以前还不知道的细节。URLRewriting,这个仿佛素昧平生,又以为很生疏的手艺,已跟着资讯平安与SEO(SearchEngineOptimization)的脚步,渐渐影响每一个WebDeveloper,不管你是走哪一个手艺的,基础上都很难不往器重它,由于它实在能够帮你良多忙。光是一个REST的URL款式,就能够让良多人眼睛为之一亮。试想,假如你的网站有某支URL是长如许悦目:http://www.alixixi,com/System/plus/search.php?kwtype=1&keyword=%CD%F8%D5%BE&searchtype=titlekeyword
仍是如许悦目:
http://webdesign.alixixi,com/xindejiqiao/200904/30-2010.html
又大概,利用者是不是能够用如许的输出URL体例:
http://www.alixixi,com/tag/j2ee/
往列出他想要征采的关于j2ee的器材,仍是要利用者往打:
http://www.alixixi,com/System/plus/search.php?kwtype=1&keywordj2ee&searchtype=titlekeyword如许的URL?
我想对行销或消耗者举动有观点的人来看的话,谜底就很分明了。
URLRewriting的刚强,就是将表面的URL,转换成外部本人看的到的URL再做处置,可让外部的URL持续利用,又可让内部的URL具亲和性,因而URLRewriting如今已渐渐成为网站开辟职员必需要晓得的手艺之一,并且如今实在已有良多URLRewriting的模组可使用了,比方UrlRewriting.Net这个套件,或是IIS7.0中的URLRewritingModule等。
不外,假如可以本人走一遭的话,会更懂得URLRewriting是甚么,并且关于网路上的URLRewriting模组,也会更具准确的把握力(以下以ASP.NET为次要申明的手艺,其他的言语请参照手册,找出绝对应的功效)。
起首,URLRewriting是作为内部与外部URL请求的转换器,它必要过滤一切的URL,来实行重转向的举措,因而它对照合适保存在WebServer的实行过程当中,以ASP.NET来讲,利用HTTPModule便可处置这方面的事情(HTTPHandler较不合适)。
接者,设定处置HttpApplication.BeginRequest或是HttpApplication.AuthorizeRequest事务(多半的模组都是处置HttpApplication.AuthorizeRequest事务):
publicvoidInit(HttpApplicationcontext){context.AuthorizeRequest+=newEventHandler(AppAuthorizeRequest);}
然后再于事务常式中,呼唤HttpApplication.Context.RewritePath()便可:
publicvoidAppAuthorizeRequest(objectsender,EventArgse){(senderasHttpApplication).Context.RewritePath("~/MyHandler.aspx");}
然后,在Web.config中,将这个模组挂到system.web/httpModules设定中,如果IIS7.0,则要设在system.webServer/modules中。
<system.webServer><validationvalidateIntegratedModeConfiguration="false"/><modules><addname="UrlRewritingHandler"type="UrlRewritingModule"/></modules></system.webServer>
然后实行这个WebApplication,不管你输出哪一个URL路径,城市被导向到MyHandler.aspx中(固然,你的专案中要有MyHandler.aspx这个网页)。
URLRewriting实在手艺上就是如许罢了,透过HttpApplication.Context.RewritePath()将请求的URL传到指定的网页来处置,但是在开辟实务上,URLRewriting要考量的实在良多:
因为每一个URL城市被处置,那假如URL指向的是图片,档案,scripts或其他资本时要怎样处置?是不是有特别要扫除的路径?实行URLRewriting时,URL的格局要怎样计划才会切合需求?因为URL被重写时,<form>的action属性会反响外部的URL,而不是内部的URL,此时要怎样处置?
URLRewriting对效能很请求,由于它要处置每个URL请求,而不是选择性不处置。
别的,URL也不是必定要硬性的做Rewriting,部分必要扫除的就不必要做Rewriting,大概你有某种格局的URL是要做重导向(HTTP302)的话,也能够间接输入HTTP302讯息请求扫瞄重视导向便可,牢记,不要在URLRewriting中加太多的判别前提,也不要在URLRewriting中做太耗工夫的事,那只会拖慢URL的处置速率(比方还要连材料库存取材料这类事)。
在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。 那么,ASP.Net有哪些改进呢? 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
页:
[1]