精灵巫婆 发表于 2015-1-18 11:16:06

ASP.NET网页设计[ASP.NET]HttpCookieCollection to CookieCollection的最复杂办法仓酷云

J2EE比较成熟一点,一些比较出名的企业应用软件都是基于J2EE的。以后的发展就不好说了。不过net网页编程比较烦,学.net的话,微软把很多工具都封装好了,学起来可能容易一点。System.Web.HttpCookieCollection是System.Web.HttpContext.Current.Request.Cookies与System.Web.Mvc.Controller.Controller.Cookies的范例,用于猎取客户端扫瞄器传送过去的cookie。
System.Net.CookieCollection是System.Net.HttpWebRequest.CookieContainer顶用到的,用于倡议WebRequest哀求时带上cookie。
成绩场景
在以后的ASP.NETMVC程序中将扫瞄器发过去的cookie一成不变地发给背景一个供应服务的站点。之前的做法是在这个ASP.NETMVC程序中从cookie中读取数据,然后以此数据为参数经由过程WCF挪用背景服务。此次我们盘算弃用WCF,间接用HttpWebRequest基于复杂天真的HTTP来处置。
因而就面对怎样传送cookie的成绩。起首想到的是HttpWebRequest.CookieContainer,但CookieContainer必要的是CookieCollection,我们在MVC程序中经由过程Request.Cookies失掉的倒是HttpCookieCollection。然后,成绩就酿成了怎样将HttpCookieCollection转换为CookieCollection?
办理历程
在stackoverflow上找到了一个办理办法(SendingcookiesusingHttpCookieCollectionandCookieContainer):


HttpCookieCollectionoCookies=Request.Cookies;for(intj=0;j<oCookies.Count;j++){HttpCookieoCookie=oCookies.Get(j);CookieoC=newCookie();//ConvertbetweentheSystem.Net.CookietoaSystem.Web.HttpCookie...oC.Domain=myRequest.RequestUri.Host;oC.Expires=oCookie.Expires;oC.Name=oCookie.Name;oC.Path=oCookie.Path;oC.Secure=oCookie.Secure;oC.Value=oCookie.Value;myRequest.CookieContainer.Add(oC);}

可是这个烦琐的办理办法看着别扭,用着舒服。假如就如许办理成绩,一点成绩感都没有。哪是享用代码,明白是做一天码农,对付一天代码。
好的办理办法老是复杂的、文雅的,必定有更好的办理办法。抱着如许的信心高低求索,在园子里发明一篇冗长的博文(HttpWebRequest和Cookie的一些纪录),个中的一段代码让人长远一亮:

HttpWebRequest.Headers.Add("Cookie","Cookie的值");
cookie不就是httpheader中的一段字符串吗?从这个httpheader中读掏出来,放到另外一个httpheader中不就好了吗?基本用不到HttpCookieCollection与CookieCollection。
办理办法
间接上代码:

varrequest=WebRequest.Create("http://ws.cnblogs.com/user/hasblog")asHttpWebRequest;request.Headers.Add("Cookie",Request.Headers["Cookie"]);using(varresponse=request.GetResponse()asHttpWebResponse){}
HttpCookieCollectiontoCookieCollection的最复杂办法就是既不必HttpCookieCollection,也不必CookieCollection。
是不是实质都是API?有的好像不只是API那么简单的,有的也是一种框架就像MFC一样。有的还是一种思想(就是做软件的思想)(好像很深奥,其实我也不懂^_^)

若相依 发表于 2015-1-20 18:58:19

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

简单生活 发表于 2015-1-24 15:15:17

代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。

乐观 发表于 2015-1-25 19:14:48

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

愤怒的大鸟 发表于 2015-1-30 11:09:56

由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。

冷月葬花魂 发表于 2015-2-2 21:49:39

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

变相怪杰 发表于 2015-2-11 03:03:48

在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。

海妖 发表于 2015-3-1 20:11:39

PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。

再见西城 发表于 2015-3-10 23:01:17

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

飘灵儿 发表于 2015-3-11 16:34:08

关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。

小魔女 发表于 2015-3-19 01:23:22

Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。

兰色精灵 发表于 2015-3-26 21:45:58

可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
页: [1]
查看完整版本: ASP.NET网页设计[ASP.NET]HttpCookieCollection to CookieCollection的最复杂办法仓酷云