¿Qué's nuevos en Windows Communication Foundation 4.5What's New in Windows Communication Foundation 4.5

Este tema describe las características nuevas a Windows Communication Foundation (WCF).This topic discusses features new to Windows Communication Foundation (WCF).

Características de simplificación de WCFWCF Simplification Features

Se ha hecho un gran esfuerzo para simplificar el desarrollo y el mantenimiento de las aplicaciones de WCF 4.5.Much work has been done to make WCF 4.5 applications easier to develop and maintain. Para obtener más información, consulte características de simplificación de WCF.For more information, see WCF Simplification Features.

Compatibilidad asincrónica basada en tareasTask-based Async Support

De forma predeterminada, la característica Agregar referencia de servicio genera métodos de operación de servicio asincrónicos de devolución de tarea.By default, Add Service Reference generates Task-returning async service operation methods. Se realiza tanto para los métodos sincrónicos como para los asincrónicos.This is done for both synchronous and asynchronous methods. De este modo, puede llamar a las operaciones de servicio asincrónicamente mediante el nuevo modelo de programación asincrónico basado en tareas.This allows you to call the service operations asynchronously using the new Task based async programming model. Cuando llama al método proxy generado, WCF crea un objeto de tarea para representar la operación asincrónica y devuelve dicha tarea.When you call the generated proxy method, WCF constructs a Task object to represent the asynchronous operation and returns that Task to you. La tarea se completa cuando finaliza la operación.The Task completes when the operation completes. Al implementar una operación asincrónica se puede implementar como una operación asincrónica basada en tareas.When implementing an async operation you can implement it as a task-based async operation. Para obtener más información, vea sincrónica y operaciones asincrónicas.For more information see, Synchronous and Asynchronous Operations.

Archivos de configuración generados simplificadosSimplified Generated Configuration Files

Al agregar una referencia de servicio en Visual Studio o al usar la herramienta SvcUtil.exe, se genera un archivo de configuración de cliente.When you add a service reference in Visual Studio or use the SvcUtil.exe tool, a client configuration file is generated. En versiones anteriores de WCF, estos archivos de configuración contenían el valor de cada propiedad de enlace incluso si el valor era el predeterminado.In previous versions of WCF these configuration files contained the value of every binding property even if its value is the default value. En WCF 4.5, los archivos de configuración generados solo contienen las propiedades de enlace que se establecen en un valor no predeterminado.In WCF 4.5 the generated configuration files contain only those binding properties that are set to a non-default value.

Para obtener más información, vea características de simplificación de WCFFor more information, see WCF Simplification Features

Desarrollo de contrato primeroContract-First Development

WCF admite ahora el desarrollo de contrato primero.WCF now has support for contract-first development. Svcutl.exe tiene un modificador /serviceContract que permite generar contratos de servicio y datos a partir de un documento WSDL.The svcutl.exe has a /serviceContract switch which allows you to generate service and data contracts from a WSDL document.

Agregar referencia de servicio desde un proyecto de subconjuntos portátilesAdd Service Reference from a Portable Subset Project

Los proyectos de subconjuntos portátiles permiten a los programadores de ensamblados .NET mantener un único árbol de origen y un sistema de compilación a la vez que se admiten varias plataformas .NET (escritorio, Silverlight, Windows Phone y XBOX).Portable subset projects enable .NET assembly programmers to maintain a single source tree and build system while still supporting multiple .NET platforms (desktop, Silverlight, Windows Phone, and XBOX). Proyectos de subconjuntos portátiles solo hacen referencia a bibliotecas portátiles de .NET que son un ensamblado de .NET framework que se puede usar en cualquier plataforma. NET.Portable subset projects only reference .NET portable libraries which are a .NET framework assembly that can be used on any .NET platform. La experiencia del desarrollador es igual que agregar una referencia de servicio en cualquier otra aplicación cliente de WCF.The developer experience is the same as adding a service reference within any other WCF client application. Para obtener más información, consulte Agregar referencia de servicio en un proyecto de subconjuntos portátiles.For more information, see Add Service Reference in a Portable Subset Project.

Valor predeterminado del modo de compatibilidad de ASP.NET cambiadoASP.NET Compatibility Mode Default Changed

