INT08 Interoperabilidade de Web Service com WCF e Metro

Preview:

Citation preview

António Cruzantonio.cruz@co.sapo.ptPaulo Traçapaulo.traca@logical-software.com

Platina

Ouro

Prata

Interoperabilidade

O que é o Project Metro

Relação entre o WCF e o Metro

Comparação das Arquitecturas

Ponto de situação

Demo

Funcionalidade

Dicas de Instalação

Futuro

Interpretações dos standards

Data types

Suportes à serialização

Suporte aos Basic Profiles

Performance e Escalabilidade

Custo do desenvolvimento

Impacto na manutenção

In-house expertise

Versionamento de serviços

Versionamento de toolkits

Assumir que os tipos dos dados são verificados

Assumir que o cliente/servidor usam a mesma versão de SOAP

Assumir que fazer chamadas síncronas é boa ideia em qualquer cenário

Assumir que as ferramentas são compatíveis entre si e entre versões

Usar RPC-encoding

Schema-First ou Contract-First

Tipos simples e tipos complexos compostos de tipos simples

Uso moderado de DateTime e Arrays

Subset de XML Schema

Manter os schemas simples

Aderir aos WS-I BP

Usar document-literal

Stack de web services da Sun

Alta performance / pronta para produção

Parte integrante do Application Server Glassfish(Sun APP 9.0)

Parte integrante do JDK 1.6

JAX-WS “RI” + WSIT = MetroJAX-WS - toda a funcionalidade básica web services(extensibilidade e modularidade)

WSIT (Web Services Interoperability Technology)

Suporte standards WS-* (RM / Segurança / Transacções)

Interoperabilidade com .NET 3.x

*

Microsoft e Sun fazem parte da WS-I

A interoperabilidade é um objectivo comum

Clientes Metro para Web Services em WCF

Clientes WCF para Web Services em Metro

Implementar especificações de forma a querealmente sejam interoperáveis.

Esforço conjunto

Microsoft Plugfests

*

Versões das especificações implementadas (alinhadocom o .Net 3.0)

OASIS WS-Security 1.0 and 1.1

WS-Trust (Feb 2005)

WS-Secure Conversation (Feb 2005)

WS-Security Policy (Jul 2005)

WS-Reliable Messaging (Feb 2005)

WS-Reliable Messaging Policy (Feb 2005)

WS-Coordination (Aug 2005)

WS-Atomic Transactions (Oct 2004)

WS-Metadata Exchange (Oct 2004)

WS-Policy (W3C Member Submission)

WS-Policy Attachment (W3C Member Submission)

Próxima versão alinhada com o .NET 3.5

*

HTTP TCP SMTP XMPPJMS

JAXB XML Data Binding (XSD, XPath)

SOAP Based Messaging (WSA | MTOM)

Security

Secure Conver.

Trust

Reliability

Reliable

Messaging

Transactions

Atomic-Transaction

Coordenation

Metadata

WSDL

MEX

Policy

JAX-WS Tooling | Netbeans plugin

IN-VM

*

Não existe um API Runtime

Desenvolve Serviços POJO API‟s standardsJAX-WS e EJB 3.0

Developer escreve um ficheiro de config para controlar as features do WSIT

Policy file usando WS-Policy

O ficheiro é injectado no WSDL do serviço

*

Módulo Netbeans

À mão

Outros IDE‟s

Ficheiro Config

WSIT

Wsit.xml

109 Deployment

META-INF/wsit-*.xml

Service Servlet Diployment

WEB-INF/wsit-*.xml

SVCUtil

Ou

wsimport

Serviço WCF

Ou WSIT

WS-Transfer / Mex

WSDL

Proxy Cliente

Encoder Encoder

Protocolo Protocolo

Protocolo Protocolo

Client (Proxy)

Transporte Transporte

Dispatcher

Service TypeConsumidores

do Serviço

Envelope

Body

Headers

Mensagem

Packet

Message

Header List

Payload

Attachement Set

Message Factory

Header Factory

Header

Attachment

*

Encoder Encoder

