Modulo 3 http://blogs.msdn.com/wcamb/ Serviços com Back-End Services Call Directly Front-End Clients Middle Tier Clients WCF SOAP Services • Definido através de código • Modelos de serviços por entidades WCF Workflow Services • Definição visual (gráfica) • Suporte para processos de longa duração • Modelo de serviços por tarefas. Programming Model Service Model Channel Model − HTTP-only hospedado em IIS − Alto acoplamento entre interface e implementação − Sem suporte para segurança, garantia de entrega, transação, serialização binária − Cenários avançados exigem modelos híbridos ASMX é um modelo básico de implementação de serviços. − Altamente configurável e extensível − Suporta o que o ASMX não suporta − Suporta um modelo unificado através de todos os protocolos de transporte − Suporta diversos formatos de dados e serialização WCF 4 suporta modelos avançados e sofisticados de soluções com serviços. Somente WCF pode aproveitar AppFabric! − − − − − ASMX Web Services .NET Remoting Enterprise Services MSMQ WSE Metadata Cliente Bv Bv Serviço Endpoint C B Mensagem A A B C Bv A B C Bv Proxy Endpoint Address Binding Contract (Onde) (Como) (O quê) ServiceHost<T>() Protocolos Unificados • ASMX, WSE, .NET Remoting, COM+, MSMQ Messaging e Metadados • SOAP (1.1 e 1.2), WS-Addressing, MTOM, WSDL, WS-MetadataExchange, WS-Policy Segurança, Confiabilidade e Transações Web 2.0 • WS-Security, WS-SecureConversation, WS-Trust, WS-Reliable Messaging, WS-Coordination, WS-AtomicTransaction • POX, REST, JSON, RSS, ATOM, ATOMPub MSDN: Web Services Protocols Interoperability Guide msdn.microsoft.com/en-us/library/ms734776.aspx Definir o Serviço Hospedar no AppFabric Testar com WCF Test Client Poucas opções de configuração e suporte limitado para protocolos! Definir contrato de serviço e entidades Implementar o serviço Configurar o serviço Testar com WCF Test Client Host no IIS & AppFabric Service Contract (ICalculator) Data Contract Operations (signatures) double Add(double a, double b) double GetArea(Rectangle r) Rectangle double width, double height Host (IIS | AppFabric) Service Implementation (MyCalc: ICalculator) Operations (implementation) double Add(double a, double b) double GetArea(Rectangle r) Service Configuration (web.config) Service Behaviors (Metadata) Service Endpoint Address (http://localhost/MyCalc.svc) Binding(basicHttp) Service Contract (ICalculator) Criando um “típico” Criar uma Aplicação Cliente Add Reference para o “Data Contract Assemblies” (opcional) Adicionar a “Service Reference” Chamar os métodos via Proxy Instanciar o Proxy Proxy Instance (MyCalcClient) proxy.Add(5,2) Client Configuration (app.config) Client Client Endpoint Address (http://localhost/MyCalc.svc) Binding(basicHttp) Add(5,2) Service Instance Receive Message Send Message Service Contract (ICalculator) 7 CalculatorClient proxy = new CalculatorClient(); Try { proxy.Add(1,5); proxy.Close(); } Catch (Exception ex) { proxy.Abort(); throw; } Encapsular a chamada através de try/catch, tratando a exceção com proxy.Abort() Usando o AppFabric para monitorar 19 2 − Obter o ETW Provider ID DiagnosticSection config = (DiagnosticSection) WebConfigurationManager.GetSection("system.serviceModel/diagnostics"); providerId = new Guid(config.EtwProviderId); − Criar um novo Event Provider para um ID myEventProvider = new EventProvider(providerId); − Definir um event descriptor errorDescriptor = new EventDescriptor(ErrorEventId, Version, Channel, ErrorLevel, Opcode, Task, Keywords); − Escrever o evento myEventProvider.WriteEvent(ref errorDescriptor, title, serviceName, errorMessage); − Veja um exemplo que encapsula todos os tratamentos, abaixo: WCFUserEventProvider eventWriter = new WCFUserEventProvider(); eventWriter.WriteErrorEvent(“AddOperation”, “An error occurred.”); Windows Server AppFabric AppFabric Dashboard