WCF proporciona el modo de compatibilidad de ASP.NET para conceder a los desarrolladores acceso total a las características en la canalización HTTP de ASP.NET al escribir servicios WCF.WCF provides ASP.NET compatibility mode to grant developers full access to the features in the ASP.NET HTTP pipeline when writing WCF services. Para usar este modo, debe establecer el aspNetCompatibilityEnabled atributo como true en la <serviceHostingEnvironment > sección del archivo web.config. Además, cualquier servicio de este appDomain debe tener la propiedad RequirementsMode en su AspNetCompatibilityRequirementsAttribute establecida en Allowed o en Required.To use this mode, you must set the aspNetCompatibilityEnabled attribute to true in the <serviceHostingEnvironment> section of web.config. Additionally, any service in this appDomain needs to have the RequirementsMode property on its AspNetCompatibilityRequirementsAttribute set to Allowed or Required. De forma predeterminada AspNetCompatibilityRequirementsAttribute ahora está establecida en Allowed.By default AspNetCompatibilityRequirementsAttribute is now set to Allowed. Para obtener más información, consulte ¿qué novedades presenta Windows Communication Foundation y servicios WCF y ASP.NET.For more information, see What's New in Windows Communication Foundation and WCF Services and ASP.NET.

Nuevos valores de transporte predeterminadosNew Transport Default Values

Para simplificar la configuración, han cambiado varios valores de propiedad de transporte predeterminados.In order to simplify configuration a number of transport property default values have changed. Para obtener más información, consulte características de simplificación de WCF.For more information, see WCF Simplification Features.

XmlDictionaryReaderQuotasXmlDictionaryReaderQuotas

XmlDictionaryReaderQuotas contiene valores de cuota configurables para los lectores de diccionario de XML que restringen la cantidad de memoria usada por un codificador mientras se crea un mensaje.XmlDictionaryReaderQuotas contains configurable quota values for XML dictionary readers which limit the amount of memory utilized by an encoder while creating a message. Aunque estas cuotas son configurables, los valores predeterminados han cambiado para reducir la posibilidad de que un desarrollador tenga que establecerlas explícitamente.While these quotas are configurable, the default values have changed to lessen the possibility that a developer will have to set them explicitly. Para obtener más información, consulte características de simplificación de WCF.For more information, see WCF Simplification Features.

Validación de la configuración de WCFWCF Configuration Validation

Como parte del proceso de compilación en Visual Studio, los archivos de configuración de WCF se validan ahora para los atributos definidos en el proyecto.As part of the build process within Visual Studio, WCF configuration files are now validated for attributes defined within the project. Se muestra una lista de errores de validación o advertencias en Visual Studio si se produce un error en la validación.A list of validation errors or warnings is displayed in Visual Studio if the validation fails.

Información sobre herramientas del editor XMLXML Editor Tooltips

Para ayudar a los desarrolladores de servicios WCF nuevos y existentes a configurar sus servicios, el Editor XML de Visual Studio proporciona ahora información sobre herramientas para cada elemento de configuración que forma parte del archivo de configuración del servicio y sus propiedades.In order to help new and existing WCF service developers to configure their services, the Visual Studio XML editor now provides tooltips for every configuration element and its properties that is part of the service configuration file.

Mejoras en streamingStreaming Improvements

Se agregó compatibilidad con el verdadero streaming asincrónico donde el lado de envío ahora no bloquea los subprocesos si el lado de recepción no está leyendo o lee despacio, lo que aumenta la escalabilidad.Added support for true asynchronous streaming where the send side now does not block threads if the receive side is not reading or slow in reading thereby increasing scalability. Se quitó la limitación de almacenamiento en búfer de mensaje cuando un cliente envía un mensaje transmitido por secuencias a un servicio WCF hospedado en IIS.Removed the limitation of message buffering when a client sends a streamed message to an IIS hosted WCF service. Para obtener más información, consulte características de simplificación de WCF.For more information, see WCF Simplification Features.

Simplificar la exposición de un punto de conexión sobre HTTPS con IISSimplifying Exposing an Endpoint Over HTTPS with IIS

Se ha agregado una asignación de protocolo HTTPS para simplificar la exposición de un extremo sobre HTTPS.An HTTPS protocol mapping has been added to simplify exposing an endpoint over HTTPS. Para habilitar un extremo HTTPS, asegúrese de que el sitio web tenga un enlace HTTPS y un certificado SSL configurado y, a continuación, habilite simplemente HTTPS para el directorio virtual que hospeda el servicio.To enable an HTTPS endpoint, ensure your website has an HTTPS binding and SSL certificate configured, and then simply enable HTTPS for the virtual directory that hosts the service. Si los metadatos están habilitados para el servicio, también se expondrán mediante HTTPS.If metadata is enabled for the service, it will be exposed over HTTPS as well.

