Uma introdução sobre WCF Windows Communication Foundation Waldemir Cambiucci Arquiteto de Soluções Microsoft Brasil twitter.com/wcamb blogs.msdn.com/wcamb 1
Agenda O que é o WCF? Cenários de serviços com WCF Recomendações para a construção de serviços com WCF Conclusões Recursos Publicação: Outubro/2009 2
Objetivos da Sessão Apresentar uma introdução sobre o WCF Windows Communication Foundation. Apresentar uma abordagem para cenários de serviços implementados com WCF. 3
4
O que é o WCF? Plataforma para aplicações distribuídas interoperável, escalável e orientado a mensagens Modelo de programação unificado ASP.NET Web Services (ASMX),.NET Remoting, Mensageria, Enterprise Services/COM+, RESTful Suporte n-tier, web services, protocolos WS* e modelos de programação web: POX, REST, JSON, AtomPub, etc. 5
O que é o WCF? WCF Windows Comunication Foundation é um framework de desenvolvimento do.net Framework, que permite a construção de interfaces de serviços para cenários diversos, oferecendo recursos para a construção de aplicações distribuídas. É parte integrante do.net Framework desde a versão 3.0. 6
.NET Framework 3.5 SP1.NET Framework ADO.NET Entity Framework ADO.NET Data Services ASP.NET Dynamic Data ASP.NET Routing Principais recursos do.net Framework..NET Framework 3.5 REST AJAX LINQ RSS POX ATOM JSON +BCL.NET Framework 3.0 WCF WPF WF Card Space ADO.NET.NET Framework 2.0 CLR Web Services ASP.NET
O que é o WCF? Windows Communication Foundation Ambiente para a comunicação entre sistemas Baseado em mensagens Multi-protocolo Multi-hosting Compatível com WS, WS-*, tcp, P2P, etc. Altamente configurável Permite desacoplamento entre Serviços e sua Configuração 8
Modelo unificado de programação O WCF oferece um modelo unificado de programação para a comunicação entre sistemas..net Remoting ASMX My System WSE MSMQ My Service Enterprise Services 9
Modelo unificado de programação O WCF oferece um modelo unificado de programação para a comunicação entre sistemas..net Remoting ASMX My System WCF WSE MSMQ My Service Enterprise Services 10
Anatomia de um serviço WCF Fundamentos Um serviço é orientado a mensagens, trocadas entre cliente e provedor. Bv Bv Cliente C B A Mensagem A B C Serviço Bv Bv 11
Anatomia de um serviço WCF Fundamentos Bv Cliente Metadata Endpoint Serviço Bv C B A Mensagem A B C Bv Proxy A B C Bv Endpoint Address Binding Contract (Onde) (Como) (O quê) ServiceHost<T>() 12
Arquitetura WCF Aspectos de nível lógico e contratos Aspectos de comportamentos e serviços Aspectos de multi-protocolo e mensagens Aspectos de multi-hosting
Contratos [ServiceContract] public interface IMyInterface { [OperationContract] public void MyMethod(); } public class MyService: IMyInterface { public void MyMethod() {... } } <service> <endpoint name= MyService address=... binding= nettcpbinding contract= IMyInterface /> Definição do contrato Implementação do serviço Address + Binding + Contract = Endpoint
Anatomia de um serviço WCF Canais de comunicação no WCF Cliente Proxy Criação de canais no WCF Endpoints Channel Channel Dispatcher Serviço Channel Channel Transport Channel Transport Channel 15
Bindings T = Transport Security M = Message Security Binding Interop. Segurança Sessão Transação Duplex BasicHttp BP 1.1 TM WsHttp WS TM X X WsDualHttp WS M X X X NetTcp.NET TM X X X NetNamedPipes.NET T X X X NetMsmq.NET TM X X NetPeerTcp.NET TM X MsmqIntegration MSMQ TM 16
Composição de Bindings ABC do WCF Transport Encoder Security Reliability Protocol HTTP TCP Text Binary WS-* WS-* WS-* HTTP TCP Pipes MSMQ Text Binary MTOM Transport WS-* Custom WS-* Custom WS-* Custom 17 Custom Custom
Bindings com HTTP 18 BasicHttpBinding HTTP + Text/MTOM Encoding + Transport Security (https) Primeira escolha para: Integração com tudo que fala SOAP/HTTP WS Basic Profile 1.1 compliant WsHttpBinding / WsDualHttpBinding BasicHttpBinding features + Segurança no nível da Mensagem + Reliable Session + Transaction Flow WsDualHttpBinding: Conversações Bidirecionais Duplex Primeira escolha para: Cenários avançados para Web Services Federated Security, Reliable Delivery, Transaction Integration
Bindings com TCP/IP NetTcpBinding WCF Framing Protocol + Binary Encoding Transport/Message Security, Reliable Session, Transactions Bidirectional (Duplex) no mesmo socket Prefira em relação ao WsHttpBinding quando: Cenários WCF-a-WCF sensíveis à Largura de Banda/Desempenho Notificações/feedback instantâneos ao Cliente com NAT/Firewall NetNamedPipeBinding Mesmas features do NetTcpBinding Confiabilidade garantida pelo Windows Prefira em relação ao NetTcpBinding quando: Necessita desempenho máximo na comunicação entre máquinas ou in-process 19
Bindings com MSMQ NetMsmqBinding Transporte MSMQ + Binary Encoding Segurança nos níveis de Transporte/Mensagem, Transações Primeira escolha para: Reliable, Durable, Queued One-Way Messaging Cenários de alta vazão MsmqIntegrationBinding Transporte do MSMQ + MSMQ Encodings Segurança do MSMQ, Transações Primeira escolha para: Cenários de Integração com aplicações MSMQ existentes Integração simples com o Host Integration Server e o BizTalk 20
Bindings para REST webhttpbinding web-friendly WCF Binding no.net 3.5 Permite a construção de serviços RESTful Suporta transporte HTTP e HTTPS somente Não utiliza envelopes SOAP WebMessageEncoding JSON, XML, Binary Novos bindings estão disponíveis com o.net 3.5 SP1, considerando integração com WF, sessões, recuperação, etc. 21
Uma árvore de decisão para Bindings Programming WCF Services by Juval Lowy Para cada cenário de aplicação teremos um binding específico que melhor atende suas necessidades. 22
23
WCF para Aplicações Intranet Suporte ao modelo Cliente/Servidor. Serviços distribuídos entre processos e fronteiras de máquinas. Cliente Intranet TCP Windows Active Directory Características: Mensagens TCP/binária Autenticação Windows NetTcpBinding NetTcpBinding Serviço Componente de Negócio DALC 24
WCF para Web Services Suporte para protocolos SOAP/WS* Cliente Internet (Basic Profile) Cliente Internet (WS*) Características: Mensagens HTTP/Text Transporte seguro via SSL ou segurança por mensagens Autenticação baseada em usuário/senha BasicHttpBinding e WSHttpBinding BasicHttpBinding HTTPS UserName credentials Serviço Componente de Negócio DALC HTTP WSHttpBInding 25
EndPoints para Web Services Suporte ao wshttpbinding 26 Tratando Behaviors de serviços
WCF e mundo Web Suporte para modelos de programação Web, clientes AJAX e Silverlight. Browser AJAX Browser Silverlight Características: POX, REST, Atom/Pub Segurança via URL com segurança de aplicação WebHttpBinding para Ajax REST-Centric Behavior webhttp(json) e enablewebscript (AJAX) WebHttpBinding HTTP/HTTPS Serviço Componentes de Negócio DALC WebHttpBinding 27
EndPoints para Cliente AJAX/REST Usando um endpointbehavior enablewebscript Usando o binding webhttpbinding Usando o behavior custom, para suporte ao cliente AJAX 28
Serviços Distribuídos Serviços WCF podem encapsular funcionalidades de negócio para aplicações Web Suporta fronteiras distribuídas e segurança HTTPS TCP Browser Aplicação ASP.NET Certificate UserName credentials Características: Mensagens TCP/binário Autenticação por certificados NetTcpBinding NetTcpBinding Serviço Componente de Negócio DALC Certificate Store 29
SOA WCF é parte de uma estratégia orientada a serviços. Interfaces de serviços para toda lógica de negócio. Cliente Internet (Basic Profile) HTTPS Cliente Internet (WS*) HTTP WSHttp Aplicação ASP.NET NetTcp HTTPS Browser Características: Diversos cenários de bindings possíveis Big SOA versus Little SOA BasicHttp Serviço Componente de Negócio DALC 30
Cloud Computing Serviços publicados na nuvem, através de um ISB Internet Service Bus Cliente Internet (Basic Profile) HTTPS Cliente Internet (WS*) HTTP HTTPS Aplicação ASP.NET Browser.NET Services da Plataforma de Serviços Azure: Access Control Service Bus Service Bus Access Control WSHttp / on-premise Serviço Componente de Negócio 31 Windows Azure.NET Services Service Bus DALC
WCF para Aplicações Intranet Considerações gerais Característica Descrição Hospedagem Windows NT Service -> Windows Server 2003 WAS -> Windows Server 2008 Protocolo Transporte Protocolo Mensageria Segurança Binding TCP Named Pipes (cliente e serviço na mesma máquina) SOAP + Binary Credencial Windows Certificado X.509 NetTcpBinding NetNamedPipeBinding 32
WCF para Web Services Considerações gerais Característica Descrição Hospedagem IIS6 -> Windows Server 2003 IIS7 -> Windows Server 2008 Protocolo Transporte Protocolo Mensageria Autenticação Segurança Transmissão Binding HTTP, HTTPS SOAP + WS-* Usuário + Senha (WS-Security) SSL -> HTTPS WS-Security -> HTTP BasicHttpBinding, WsHttpBinding 33
WCF e mundo Web Considerações gerais Característica Descrição Hospedagem IIS6 > Windows Server 2003 IIS7 -> Windows Server 2008 Protocolo Transposte HTTP, HTTPS Protocolo Mensageria Autenticação Segurança Binding XML, JSON Basic Authentication SSL WebHttpBinding WebHttpBehavior 34
WCF e cenários de mensageria Considerações gerais Característica Descrição Hospedagem Windows NT Service -> Windows Server 2003 WAS -> Windows Server 2008 Protocolo Transporte Protocolo Mensageria MSMQ SOAP + Binary Segurança Certificado X.509 Binding MsmqIntegrationBinding (Legado) NetMsmqBinding (WCF WCF) 35
36
Resumo sobre o WCF WCF realiza a separação entre Serviço e Protocolos utilizados Grande poder de abstração! Implementa uma gama grande de protocolos e mecanismos para diferentes cenários Múltiplos protocolos podem ser usados para um mesmo serviço Simplifica a implementação e a configuração Cabe ao arquiteto definir que protocolos e/ou mecanismos devem ser utilizados Pode ser customizado...
Resumo sobre o WCF 4.0 Novos recursos estão chegando com o WCF 4.0: Configuração simplificada de serviços Standard Endpoints Discovery Router service Melhorias no suporte à REST Para saber mais sobre o WCF 4.0: A Developer's Introduction to Windows Workflow Foundation (WF4) in.net 4 Beta 1 http://msdn.microsoft.com/en-us/library/ee342461.aspx A Developer s Introduction to Windows Communication Foundation (WCF).NET 4 Beta 1 http://msdn.microsoft.com/pt-br/library/ee354381(en-us).aspx
Recursos Série de posts sobre WCF http://blogs.msdn.com/wcamb/archive/tags/wcf/default.aspx Windows Communication Foundation: Application Deployment Scenarios http://msdn.microsoft.com/en-us/library/cc512374.aspx Série de posts sobre Cenários de WCF http://blogs.msdn.com/wcamb/archive/tags/cen_26002300_225_3b00_ rios+de+servi_26002300_231_3b00_os+wcf/default.aspx
Recursos (cont.) ArqBR.Groups http://arqbr.groups.live.com/ ArqCasts no Channel9/Brasil http://channel9.msdn.com/brasil/ ebook Arquitetura de Soluções http://blogs.msdn.com/wcamb/archive/2009/10/01/ebooksobre-arquitetura-de-solu-es.aspx Centro de Arquitetura MSDN http://msdn.microsoft.com/pt-br/architecture/default.aspx 40
41 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.