仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 822|回复: 11
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之比及花儿也谢了的await仓酷云

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。async/task/await三组合是.NETFramework4.5带给.NET开辟者的年夜礼,公道地利用它,能够进步使用程序的吞吐才能。
可是它的利用有点绕人,假如不准确利用,会带来意想不到的成绩——好比await以后一向在守候,比及花儿也谢了,也等不来。
这篇博文将向你展现我们在实践开辟中碰到的这个成绩。
先看一段ASP.NETMVC示例代码:
  1. publicclassBlogController:Controller{publicasyncTask<ActionResult>AwaitDemo(){varresponseHtml=GetResponseHtml("http://www.ckuyun.com/");returnContent(responseHtml);}privatestringGetResponseHtml(stringurl){returnGetResponseContentAsync(url).Result;}privateasyncTask<string>GetResponseContentAsync(stringurl){varhttpClient=newSystem.Net.Http.HttpClient();varresponse=awaithttpClient.GetAsync(url);if(response.StatusCode==System.Net.HttpStatusCode.OK){returnawaitresponse.Content.ReadAsStringAsync();}else{return"error";}}}
复制代码

代码申明:


  • 在下面的代码中,固然在Action办法之前加了asyncTask<ActionResult>,但因为在办法体中没有利用await,以是实践仍是以同步的体例实行的,与间接利用ActionResult是一样的。
  • GetResponseHtml是同步办法,GetResponseContentAsync是异步办法,在GetResponseHtml中挪用了异步的GetResponseContentAsync。(假如挪用的是第三方程序集,我们就不晓得在GetResponseHtml中举行了异步伐用,以是这个办法的计划是有成绩的)
这段代码实行了局会是如何呢?
——了局就是没有了局,一向在实行。。。
(注:假如在把持台使用程序中挪用一样的GetResponseHtml,不会呈现这个成绩)
那假如办理这个成绩呢:
办理办法一:在MVCAction中开启一个Task举行await
  1. publicasyncTask<ActionResult>AwaitDemo(){varresponseHtml=awaitTask.Factory.StartNew(()=>GetResponseHtml("http://www.ckuyun.com/"));returnContent(responseHtml);}
复制代码

办理办法二:将GetResponseHtml酿成异步办法
  1. publicasyncTask<ActionResult>AwaitDemo(){varresponseHtml=awaitGetResponseHtml("http://www.ckuyun.com/");returnContent(responseHtml);}privateasyncTask<string>GetResponseHtml(stringurl){returnawaitGetResponseContentAsync(url);}
复制代码

明显,第2个办理办法是更好的。
以是,我们在计划一个办法(method)时,假如挪用了async办法,必定要将这个办法自己计划为async的。否则,他人挪用时很简单踩着这个坑,然后就一向等啊等。。。比及花儿谢了,电脑冒烟了,也等不到。
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-20 18:22:27 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-28 15:34:28 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
分手快乐 该用户已被删除
地板
发表于 2015-1-29 19:33:54 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
小妖女 该用户已被删除
5#
发表于 2015-2-2 13:04:00 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
若相依 该用户已被删除
6#
发表于 2015-2-7 20:33:09 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
透明 该用户已被删除
7#
发表于 2015-2-11 20:50:46 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
小女巫 该用户已被删除
8#
发表于 2015-2-24 05:46:47 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
谁可相欹 该用户已被删除
9#
发表于 2015-3-5 07:15:29 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-6 15:45:54 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
再见西城 该用户已被删除
11#
发表于 2015-3-13 04:05:17 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
再现理想 该用户已被删除
12#
发表于 2015-3-20 11:39:32 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 08:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表