Generar un único documento WSDLGenerating a Single WSDL Document

Algunas pilas de procesamiento WSDL de terceros no pueden procesar los documentos WSDL que tienen dependencias de otros documentos mediante xsd:import.Some third-party WSDL processing stacks are not able to process WSDL documents that have dependencies on other documents through a xsd:import. WCF permite especificar ahora que toda la información del WSDL se devuelva en un único documento.WCF now allows you to specify that all WSDL information be returned in a single document. Para solicitar un solo documento WSDL anexar "? singleWSDL" al URI al solicitar metadatos del servicio.To request a single WSDL document append "?singleWSDL" to the URI when requesting metadata from the service.

Compatibilidad de WebSocketWebSocket Support

WebSockets es una tecnología que proporciona comunicación bidireccional verdadera por los puertos 80 y 443 con características de rendimiento similares a TCP.WebSockets is a technology that provides true bidirectional communication over ports 80 and 443 with performance characteristics similar to TCP. Se han agregado dos nuevos enlaces para admitir la comunicación mediante un transporte WebSocket.Two new bindings have been added to support communication over a WebSocket transport. NetHttpBinding y NetHttpsBinding.NetHttpBinding and NetHttpsBinding. Para obtener más información, consulte: enlaces proporcionados.For more information see: System-Provided Bindings.

Nuevos valores de transporte predeterminadosNew Transport Default Values

En la tabla siguiente se describen los valores que han cambiado y dónde encontrar información adicional.The following table describes the settings that have changed and where to find additional information.

PropertyProperty ActivadoOn Nuevo valor predeterminadoNew Default Para obtener más información, veaFor more information see
channelInitializationTimeoutchannelInitializationTimeout NetTcpBinding 30 segundos30 seconds ChannelInitializationTimeout
listenBackloglistenBacklog NetTcpBinding 12 * número de procesadores12 * number of processors ListenBacklog
maxPendingAcceptsmaxPendingAccepts ConnectionOrientedTransportBindingElementConnectionOrientedTransportBindingElement

SMSvcHost.exeSMSvcHost.exe
2 * número de procesadores para transporte2 * number of processors for transport

4 * número de procesadores para SMSvcHost.exe4 * number of processors for SMSvcHost.exe
MaxPendingAccepts Configurar el servicio de uso compartido de puertos Net.TCPMaxPendingAccepts Configuring the Net.TCP Port Sharing Service
maxPendingConnectionsmaxPendingConnections ConnectionOrientedTransportBindingElementConnectionOrientedTransportBindingElement 12 * número de procesadores12 * number of processors MaxPendingConnections
receiveTimeoutreceiveTimeout SMSvcHost.exeSMSvcHost.exe 30 segundos30 seconds Configuración del servicio de uso compartido de puertos Net.TCPConfiguring the Net.TCP Port Sharing Service

Información sobre herramientas del editor XMLXML Editor Tooltips

Para ayudar a los desarrolladores de servicios WCF nuevos y existentes a configurar sus servicios, el Editor XML de Visual Studio proporciona ahora información sobre herramientas para cada elemento de configuración que forma parte del archivo de configuración del servicio y sus propiedades.In order to help new and existing WCF service developers to configure their services, the Visual Studio XML editor now provides tooltips for every configuration element and its properties that is part of the service configuration file.

Configurar servicios WCF en el códigoConfiguring WCF Services in Code

