Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico discute recursos novos no Windows Communication Foundation (WCF) versão 4.5.
gRPC como uma alternativa ao WCF
gRPC é uma estrutura RPC moderna que é uma alternativa popular ao WCF. O gRPC é criado com base em HTTP/2, o que fornece uma série de vantagens em relação ao WCF, incluindo:
- Desempenho: gRPC é muito mais eficiente do que o WCF, especialmente para conexões de longa execução.
- Escalabilidade: o gRPC foi projetado para dimensionar para um grande número de clientes e servidores.
- Segurança: o gRPC dá suporte a uma variedade de mecanismos de segurança, incluindo TLS e autenticação.
- Multiplataforma: o gRPC é neutro em plataforma e pode ser usado com uma variedade de linguagens de programação.
Para obter mais informações sobre como desenvolver ou migrar aplicativos WCF para gRPC, consulte:
- Por que recomendamos gRPC para desenvolvedores do WCF
- Comparando WCF com gRPC
- Introdução ao gRPC para desenvolvedores do WCF
Recursos de simplificação do WCF
Muito trabalho foi feito para tornar os aplicativos WCF 4.5 mais fáceis de desenvolver e manter. Para obter mais informações, consulte recursos de simplificação do WCF.
Suporte assíncrono baseado em tarefa
Por padrão, Adicionar Referência de Serviço gera métodos de operação de serviço assíncrono que retornam tarefas. Isso é feito para métodos síncronos e assíncronos. Isso permite que você chame as operações de serviço de forma assíncrona usando o novo modelo de programação assíncrona baseado em tarefa. Quando você chama o método proxy gerado, o WCF constrói um objeto Task para representar a operação assíncrona e retorna essa Tarefa para você. A Tarefa é concluída quando a operação é concluída. Ao implementar uma operação assíncrona, você pode implementá-la como uma operação assíncrona baseada em tarefas. Para obter mais informações, consulte operações síncronas e assíncronas.
Arquivos de configuração gerados simplificados
Quando você adiciona uma referência de serviço no Visual Studio ou usa a ferramenta SvcUtil.exe, um arquivo de configuração do cliente é gerado. Nas versões anteriores do WCF, esses arquivos de configuração continham o valor de cada propriedade de associação, mesmo que seu valor seja o valor padrão. No WCF 4.5, os arquivos de configuração gerados contêm apenas as propriedades de associação definidas como um valor não padrão.
Para obter mais informações, consulte recursos de simplificação do WCF.
Desenvolvimento de primeiro contrato
O WCF agora tem suporte para desenvolvimento do primeiro contrato. O svcutil.exe tem uma opção /serviceContract que permite gerar contratos de serviço e dados de um documento WSDL.
Adicionar Referência de Serviço a Partir de um Projeto Subconjunto Portável
Projetos de subconjunto portátil permitem que os programadores de assembly do .NET mantenham uma única árvore de origem e um sistema de build, enquanto ainda dão suporte a várias plataformas .NET (desktop, Silverlight, Windows Phone e Xbox). Projetos de subconjunto portátil fazem referência apenas a bibliotecas portáteis do .NET que são assemblies que podem ser usados em qualquer plataforma .NET. A experiência do desenvolvedor é a mesma que adicionar uma referência de serviço em qualquer outro aplicativo cliente WCF. Para obter mais informações, consulte Adicionar referência de serviço em um projeto de subconjunto portátil.
Padrão do modo de compatibilidade do ASP.NET alterado
O WCF fornece o modo de compatibilidade do ASP.NET para conceder aos desenvolvedores acesso total aos recursos do pipeline HTTP do ASP.NET ao desenvolver serviços WCF. Para usar este modo, você deve definir o atributo aspNetCompatibilityEnabled como true no elemento <serviceHostingEnvironment> de web.config. Além disso, qualquer serviço neste appDomain precisa ter a propriedade RequirementsMode em seu AspNetCompatibilityRequirementsAttribute definida como Allowed ou Required. Por padrão AspNetCompatibilityRequirementsAttribute , agora está definido como Allowed. Para obter mais informações, consulte WCF Services e ASP.NET.
Novos valores padrão de transporte
Para simplificar a configuração, vários valores padrão da propriedade de transporte foram alterados. Para obter mais informações, consulte recursos de simplificação do WCF.
XmlDictionaryReaderQuotas
XmlDictionaryReaderQuotas contém valores de cota configuráveis para leitores de dicionário XML que limitam a quantidade de memória utilizada por um codificador durante a criação de uma mensagem. Embora essas cotas sejam configuráveis, os valores padrão foram alterados para diminuir a possibilidade de que um desenvolvedor tenha que defini-las explicitamente. Para obter mais informações, consulte recursos de simplificação do WCF.
Validação de configuração do WCF
Como parte do processo de build no Visual Studio, os arquivos de configuração do WCF agora são validados para atributos definidos dentro do projeto. Uma lista de erros ou avisos de validação será exibida no Visual Studio se a validação falhar.
Dicas de ferramentas do Editor XML
Para ajudar os desenvolvedores de serviços WCF novos e existentes a configurar seus serviços, o editor do Visual Studio XML agora fornece dicas de ferramentas para cada elemento de configuração e suas propriedades que fazem parte do arquivo de configuração de serviço.
Melhorias de streaming
Adicionado suporte para streaming assíncrono verdadeiro em que o lado de envio agora não bloqueia threads se o lado de recebimento não estiver lendo ou lento na leitura, aumentando assim a escalabilidade. Foi removida a limitação do buffer de mensagens quando um cliente envia uma mensagem transmitida para um serviço WCF hospedado pelo IIS. Para obter mais informações, consulte recursos de simplificação do WCF.
Simplificando a exposição de um endpoint via HTTPS com o IIS
Um mapeamento de protocolo HTTPS foi adicionado para facilitar a exposição de um endpoint por HTTPS. Para habilitar um ponto de extremidade HTTPS, verifique se seu site tem uma associação HTTPS e um certificado SSL configurados e, em seguida, simplesmente habilite HTTPS para o diretório virtual que hospeda o serviço. Se os metadados estiverem habilitados para o serviço, ele também será exposto via HTTPS.
Gerando um único documento WSDL
Algumas stacks de processamento WSDL de terceiros não são capazes de processar documentos WSDL com dependências de outros documentos via xsd:import. O WCF agora permite que você especifique que todas as informações do WSDL sejam retornadas em um único documento. Para solicitar um único documento WSDL, acrescente "?singleWSDL" ao URI ao solicitar metadados do serviço.
Suporte do WebSocket
WebSockets é uma tecnologia que fornece comunicação bidirecional verdadeira nas portas 80 e 443 com características de desempenho semelhantes ao TCP. Duas novas associações foram adicionadas para dar suporte à comunicação por meio de um transporte WebSocket. NetHttpBinding e NetHttpsBinding. Para obter mais informações, consulte: Bindings fornecidos pelo sistema.
Novos valores padrão de transporte
A tabela a seguir descreve as configurações que foram alteradas e onde encontrar informações adicionais.
| Propriedade | Ligado | Novo padrão | Para obter mais informações, consulte |
|---|---|---|---|
| channelInitializationTimeout | NetTcpBinding | 30 segundos | ChannelInitializationTimeout |
| listenBacklog | NetTcpBinding | 12 * número de processadores | ListenBacklog |
| maxPendingAccepts (número máximo de aceitações pendentes) | ConnectionOrientedTransportBindingElement SMSvcHost.exe |
2 * número de processadores para transporte 4 * número de processadores para SMSvcHost.exe |
MaxPendingAccepts Configurando o Serviço de Compartilhamento de Porta Net.TCP |
| máximoDeConexõesPendentes | ConnectionOrientedTransportBindingElement | 12 * número de processadores | MaxPendingConnections |
| receiveTimeout | SMSvcHost.exe | 30 segundos | Configurando o Serviço de Compartilhamento de Porta Net.TCP |
Configurando serviços WCF em código
O WCF (Windows Communication Foundation) permite que os desenvolvedores configurem serviços usando arquivos de configuração ou código. Os arquivos de configuração são úteis quando um serviço precisa ser configurado depois de ser implantado. Ao usar arquivos de configuração, um profissional de TI apenas precisa atualizar o arquivo de configuração, nenhuma recompilação é necessária. Os arquivos de configuração, porém, podem ser complexos e difíceis de manter. Não há suporte para depurar arquivos de configuração, e os elementos de configuração são referenciados por nomes, o que torna sua criação propensa a erros e difícil. O WCF também permite configurar serviços no código. Em versões anteriores do WCF (4.0 e anteriores), configurar serviços no código era fácil em cenários auto-hospedados, a classe ServiceHost permitia que você configurasse pontos de extremidade e comportamentos antes de chamar o ServiceHost.Open. Em cenários hospedados na Web, no entanto, você não tem acesso à ServiceHost classe. Para configurar um serviço Web hospedado, você precisava criar um System.ServiceModel.ServiceHostFactory que criou o ServiceHostFactory e executar qualquer configuração necessária. A partir do .NET Framework 4.5, o WCF fornece um modo mais fácil de configurar serviços auto-hospedados e hospedados na Web no código. Para obter mais informações, consulte Configurando os Serviços do WCF no Código.
Cache de ChannelFactory
Os aplicativos cliente WCF usam a ChannelFactory<TChannel> classe para criar um canal de comunicação com um serviço WCF. A criação de instâncias ChannelFactory<TChannel> gera uma certa sobrecarga porque envolve as seguintes operações:
Construir a árvore de ContractDescription
Refletir todos os tipos CLR necessários
Construir a pilha de canal
Descarte de recursos
Para ajudar a minimizar a sobrecarga, o WCF pode armazenar em cache fábricas de canal quando você está usando um proxy de cliente WCF. Para obter mais informações, consulte Channel Factory e Cache.
Compactação e o codificador binário
A partir do WCF 4.5, o codificador binário WCF adiciona suporte à compactação. O tipo de compactação é configurado com a CompressionFormat propriedade. O cliente e o serviço devem configurar a CompressionFormat propriedade. A compactação funcionará para protocolos HTTP, HTTPS e TCP. Se um cliente especificar para usar a compactação, mas o serviço não oferecer suporte a ela, uma exceção de protocolo será gerada indicando uma incompatibilidade de protocolo. Para obter mais informações, consulte Escolhendo um codificador de mensagens.
UDP
Suporte foi adicionado para um transporte UDP que permite que os desenvolvedores escrevam serviços que utilizam mensagens "enviar e esquecer". Um cliente envia uma mensagem para um serviço e não espera resposta do serviço.
Suporte à autenticação múltipla
O suporte foi adicionado para vários modos de autenticação, conforme suportado pelo IIS, em um único ponto de extremidade WCF ao usar o transporte HTTP e segurança de transporte. O IIS permite habilitar vários modos de autenticação em um diretório virtual, esse recurso permite que um único ponto de extremidade WCF dê suporte aos vários modos de autenticação habilitados para o diretório virtual em que o serviço WCF está hospedado.
Suporte ao IDN
Foi adicionado suporte para permitir serviços WCF com Nomes de Domínio Internacionalizados. Para obter mais informações, consulte WCF e Nomes de Domínio Internacionalizados.
Cliente HTTP
Uma nova classe chamada HttpClient foi adicionada para facilitar muito o trabalho com solicitações HTTP. Para obter mais informações, consulte HttpClient e diretrizes para usar o HttpClient.
Configuração do IntelliSense
Os valores de atributo em arquivos de configuração para atributos personalizados definidos no projeto agora dão suporte ao IntelliSense para facilitar o trabalho com configurações de forma rápida e precisa.
Dicas de ferramentas de configuração
Elementos e atributos do WCF agora têm dicas de ferramenta no editor XML, para identificar com mais facilidade e precisão a finalidade do elemento ou atributo.
Colar dados como classes
Em um projeto do WCF, os tipos de dados definidos em XML (como são expostos em um serviço) podem ser colados diretamente em uma página de código. O tipo XML será colado como um tipo CLR. Consulte Gerando classes de tipo de dados de XML para obter mais detalhes.
WebServiceHost e pontos de extremidade padrão
No Visual Studio 2010, o WebServiceHost criou automaticamente um ponto de extremidade padrão se você especificou explicitamente um ponto de extremidade ou não. No Visual Studio 2012 e posterior, o WebServiceHost só criará um ponto de extremidade padrão se nenhum ponto de extremidade for adicionado explicitamente. Se o cliente estiver esperando o ponto de extremidade padrão, você poderá adicionar explicitamente um ponto de extremidade e apontar o cliente para ele. Como alternativa, você pode dizer ao WCF para reverter para o comportamento anterior adicionando a seguinte configuração ao arquivo de configuração do aplicativo
<appSettings>
<add key="wcf:webservicehost:enableautomaticendpointscompatability" value="true"/>
</appSettings>
IHttpCookieContainerManager
Essa interface, exposta por IChannelFactory<TChannel>, facilita muito o trabalho com cookies no lado do cliente. Quando AllowCookies é definido como true na associação, você pode acessar cookies usando o seguinte código:
IHttpCookieContainerManager cookieManager = factory.GetProperty<IHttpCookieContainerManager>();
System.Net.CookieContainer container = cookieManager.CookieContainer;
Em seguida, você pode recuperar ou definir os cookies do CookieContainer. Quando AllowCookies é definido como false, você pode recuperar manualmente os cookies usando OperationContext e enviá-los em outras solicitações usando outro OperationContext ou um inspetor de mensagens. A interface IHttpCookieContainerManager permite autenticar um usuário com um serviço e usar o cookie de autenticação retornado por esse serviço para autenticar com outros serviços.