活着的死人 发表于 2015-1-18 11:19:59

ASP.NET教程之享用无尽头 - 改善版WCF Client仓酷云

来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!在之前的文章“让WCF客户真个“挪用”成为一种‘享用’”中,分离用Func与Action完成了WCF客户端挪用接口。
Func完成的挪用体例:
WcfClient.UseService((IUserServiceuserService)=>(userService.GetUser(userId)));弱点:
1.必要用匿名办法传送参数,写起来对照贫苦。
2.不撑持无前往值的ServiceContract。
Action完成的挪用体例:
List<ZzkDocument>docs=null;WcfClient.UseService<IZzkDocumentService>(s=>{docs=s.GetZzkDocuments("0",30).ToList();});弱点:
固然撑持了无前往值的ServiceContract,但必要在Lambda表达式中猎取前往值。如许还形成了没法利用范例判别,也就是不克不及利用vardocs。
用Action“享用”了良多次的过程当中,老是有那末一点点“不爽”环绕在心头,挥之不往。。。
2011行将已往,2012行将到来,在这辞旧换新之际,也把那一点点“不爽”辞往吧。
明天下战书,借助.NET天下中一个壮大的兵器完成了这个小小的希望,它就是表达式树——Expression<Func<TService,TReturn>>operation
先一睹挪用改善版WCFClient的风度:
varclient=newWcfClient<IZzkDocumentService>();vardocs=client.UseService(s=>s.GetZzkDocuments("0",10));然后看看WcfClient的完成代码:
publicclassWcfClient<TService>whereTService:class{publicTReturnUseService<TReturn>(Expression<Func<TService,TReturn>>operation){varchannelFactory=newChannelFactory<TService>("*");TServicechannel=channelFactory.CreateChannel();varclient=(IClientChannel)channel;client.Open();TReturnresult=operation.Compile().Invoke(channel);try{if(client.State!=CommunicationState.Faulted){client.Close();}}catch{client.Abort();}returnresult;}}关于Expression<Func<TService,TReturn>>operation,我的了解是:请你告知我,假如给你一段代码(TService),你怎样给我一个改动了的天下(TReturn)。我不体贴给你的是甚么代码,也不体贴改动后的天下是甚么模样,我只体贴你怎样改动天下。
享用无尽头,但真正让人发展与康乐的不是失掉谁人享用,而是这个寻求享用的历程。实际天下云云,代码天下也是云云。
祝人人2012年在代码天下享用更多康乐!
参考文章:
ExplainingExpression
前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。

愤怒的大鸟 发表于 2015-1-19 22:50:27

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

海妖 发表于 2015-1-25 05:56:21

比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。

只想知道 发表于 2015-1-29 06:28:46

这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。

小女巫 发表于 2015-1-31 18:36:16

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

第二个灵魂 发表于 2015-2-2 11:08:08

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

柔情似水 发表于 2015-2-7 18:29:53

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

变相怪杰 发表于 2015-2-22 20:51:10

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!

金色的骷髅 发表于 2015-2-24 04:55:37

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

简单生活 发表于 2015-2-28 02:44:29

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

谁可相欹 发表于 2015-3-9 19:23:48

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

再现理想 发表于 2015-3-17 00:16:18

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

灵魂腐蚀 发表于 2015-3-23 09:05:47

主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
页: [1]
查看完整版本: ASP.NET教程之享用无尽头 - 改善版WCF Client仓酷云