Windows Communication Foundation (WCF) permite a los desarrolladores configurar servicios mediante archivos de configuración o código.Windows Communication Foundation (WCF) allows developers to configure services using configuration files or code. Los archivos de configuración son útiles cuando un servicio se debe configurar después de implementarse.Configuration files are useful when a service needs to be configured after being deployed. Cuando se usan archivos de configuración, un profesional de TI solo debe actualizar el archivo de configuración; no es necesario que realice ninguna recompilación.When using configuration files, an IT professional only needs to update the configuration file, no recompilation is required. Los archivos de configuración, sin embargo, pueden ser complejos y difíciles de mantener.Configuration files, however, can be complex and difficult to maintain. No se admite la depuración de archivos de configuración y se hace referencia a los elementos de configuración por nombre, con lo que la creación de archivos de configuración resulta propensa a errores y difícil.There is no support for debugging configuration files and configuration elements are referenced by names which makes authoring configuration files error-prone and difficult. WCF también permite configurar servicios en el código.WCF also allows you to configure services in code. En versiones anteriores de servicios de configuración de WCF (4.0 y anteriores) en código era sencilla en escenarios autohospedados; la ServiceHost clase permitía configurar extremos y comportamientos antes de llamar a ServiceHost.Open.In earlier versions of WCF (4.0 and earlier) configuring services in code was easy in self-hosted scenarios, the ServiceHost class allowed you to configure endpoints and behaviors prior to calling ServiceHost.Open. En escenarios hospedados en web, sin embargo, no tiene acceso a la clase ServiceHost.In web hosted scenarios, however, you don’t have access to the ServiceHost class. Para configurar un servicio hospedado en web era necesario crear un System.ServiceModel.ServiceHostFactory que creó el ServiceHostFactory y realizar cualquier configuración necesaria.To configure a web hosted service you were required to create a System.ServiceModel.ServiceHostFactory that created the ServiceHostFactory and performed any needed configuration. A partir de .NET 4.5, WCF proporciona una manera más fácil de configurar ambos hospeda a sí mismo y servicios en el código hospedado en web.Starting with .NET 4.5, WCF provides an easier way to configure both self-hosted and web hosted services in code. Para obtener más información, consulte configurar servicios de WCF en el código.For more information, see Configuring WCF Services in Code.

Almacenamiento en caché de ChannelFactoryChannelFactory Caching

Las aplicaciones cliente de WCF usan la clase ChannelFactory<TChannel> para crear un canal de comunicación con un servicio WCF.WCF client applications use the ChannelFactory<TChannel> class to create a communication channel with a WCF service. La crear de instancias de ChannelFactory<TChannel> genera sobrecarga porque implica las siguientes operaciones:Creating ChannelFactory<TChannel> instances incurs some overhead because it involves the following operations:

  1. Construir el árbol ContractDescriptionConstructing the ContractDescription tree

  2. Reflejar todos los tipos de CLR necesariosReflecting all of the required CLR types

  3. Construir la pila del canalConstructing the channel stack

  4. Desechar recursosDisposing of resources

Para ayudar a reducir esta sobrecarga, WCF puede almacenar en caché los generadores de canal cuando se usa un proxy de cliente de WCF.To help minimize this overhead, WCF can cache channel factories when you are using a WCF client proxy. Para obtener más información, consulte generador de canales y almacenamiento en caché.For more information, see Channel Factory and Caching.

Compresión y el codificador binarioCompression and the Binary Encoder

A partir de WCF 4.5, el codificador binario de WCF agrega compatibilidad con la compresión.Beginning with WCF 4.5 the WCF binary encoder adds support for compression. El tipo de compresión se configura con la propiedad CompressionFormat.The type of compression is configured with the CompressionFormat property. Tanto el cliente como el servicio deben configurar la propiedad CompressionFormat.Both the client and the service must configure the CompressionFormat property. La compresión funcionará para los protocolos HTTP, HTTPS y TCP.Compression will work for HTTP, HTTPS, and TCP protocols. Si un cliente especifica usar compresión pero el servicio no la admite, se produce una excepción de protocolo que indica que no coinciden los protocolos.If a client specifies to use compression but the service does not support it a protocol exception is thrown indicating a protocol mismatch. Para obtener más información, vea elegir un codificador de mensajesFor more information, see Choosing a Message Encoder

UDPUDP

Se ha agregado compatibilidad para un transporte UDP que permite a los desarrolladores escribir servicios que usan "desencadenar y omitir" de mensajería.Support has been added for a UDP transport which allows developers to write services that use "fire and forget" messaging. Un cliente envía un mensaje a un servicio y no espera ninguna respuesta de él.A client sends a message to a service and expects no response from the service.

Compatibilidad con autenticación múltipleMultiple Authentication Support

Se ha agregado compatibilidad para admitir varios modos de autenticación, como compatibles con IIS, en un solo punto de conexión de WCF cuando se usa el transporte HTTP y la seguridad de transporte.Support has been added to support multiple authentication modes, as supported by IIS, on a single WCF endpoint when using the HTTP transport and transport security. IIS permite habilitar varios modos de autenticación en un directorio virtual; esta característica permite que un solo punto de conexión WCF admita los distintos modos de autenticación habilitados para el directorio virtual donde se hospeda el servicio WCF.IIS allows you to enable multiple authentication modes on a virtual directory, this feature allows a single WCF endpoint to support the multiple authentication modes enabled for the virtual directory where the WCF service is hosted.

