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

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:WCF 4.5:配置文件更小,对ASP.NET的支持更好

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云瓣

Git分支合并选择

   用Git进行多人协作开发时,必然会合并代码,解决冲突。然而合并代码也是需要点技巧的,如果对一些关键命令没有理解去使用的话,git的版本演进路线就会变得很乱...

2675
来自专栏张善友的专栏

微软发布TX(LINQ To Logs And Traces)

微软开源技术公司于发布了Tx,这是一个Apache 2协议的开源项目,可以使用日志/跟踪文件辅助调试,以及创建实时监控和告警系统。 下面是几个引人关注的功能——...

2076
来自专栏aCloudDeveloper

Kubernetes 笔记 02 demo 初体验

从前面的文章我们知道,Kubernetes 脱胎于 Google 的 Borg,Borg 在 Kubernetes 诞生之初已经在 Google 内部身经百战 ...

1624
来自专栏Golang语言社区

转--Stackful 协程库 libgo(单机100万协程)

libgo 是一个使用 C++ 编写的协作式调度的stackful协程库, 同时也是一个强大的并行编程库。 设计之初是为高并发分布式Linux服务端程序开发提供...

5579
来自专栏遊俠扎彪

如何使用Python中的帮助

其实学一门新语言,或是接触一个新东西,真的要注意其自带的帮助文档,比如各种manual、内嵌的帮助命令等等,尤其是是在Linux/UNIX领域。

2209
来自专栏向治洪

iOS入门之打包静态库

在项目开发中,或多或少的都会使用第三方库,有时候也会将自己项目中独立于业务的相关代码打包成库以供别人使用。在Android开发中,一般打包为aar或者jar文件...

2975
来自专栏bboysoul

一个centos初始化脚本

这个是给最小化安装的centos使用的,在centos 7.5上测试过,当然其他的centos系统一般也没有什么问题,欢迎反馈,测试还有提交建议

2334
来自专栏恰童鞋骚年

Linux下的.NET之旅:第一站,CentOS+Mono+Xsp构建最简单的ASP.NET服务器

  由于Linux/Unix等有更强的安全性、运行效率高、拥有大量优秀的开源组件,而.Net则有着其他语言无与伦比的开发效率,因此在非微软平台下运行.Net程序...

1594
来自专栏Linux驱动

1.电源管理-4种休眠方式状态

2603
来自专栏林德熙的博客

win10 uwp MetroLog 入门

在实际的项目,需要做很多记录,记录日志可以作为调试。在 UWP 如果自己写日志,放在文件,那么需要很多重复代码。 在 UWP 写文件是很慢,而且需要异步,所以很...

3102

扫码关注云+社区

领取腾讯云代金券