NET网页编程之Response.Redirect()、Server.Execute、Server.Transfer三者区分
也许唯一可以让世人留恋Java的理由就剩下它的王牌——跨平台。1、Response.Redirect():Response.Redirect办法招致扫瞄器链接到一个指定的URL。当Response.Redirect()办法被挪用时,它会创立一个应对,应对头中指出了形态代码302(暗示方针已改动)和新的方针URL。扫瞄器从服务器收到该应对,使用应对头中的信息收回一个对新URL的哀求。
这就是说,利用Response.Redirect办法时重定向操纵产生在客户端,统共触及到两次与服务器的通讯(两个往返):第一次是对原始页面的哀求,失掉一个302应对,第二次是哀求302应对中声明的新页面,失掉重定向以后的页面。</P>2、Server.Transfer
Server.transfer是IIS5.0新增添的一个功效。它办理了Response.Redirect的两个主要的缺点:
1)在Response.Redirect中,我们得不就任何第一页的输入。
2)Response.Redirect会丧失request中的一切属性,固然我们能够经由过程一些其他的举措,好比session来弄定,但是,有些页的参数是在request中传过去的,如许的话,就不可了。
3)Response.Redirect必要client端再倡议一个哀求。
server.transfer就很好地办理了这些成绩。它是从server端间接向下一页倡议哀求,不必要client再次发送哀求.
假如你的网页十分依附response.redirect,这个小小的改动能够进步快要25%的效力。(依据微软文档).
Server.Transfer办法把实行流程从以后的ASPX文件转到统一服务器上的另外一个ASPX页面。挪用Server.Transfer时,以后的ASPX页面停止实行,实行流程转进另外一个ASPX页面,但新的ASPX页面仍利用前一ASPX页面创立的应对流。
假如用Server.Transfer办法完成页面之间的导航,扫瞄器中的URL不会改动,由于重定向完整在服务器端举行,扫瞄器基本不晓得服务器已实行了一次页面变更。
默许情形下,Server.Transfer办法不会把表双数据或查询字符串从一个页面传送到另外一个页面,但只需把该办法的第二个参数设置成True,就能够保存第一个页面的表双数据和查询字符串。
同时,利用Server.Transfer时应注重一点:方针页面将利用原始页面创立的应对流,这招致ASP.NET的呆板考证反省(MachineAuthenticationCheck,MAC)以为新页面的ViewState已被改动。因而,假如要保存原始页面的表双数据和查询字符串汇合,必需把方针页面Page指令的EnableViewStateMac属性设置成False。
server.Transfer()有一个不敷就是:当用户在a.aspx中提交了一个表单,然后用Server.Transfer()进进b.aspx,这时候假如用户革新一下页面,扫瞄器便会问用户是不是“重试”发送表单,假如用户点击“是”,那末,表单中的数据被从头发送到服务器。如发送表单的感化就是为了向数据库中拔出一笔记录,了局导不但愿产生的事——统一表单被屡次到场到数据库中。
3、Server.Execute
Server.Execute办法同意以后的ASPX页面实行一个统一Web服务器上的指定ASPX页面,当指定的ASPX页面实行终了,把持流程从头前往原页面收回Server.Execute挪用的地位。
这类页面导航体例相似于针对ASPX页面的一次函数挪用,被挪用的页面可以会见收回挪用页面的表双数据和查询字符串汇合,以是要把被挪用页面Page指令的EnableViewStateMac属性设置成False。
Server.Execute和Server.Transfer的区分:
Server.Execute("another.aspx")和Server.Transfer("another.aspx")区分:
Execute是从以后页面转移到指定页面,并将实行前往到以后页面.
Transfer是将实行完整转移到指定页面.
<P>总结:
在收集形态较好的情形下,Redirect(url)办法效力最高!!可重定向到统一台或非统一台服务器上的aspx或非aspx(html)资本Server.Transfer办法和Server.Execute办法最天真!!但只能转到统一Application目次下,也有大概招致不希冀的了局产生,Server.Execute办法占用资本最多。对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。 大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
页:
[1]