仓酷云

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

[学习教程] ASP.NET网页编程之WCF异步伐用实战:用OneWay而不是Asynchronous Operation仓酷云

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:20:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

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

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

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


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

本版积分规则

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

GMT+8, 2024-5-2 11:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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