【翻译】WCF4.5:更少的配置和ASP.NET更好的支持

简介: 原文地址: http://www.infoq.com/news/2012/02/WCF-4.5   Ido Flatow发表了一些列的博客,来讲述.NET4.5中关于WCF的更新 链接地址: http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx (有时间的话我会陆续翻译)   出于削减复杂性的目的,WCF自动生成的配置文件将会变得非常、非常的小。

原文地址:

http://www.infoq.com/news/2012/02/WCF-4.5

 

Ido Flatow发表了一些列的博客,来讲述.NET4.5中关于WCF的更新

链接地址:

http://blogs.microsoft.co.il/blogs/idof/archive/2011/10/05/what-s-new-in-wcf-4-5-automatic-https-endpoint-for-iis.aspx

(有时间的话我会陆续翻译)

 

出于削减复杂性的目的,WCF自动生成的配置文件将会变得非常、非常的小。自从第一个版本的WCF以来,开发人员发现他们需要维护一个大概有30个配置节的app.config文件,而这些配置节都可以用默认值来代替。谁都知道删除这些多余的设置比较好,但不幸的是,谁都没有学会这一招!在WCF 4.5中配置文件只需要设置绑定的类型和名称即可!

 

当然这导致了另一个问题:“我怎么知道这些设置是什么呢?”为了回答这个问题,我们必须知道配置文件后端的代码(与配置信息相关的代码),并且配置文件的提示并不在是基于schema的智能提示。如果你正在编辑一个endpoint,你需要知道一个behavior的名字,这个时候开发工具会把可用的behavior的名字都给你列出来。在编译时一些配置文件的错误,如契约类型(contract type)行为名称(behavior name)的错误都会被提示出来。

 

对于那些直接使用WSDL的开发人员来说,也有好消息。WCF 4.5将会在一个单独的请求中返回一个完整的WSDL。在此之前,只会包含一部分WSDL,这将需要一系列的XSD文件来匹配这个WSDL。使用?singleWsdl查询字符串取代?singleWsdl可以使用这个改进

 

把WCF服务寄宿到系统服务内是完全可行的。但大多数开发人员继续在IIS下完成大量的工作。为什么呢?因为IIS提供了很多内置的支持功能,比如身份验证,状态管理和进程回收等。但在IIS下开发WCF服务仍然有一些限制,微软也正在解决这些问题。比如:必须通过配置才能解决在两个地方的身份认证服务,如果他们由于异常而没有同步,那么这个WCF服务就会停止运行。WCF4.5通过允许服务按IIS的方式来进行身份认证(设置身份认证的方式为“继承自宿主InheritedFromHost”)除掉了此类型的BUG

 

不幸的的是这只是一个局部修复,如果IIS激活了多个身份验证类型,那么客户端只会知道第一个。当然客户端开发人员会找到另一种方法解决这个问题:他们可以使用另一种类型重写这个身份验证类型。

 

在为基于HTTPS的服务构造URIs对象时,在WSDL信息中显示了一个BUG,在.net 4中WCF有自动选择端口的特性(针对各种类型的绑定,TCP,HTTP等)不幸的是,HTTPS在那是还没有被包括进来。在.NET4.5中这些疏忽将被纠正。Ido Flatow认为HTTPS 版本是在为主机名做广告而不是访问WSDL的宿主名(host name),这些可能将成为使用web form时的问题。

 

另一个bug是关于WCF传输流数据的,Ido Flatow:

当你把WCF服务寄宿在IIS上时,即使你没有使用asp.net兼容模式,你也一样会得到asp.net处理管线的一部分。可以在MSDN文档:WCF服务和ASP.NET(查找PostAuthenticateRequest Event部分)找到相关内容。在.Net 4中,ASP.NET里有一个设计缺陷,对WCF的请求会在ASP.NET中缓冲,这些缓冲行为会引起一些副作用

这不仅仅造成处理请求的延时,更严重的是,相当大的一部分内容溢出到硬盘上了。

在WCF 4.5中解决了这个问题。

目录
相关文章
|
6月前
|
开发框架 JSON .NET
ASP.NET Core 自定义配置警告信息
自定义配置警告信息需要在 startup 类中的 ConfigureService 方法中进行配置示例: // 注册 控制器服务 services.AddControllers(configure: setup => { setup.ReturnHttpNotAcceptable = true; ...
42 0
|
3月前
|
IDE 前端开发 JavaScript
【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)
【1月更文挑战第26天】【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)
|
4月前
|
开发框架 .NET PHP
Web Deploy配置并使用Visual Studio进行.NET Web项目发布部署
Web Deploy配置并使用Visual Studio进行.NET Web项目发布部署
|
4月前
|
XML API 数据库
七天.NET 8操作SQLite入门到实战 - 第六天后端班级管理相关接口完善和Swagger自定义配置
七天.NET 8操作SQLite入门到实战 - 第六天后端班级管理相关接口完善和Swagger自定义配置
|
4月前
|
JSON JavaScript 前端开发
全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
全面的.NET微信网页开发之JS-SDK使用步骤、配置信息和接口请求签名生成详解
|
4月前
|
SQL Shell 数据库
七天.NET 8操作SQLite入门到实战 - 第二天 在 Windows 上配置 SQLite环境
七天.NET 8操作SQLite入门到实战 - 第二天 在 Windows 上配置 SQLite环境
|
6月前
|
存储 开发框架 .NET
ASP.NET Core 配置
ASP.NET Core (Startup) StartupASP.NET Core必须包含Startup类。它就像 Global.asax 文件,我们传统的 .NET 应用程序。如名称建议的那样,在应用程序启动时首先执行它。在程序类的Main方法中配置主机时,可以使用**UseStartup()**扩展方法配置启动类。请查看下面的程序类,并重点介绍 WebBuilder.UseStart...
27 0
ASP.NET Core 配置
|
7月前
|
容器
.NET Core - 选项框架:服务组件集成配置的最佳实践
.NET Core - 选项框架:服务组件集成配置的最佳实践
|
7月前
|
存储
.NET Core - 自定义配置数据源:低成本实现定制化配置方案
.NET Core - 自定义配置数据源:低成本实现定制化配置方案
|
7月前
|
JSON 数据格式
.NET Core - 配置绑定:使用强类型对象承载配置数据
.NET Core - 配置绑定:使用强类型对象承载配置数据