Protocolo Protocolo

Protocolo Protocolo

Client (Proxy)

Transporte Transporte

Dispatcher

Service TypeConsumidores

do Serviço

Service

Model Layer

Channel

Stack Layer

Stub TX RM WS-A Sec HTTP

Tube

Headz y w x Invoker

SEI Invoker Tube Provider Invoker Tube

Invoke

return

Invoke

return

010101

010101

Servidor

Cliente

*

BP 1.1

WS-MetadataExchange

MTOM

WS-AT

WS-Policy

WS-RM

WS-SecureConversation

WS-SecurityPolicy

WS-Security

WS-Trust

WCF MetroWSDL 1.1

SOAP 1.x

FastInfosetnet.tcp

net.msmq

net.p2p

net.pipe

JMS

Servlets

In-VM

WS-Transfer/Get

WS-MetadataExchange

Apenas em cenários com WS-Trust

Reliable Sessions

Transacções Atómicas

Segurança

WS-ReliableMessaging, Reliable Sessions e Durable Messaging

VantagensAtLeastOnce, AtMostOnce, ExactlyOnce, Ordered

Desvantagens

InteroperabilidadeWCF: [DeliveryRequirements(RequireOrderedDelivery=true)]

Performance

Boas práticasAtributos estritamente necessários. AtLeastOnce.

Close()

Grupo de operações que actua como uma unidade atómica

Em teoria, “transactional is beautiful”, mas…

Usar comedidamente em web services

Não oferecem a melhor disponibilidade e escalabilidade

Pode ser preferível usar transacções locais e/ou mecanismos de compensação

Essenciais para a construção de serviços robustos e de alta qualidade.

Utiliza WS-Coordenation

Todas a operações no contexto da transacção fazem commit ou rollback

Idêntico a EJB 3.0 | RMI-IIOP TX

@javax.jws.WebService

@javax.ejb.Stateless

@javax.ejb.TransactionManagement(CONTAINER)

public class Wirerer {

@javax.jws.WebMethod

@javax.ejb.TransactionAttribute(REQUIRED)

void wireFunds(...) throws ... {

websrvc1.withdrawFromBankX(...);

websrvc2.depositIntoBankY(...);

}

} *

Interoperabilidade testada usando:

• Username authentication with Symmetric Key

• Mutual Services Security

Possibilita One-Way, Durable e Reliable Messaging.

Usa os standards WS-Security, WS-Transactions e WS-Reliable Messaging.

Ao usar os standards sobre HTTP, assegura a interoperabilidade com outras plataformas. Ex: Metro.

É suportado pelo WCF sem necessidade de extender o framework.

Cliente

C#

Aplicação

Java

Queue Queue

Proxy Serviço

Internet

*

JDK 1.6 update 4

Glassfish Application Server 2.0 ur1

NetBeans 6.0.1

Ou…

NetBeans Enterprise bundle (mas não inclui o JDK)

Para desenvolvimento, usar os certificados disponíveis no copyv3.zip

Instalar os JCE Policy Files para suportar criptografia superior a 128 bits

Validar a sincronização dos relógios nos servidores

No WCF o default é SecurityAlgorithmSuite.Basic256 mas só funciona depois de configurarmos o WCF para usar SecurityAlgorithmSuite.Basic128.

Instalar o JCA strong cryptography policy no JRE/JDK.

Atribuir o valor false à propriedade NegotiateServiceCredential no WCF (o default é true) porque se traduz na implementação de uma asserção de WS-Policy proprietária Microsoft (SslContextToken).

"Policy Assertion is not Supported”.

“The security timestamp is invalid because its creation time ('2008-03-08T21:57:58.000Z') is in the future. Current time is '2008-03-08T21:51:04.809Z' and allowed clock skew is '00:05:00„”.

Ajustar o maxClockSkew.

Quando a configuração requer WS-SecureConversation(secureConversationBootstrap) é necessário ter em conta que:

Existem dois elementos: localClientSettings e localServiceSettings

O runtime vai considerar o valor que seja o mais baixo dos dois

