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
Download

WCF SOAP Services