NET网页编程之详解ASP.NET页面的aspx扩大
听03很多师兄说主讲老师杭城方讲课很差就连旁听也没有去了)<p>我们经由过程本文要谈谈ASP.NET页面的aspx扩大,次要是为了网站营业上的扩大,坚持两个网站图片内容同步。但愿本文能对人人有所匡助。需求:某网站因营业扩大,需拆分出另外一个站点,新旧站点具有不异的内容,但详细栏目体现情势上纷歧样。原网站运转多年,有大批的图片,这些图片也会在新站上利用。义务是:
包管两个网站图片内容同步,即本来的站点增添一个图片,新站点便可利用这个图片。
剖析:假定两个站点的域名分离为:http://www.a_image.com/和http://www.b_image.com/
1、将图片分离拷到两台服务器,今后上传图片同时上传两台服务器。这类办法虽复杂,可是占用伟大的磁盘空间,并且保护贫苦。
2、在http://www.b_image.com/的页面上间接写http://www.a_image.com/的援用。这类体例相似“图片盗链”,但事情量也很年夜,每加一个图片都要改链接。往后保护事情也很年夜。
3、一台服务器保存图片,别的一台服务器经由过程IIS的收集共享体例会见图片。但开放文件共享对服务器的平安将组成威逼。
分析页面运转道理:
当扫瞄器向IIS哀求页面时,IIS会把哀求转交给ASP.NETHTTP管道,HTTP管道是一组被控工具(HTPPModel),这些工具按按次处置哀求并把这些哀求转换成一样平常的HTML文本。HTTP管道的出口是HttpRuntime类的实体。HttpRuntime类实体从内存程序池当选择一个HttpApplication工具,HttpApplication的次要事情是寻觅如许的类实体(HttpHandler)使之可以处置哀求。使用程序能在Web.Config里对这个Http处置句柄映照列表举行重界说。以下Web.config中的句柄,界说了.jpg资本哀求的处置句柄:
<OLclass=dp-c><httphandlers><addverb=”*”path=”*.jpg”type=”HandlerTest”/></httphandlers>
Verb列表能够是逗号分开的HTTP谓词列表(比方“GET,PUT,POST”),也能够是通配符“*”;path路径属性能够包括单个URL路径或复杂的通配符字符串(比方*.aspx);type指定逗号分开的类/程序集组合。ASP.NET起首在使用程序的公用in目次中搜刮程序集DLL,然后在体系程序集缓存中搜刮程序集DLL。
从代码层面来看,要完成自界说的HTTP处置句柄,只必要完成一个IhttpHandler接口,个中包含IsReusable和ProcessRequest两个办法。IsReusable办法用于前往使用程序池中是不是存在可重用的类实体的信息,使用这个办法能够同时为多个哀求服务,而ProcessRequest办法则承受一个HttpContext实体作为参数,从而失掉对Request和Response的存取权限。
处置思绪:当对www.b_image.com/images/book.jpg的哀求抵达IIS时,ASP.NET初始化一个图象天生器类,在这个类中,经由过程HTTP端口把www.a_image.com/images/book.jpg取返来,再将图象流前往到HTTP呼应中。吸收并处置HTTP哀求是在ProcessRequest办法中完成的。客户端其实不晓得实践产生了甚么事变。
代码:
<divclass="code"><OLclass=dp-xml>usingSystem;usingSystem.Net;usingSystem.IO;usingSystem.Web;usingSystem.Drawing;usingSystem.Drawing.Imaging;namespaceWebHttpModule{publicclassImageLink:IHttpHandler{publicvoidProcessRequest(HttpContextcontext){stringurl=context.Request.Url.ToString();//ifrequestishttp://www.b_image.com/,thenchangedtorequesthttp://www.a_image.com/urlurl=url.Replace("http://www.b_image.com/","http://www.a_image.com/");//假如利用的绝对路径,就要手工到场完全的url路径if(url.IndexOf("http://www.a_image.com/")<=0){url="http://www.a_image.com/"+url;}//createoneWebClientobject,usedtorequesttheimageofhttp://www.a_image.com/WebClientclient=newWebClient();Streamstream=client.OpenRead(url);Imageimage=Image.FromStream(stream);context.Response.ContentType="image/jpeg";//将图象写进HTTP呼应,前往给客户端哀求image.Save(context.Response.OutputStream,ImageFormat.Jpeg);image.Dispose();}publicboolIsReusable{get{returntrue;&n中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
页:
[1]