Actualização do suporte aos standards WS-*

Alinhamento com WCF 3.5

Kerberos Tokens

XMPP (Metro)

Suporte melhorado a serviços REST (Metro)

WS-Eventing?

Interoperabilidade é um tema necessário e actual:

http://www.microsoft.com/interop/principles

Começa no desenho dos serviços

É possível interoperar entre Java e .NET

Brevemente disponível

http://research.logical-software.com

Actividades

Blogs sobre interoperabilidade .NET e Java

Forums, “Ask the expert”

Demos de extensibilidade

Sandbox ISB

Visual Studio 2008

http://msdn2.microsoft.com/en-us/vstudio/products/aa700831.aspx

.NET 3.5 SDK

http://download.microsoft.com/download/6/0/f/60fc5854-3cb8-4892-b6db-bd4f42510f28/dotnetfx35.exe

Comunidade

http://netfx3.com/content/WCFHome.aspx

Nicholas Allen's Indigo Blog

http://blogs.msdn.com/drnick/

Microsoft Interop Plugfest

http://mssoapinterop.org/ilab/

Homepage

http://metro.dev.java.net

Glassfish

http://glassfish.dev.java.net

Certificados para desenvolvimento

http://xwss.dev.java.net/files/documents/4864/5420/copyv3.zip

Utilitários de segurança

http://xwss.dev.java.net

JCE Unlimited Strength Jurisdiction Policy Files

http://java.sun.com/javase/downloads

Arun Gupta‟s Blog

http://weblogs.java.net/blog/arungupta

Quinta-feira, dia 13 pelas 18:30 na anfiteatro do pavilhão 2

duração prevista de 1 hora

Elementos ParticipantesJoão Pedro Martins

Hugo Batista

António Cruz

Hugo Ribeiro

Tiago Pascoal

Tema Livre

Arquitecturas, Metodologias de Desenvolvimento, Temas da Audiência

Miguel Madeira

Paulo Morgado

António Rocha

Sérgio Amendoeira

Software em versão completa para avaliação

2 incidentes de suporte gratuito profissional

Acesso antecipado às versões beta

software exclusivo: Capacity Planner

actualizações de segurança e service packs

formação gratuita ….e muito mais.

www.microsoft.com/portugal/technet/subscricoes

Software em versão completa para avaliação

Suporte técnico 24x7 para incidentes

Acesso antecipado às versões beta

Microsoft Office

Software Assurance

formação gratuita ….e muito mais.

www.microsoft.com/portugal/msdn/subscricoes

www.microsoft.com/learning

Complete o questionário de avaliação e devolva-o no balcão da recepção…

…e habilite-se a ganhar 1 percurso de

certificação por dia! Oferecido por:

…e habilite-se a ganhar 1 percurso de

certificação MCTS por dia! Oferecido por:

…e habilite-se a ganhar 1 curso e exame por

dia! Oferecido por:

António Cruzantonio.cruz@co.sapo.ptPaulo Traçapaulo.traca@logical-software.com

1. Make cert and pvk file for CA (Trusted Root Certificate which can bethe same on each participating machine)makecert.exe -pe -n CN=PARSEC-CA -cy authority -r -sv PARSEC-CA.pvk PARSEC-CA.cer

2. Install CA certmakecert.exe -ss Root -sr LocalMachine -n CN=PARSEC-CA -cyauthority -r –sv PARSEC-CA.pvk

3. Make/Install cert from CA's pvk file and cert file (Certificate which isdifferent for each participating machine -- Chains to the CA certcreated above)makecert -ss My -sr LocalMachine -n CN=PARSEC -sky exchange -ir LocalMachine -iv PARSEC-CA.pvk -ic PARSEC-CA.cer

(If computers are on a workgroup, remove the.%USERDNSDOMAIN% from the above command)

© 2008 Microsoft Corporation. Todos os direitos reservados.

Esta apresentação destina-se apenas a fins informativos.

A MICROSOFT NÃO FAZ GARANTIAS, EXPRESSAS OU IMPLÍCITAS NESTA APRESENTAÇÃO.