Compatibilidad con IDNIDN Support

Se ha agregado compatibilidad para permitir servicios WCF con nombres de dominio internacionalizados.Support has been added to allow for WCF services with Internationalized Domain Names. Para obtener más información, consulte WCF y nombres de dominio internacionalizados.For more information see WCF and Internationalized Domain Names.

HttpClientHttpClient

Se ha agregado una nueva clase denominada HttpClient para simplificar el trabajo con solicitudes HTTP.A new class called HttpClient has been added to make working with HTTP requests much easier. Para obtener más información, consulte hacer que las aplicaciones sociales y está conectado a los servicios HTTP y ejemplo de cliente HTTP.For more info, see Making apps social and connected with HTTP services and the HTTP Client Sample.

IntelliSense de configuraciónConfiguration Intellisense

Los valores de atributo de los archivos de configuración para los atributos personalizados definidos en el proyecto ahora admiten IntelliSense para facilitar el trabajo con configuraciones de forma rápida y precisa.Attribute values in configuration files for custom attributes defined in the project now support intellisense to facilitate working with configurations quickly and accurately.

Información sobre herramientas de configuraciónConfiguration tooltips

Atributos y elementos de WCF ahora tienen información sobre herramientas en el editor XML, que más fácilmente e identifican con precisión el propósito del elemento o atributo.WCF elements and attributes now have tooltips in the XML editor, to more easily and accurately identify the purpose of the element or attribute.

Pegar datos como clasesPaste Data as Classes

En un proyecto de WCF, los tipos de datos definidos en XML (como los expuestos en un servicio) se pueden pegar directamente en una página de códigos.In a WCF project, data types defined in XML (such as are exposed in a service) can be pasted directly into a code page. El tipo XML se pegará como un tipo de CLR.The XML type will be pasted as a CLR type. Vea generar clases de tipos de datos desde XML para obtener más detalles.See Generating Data Type Classes from XML for more details.

WebServiceHost y los puntos de conexión predeterminadosWebServiceHost and default endpoints

En Visual Studio 2010, WebServiceHost creaba automáticamente un punto de conexión predeterminado sin importar si se había especificado explícitamente un punto de conexión o no.In Visual Studio 2010, WebServiceHost automatically created a default endpoint whether you explicitly specified an endpoint or not. En Visual Studio 2012, WebServiceHost solo creará un extremo predeterminado si no se agrega ningún extremo explícitamente.In Visual Studio 2012 WebServiceHost will only create a default endpoint if no endpoints are explicitly added. Si el cliente espera el extremo predeterminado, se puede agregar explícitamente un extremo y dirigir el cliente a él.If your client is expecting the default endpoint you can explicity add an endpoint and point the client to it. Como alternativa, puede pedirle a WCF que vuelva al comportamiento anterior; para ello, agregue la siguiente configuración al archivo de configuración de aplicacionesAlternatively, you can tell WCF to revert back to the previous behavior by adding the following setting to you application’s configuration file

<appSettings>  
    <add key="wcf:webservicehost:enableautomaticendpointscompatability" value="true"/>  
  </appSettings>  

IHttpCookieContainerManagerIHttpCookieContainerManager

Esta interfaz, expuesta por IChannelFactory<TChannel>, facilita considerablemente el trabajo con cookies en el lado cliente.This interface, exposed by IChannelFactory<TChannel>, makes working with cookies on the client side much easier. Cuando AllowCookies se establece en true en el enlace, puede obtener acceso a las cookies con el siguiente código:When AllowCookies is set to true on the binding, you can access cookies by using the following code:

IHttpCookieContainerManager cookieManager = factory.GetProperty<IHttpCookieContainerManager>();   
System.Net.CookieContainer container = cookieManager.CookieContainer;  

A continuación, puede establecer o recuperar las cookies desde CookieContainer.You can then retrieve or set the cookies from the CookieContainer. Cuando AllowCookies se establece en false, puede recuperar manualmente las cookies mediante OperationContext y enviarlo en otras solicitudes con otro OperationContext o inspector de mensaje.When AllowCookies is set to false, you can manually retrieve the cookies using OperationContext and send it in other requests using another OperationContext or message inspector. La interfaz de IHttpCookieContainerManager permite autenticar un usuario con un servicio y usar la cookie de autenticación devuelta por dicho servicio para autenticar con otros servicios.The IHttpCookieContainerManager interface allows you to authenticate a user with a service and use the authentication cookie returned by that service to authenticate with other services.