BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

WCF 4.5:配置文件更小,对ASP.NET的支持更好

| 作者 Jonathan Allen 关注 530 他的粉丝 ,译者 侯伯薇 关注 0 他的粉丝 发布于 2012年3月3日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Ido Flatow最近发布了一篇文章,其中讲述了一系列WCF将在.NET 4.5中做出的变更

由于减少了噪音,WCF自动生成的配置文件会大大减小。从WCF的第一个版本开始,开发者就发现他们需要维护有接近30种设定的app.config文件,而事实上都只是默认值。了解配置文件的人会删除冗余的设定,但是遗憾的是很多人都没有学到这项技巧。有了WCF 4.5,配置文件默认只会有绑定类型和名称。

当然,这会引出相关的培训问题,“我怎么知道设定都是什么呢?” 为了回答这个问题,我们还会在配置文件中看到消息提示和自动完成的功能。这不仅仅是基于schema的提示;如果你在配置终端,要行为或者配置的名称,它就会非常智能地帮你列举出来。如果配置项、契约类型或者行为名称的拼写有误,这甚至会包括对编译器警告的支持。

对于那些直接使用WSDL的人,也有好消息。WCF 4.5现在会在单独的请求中返回完整的WSDL。而之前,它只会包括部分WSDL,还需要获取一系列匹配的XSD文件。想要使用这种方法,你需要使用?singleWsdl查询字符串而不是?singleWsdl。

尽管把WCF部署在Windows服务中是完全可以接受的,但是大多数开发者会在工作中继续使用IIS。为什么不呢,IIS提供了对很多特性的内建支持,像身份验证、状态管理以及过程回收等。但是在这个模型中还有一些微软正在努力解决的限制。例如,当前开发者需要在两个地方配置哪种身份验证方式能够得到支持。如果他们意外忘记了sync,那么服务就会停止运行。WCF 4.5让开发者可以把验证方式类型设置为“InheritedFromHost”,让服务遵从IIS的方式,从而避免了这类特定的缺陷。

遗憾的是,这只是部分的修正。如果IIS正好启用了多种身份验证类型,那么客户端只会承认第一个。客户端开发者可以对其重写以使用另一种类型,但前提是他们可以找到另一种方式。请注意这完全是客户端工具的问题,WSDL会列出所有选项。

在WSDL中存在的缺陷在于为HTTPS服务端口创建URI的方面。从.NET 4.0开始,WCF就有了为每种绑定类型(HTTP、TCP等)自动生成端口的选项。遗憾的是,HTTPS并没有在那次包含进来,这个疏忽会在.NET 4.5中改正。Ido Flatow提到,HTTPS的版本会发送机器名而不是用来请求WSDL的主机名。当使用web场的时候这会导致问题。

另一种缺陷在于WCF使用流数据的方式。Ori认为,

当你把WCF服务部署在IIS中时,即便你不使用ASP.NET兼容模式,也会占用一些ASP.NET的管道,这在MSDN的文章《WCF 服务和ASP.NET》中有记录(你需要查找关于PostAuthenticateRequest事件的部分)。在.NET 4中存在ASP.NET方面的设计缺陷,它会导致传送给WCF的请求缓存在ASP.NET中。这种缓存行为会导致多种主要的副作用:

这不仅会让处理请求产生延迟,特别庞大的内容甚至会溢出到硬盘上。这也会在WCF 4.5中得到修正。

查看英文原文:Lighter Configuration Files and Better ASP.NET Support with WCF 4.5

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT