仓酷云

标题: ASP.NET网页编程之WCF异步伐用实战:用OneWay而不是Asynchronous Operation仓酷云 [打印本页]

作者: 冷月葬花魂    时间: 2015-1-18 11:20
标题: ASP.NET网页编程之WCF异步伐用实战:用OneWay而不是Asynchronous Operation仓酷云
说句实话,net网页编程跨平台根本就不是外行人想想的那种,一次编译,处处运行。比来,博客园博客批评、博问回覆、闪存城市呈现一样的成绩,偶然提交出格慢,乃至一次提交长达6秒摆布。
经由过程日记剖析发明,引发速率慢的操纵产生在挪用WCF服务时。好比,我在一篇博文中宣布了一个批评,批评内容被保留到数据库以后,还会挪用WCF服务,天生一条“博客批评”静态,如许在园子里存眷我的人就可以看到这条静态。
因为静态的操纵频仍,数据量年夜,是一个绝对耗时的操纵,我们但愿这个操纵不要影响以后程序的实行,以是,接纳异步操纵是一个公道的选择。并且这是一个不必要前往值的异步操纵。
我们想固然地在WCF客户端天生代办署理类时选择了“Generateasynchronousoperations”,天生了客户端异步操纵的代办署理类,然后挪用异步办法client.AddAsync()。
ASP.NET网页编程之WCF异步伐用实战:用OneWay而不是Asynchronous Operation仓酷云
登录/注册后可看大图

但是,接纳如许的异步伐用以后,发明成绩仍然存在。
这类异步伐用办法叫“异步信道挪用”:
客户端经由过程绑定创立的信道向服务端发送动静,从而完成了对服务的挪用,不论动静经由过程信道向服务端发送的体例是同步的(接纳哀求-复兴MEP举行动静互换)仍是异步的(接纳单向MEP举行动静互换),客户端程序都能够经由过程代办署理对象异步地挪用信道,从而完成异步服务挪用;
欲解概况,请移步Artech的博客...-》WCF手艺分析之十一:异步操纵在WCF中的使用(上篇)。
这个异步伐用是针对信道(Channel)的,与服务端有关,也就是WCF客户端改成异步以后,服务端不必要作任何修正。
此路欠亨,只能绕行...
因而,我们改用WCF服务端异步,正确的说法是“异步服务虚现”(服务端在详细完成服务操纵的时分,接纳异步伐用的体例。-援用自异步操纵在WCF中的使用(上篇))。怎样完成呢?碰到WCF成绩,固然要往园子里当之无愧的WCF专家博客。参考了WCF手艺分析之十一:异步操纵在WCF中的使用(下篇),我们服务真个WCF也异步了。
但是,欣喜没有呈现,成绩仍旧。
此路仍是欠亨,只能持续绕行,成绩是往那里绕?
我们经由过程测试进一步确认了成绩,在WCF服务端完成办法中间接将以后线程sleep:
  1. Thread.Sleep(50000);
复制代码
经由测试发明,不论客户端是同步还异步,服务端是同步仍是异步,都跳不外这个Sleep工夫。岂非是我们对这里的异步了解错了?(厥后发明,切实其实是了解错了)
碰到手艺困难找Google,Google一样平常找StackOverflow(这两人情感很好),找到一个线索:
ASP.NET网页编程之WCF异步伐用实战:用OneWay而不是Asynchronous Operation仓酷云
登录/注册后可看大图

本来,之前的办法不论用甚么步,都要等服务真个办法实行全体完成,而异步只是在刊行异步伐用以后,不必干等,能够干其他事变。但全部实行仍是要等异步办法实行完成并前往。
而我们的需求就倡议异步伐用以后,就走人,不论实行了局怎样,如许才干包管异步伐用对以后程序的实行速率影响最小。
而WCF已思索了这个需求,供应懂得决计划:[OperationContract(IsOneWay=true)],见上图中的代码。
转头看看Artech的文章,也提到了这个:
单向(One-way)动静互换:客户真个信道经由过程单向的动静互换形式向服务端发送动静,动静一旦到达传输层即刻前往,从而到达异步服务挪用的效果。
绕行两次,终究走上邪道!
接纳IsOneWay办理计划后,成绩即刻办理。
必要注重的中央:

小结
在碰到成绩并举行办理的时分,是进修效力最高、进修热忱最高的时分,不要稳扎稳打,将成绩相干的常识了解透了,办理办法会俄然而至。成绩办理以后,写一篇博客,将在办理成绩过程当中学到的常识收拾一下,将零星的常识点构造起来,你将会有更进一步的劳绩。
在办理成绩中进修,在办理成绩后分享,在进修与分享中发展!
前天傍晚我发表了《net网页编程的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。
作者: 飘飘悠悠    时间: 2015-1-19 22:53
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
作者: 活着的死人    时间: 2015-1-25 07:25
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
作者: 只想知道    时间: 2015-1-26 09:49
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
作者: 兰色精灵    时间: 2015-2-4 13:38
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
作者: 小妖女    时间: 2015-2-7 17:09
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
作者: 精灵巫婆    时间: 2015-2-18 15:43
对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。
作者: 愤怒的大鸟    时间: 2015-3-6 08:30
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
作者: 再现理想    时间: 2015-3-11 11:47
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
作者: 金色的骷髅    时间: 2015-3-18 09:20
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
作者: 分手快乐    时间: 2015-3-25 14:53
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2