Anda di halaman 1dari 65

Universidade Federal de So Carlos

Centro de Cincias Exatas e de Tecnologia


Programa de Ps-Graduao em Cincia da Computao

ARQUITETURA ORIENTADA A SERVIOS


(SOA)
Alexandre Bellini
Antonio Francisco do Prado
Luciana Aparecida Martinez Zaina
PPGCC/DC - UFSCar

Grupo de Engenharia
de Software

16/11/2010

AGENDA
Arquitetura Orientada a Servios (SOA)
SOA: Definio
SOA e os Web Services

Classificao de Servios
Principais padres utilizados pelos Web Services
Composio de Web Services

Exemplo: Servidor
Exemplo: Cliente
2

16/11/2010

Arquitetura
Orientada a Servios
Exemplo Servidor
Exemplo Cliente

ARQUITETURA ORIENTADA A SERVIOS

16/11/2010

ARQUITETURA ORIENTADA A SERVIOS

16/11/2010

ARQUITETURA ORIENTADA A SERVIOS


Segundo Erl (2007), A Arquitetura Orientada a Servios uma
infraestrutura de aplicao na qual toda funcionalidade de
negcio construda com base em funes e processos
individualizados, denominados servios
Tecnologia
da
Informao

Mundo do
Negcios

Fluxo de Trabalho

Servios
Processos de Negcio

16/11/2010

ARQUITETURA ORIENTADA A SERVIOS


Objetivos:
Foco na melhoria e agilidade de negcios;
Reutilizao de componentes em forma de servios;
Alinhar Tecnologia da Informao (TI) e s estratgias

de negcio; e
Integrao das aplicaes.
SOA no uma Tecnologia
SOA uma abordagem arquitetural

16/11/2010

ARQUITETURA ORIENTADA A SERVIOS


Vantagens no processo de desenvolvimento:
Fraco Acoplamento
Interoperabilidade
Composio
Reusabilidade
Alto Grau de Granularidade
Ubiquidade
7

16/11/2010

COMPUTAO ORIENTADA A SERVIOS

16/11/2010

COMPUTAO ORIENTADA A SERVIOS


Expedidor

Motorista

Contador

Fao
entregas

Atendo
chamadas e
organizo
entregas

Cuido da
contabilidade

Entrega
Rpida
9

16/11/2010

COMPUTAO ORIENTADA A SERVIOS


Viso de Negcio

Viso da TI

Entrega
Motorista

Eu posso:
Dirigir
Preencher uma
lista de
mercadorias
Receber
pagamentos
Etc...

o setDirigir
o setListaMercadorias
o getReceberPagamento

10

16/11/2010

SERVIO
Servios Web so aplicaes de negcio modulares;
Expe a lgica de negcio em forma de servios sobre

a Internet atravs de interfaces programveis;


Utiliza de protocolos de Internet com o propsito de

fornecer meios para buscar, assinar e acessar esses


servios;
Uma funo do sistema computacional construdo de

tal forma que possa ser facilmente vinculado a outros


componentes de software;
11

16/11/2010

SERVIO
Encapsula uma funo do negcio reutilizvel;
Independentes da implementao;
Fracamente interligados;
No existe herana ou dependncia entre os

servios;
Podem ser compostos e orquestrados em processos

de negcio; e
Expressa a viso de negcio da aplicao.
12

16/11/2010

EXEMPLOS DE SERVIO
Processamento de um pagamento;

Gerenciamento de clientes;
Efetuar consultas de crdito;
Verificar a disponibilidade de um produto em
estoque;

Motorista

Contador

Etc...

Expedidor
13

16/11/2010

CLASSIFICAO DOS SERVIOS

14

16/11/2010

CLASSIFICAO DE SERVIOS
Servios de Utilidade;

Servios de Entidade; e

Servios de Tarefa.

15

16/11/2010

SERVIOS DE UTILIDADE
Servios que contm lgica independente de negcio, onde

cada um deles prov uma funcionalidade de negcio; e


Possui o papl de encapsular um backend ou um domnio

do problema.
Exemplos de Funcionalidades:

Tratamento de excees;
Autenticao de usurios; e
Etc...

16

16/11/2010

SERVIOS DE ENTIDADE
Servios relacionados s entidades envolvidas no

negcio.
Funcionalidades:
Criar um cliente/produto/venda;
Retornar o endereo de um cliente;

Alterar o preo de um produto; e


Etc...

17

16/11/2010

SERVIOS DE TAREFA
Servios responsveis pelos processos especficos de

cada negcio;
Realiza tarefas de atividades mais genricas; e
Composio dos servios entidade e utilidade.

Funcionalidades:
Anlise de Vendas;
Compra de produtos; e
Etc...
18

16/11/2010

CLASSIFICAO DE SERVIOS

Camada de Abstrao dos Servios (adaptada de Erl, 2007)

19

16/11/2010

ABORDAGENS DE DESENVOLVIMENTO TOP-DOWN E


BOTTOM-UP

20

16/11/2010

TOP-DOWN
Processo de Negcio

Servios

A
Componentes

B
21

C
Bibliotecas
16/11/2010

BOTTOM-UP
Servios

A
Aplicativos

Componentes

C
Bibliotecas
mainframe
22

Sistemas
legados
16/11/2010

TECNOLOGIA PARA CONSRUIR SERVIOS

23

16/11/2010

COMPUTAO DISTRIBUDA
Java RMI (Remote Method Invocation)
CORBA (Common Object Request Broker Architecture)

DCOM (Distributed Component Object Model)


Web Services

Cliente

Restful

Servidor
Uso do
Servio

XML
Publicao

Consulta ao
registro
24

Registro
16/11/2010

WEB SERVICES

25

16/11/2010

WEB SERVICES
Web Service uma aplicao de software que pode

ser acessada remotamente usando diferentes


linguagens baseadas em XML [Potts et al., 2003].

O conceito de Web Services teve o seu incio em

meados de 2000 com a introduo da primeira verso


do protocolo SOAP, do WSDL 1.1, e de uma verso
inicial do UDDI como um servio de registro
[Weerawarana et al., 2005].
26

16/11/2010

WEB SERVICES

27

16/11/2010

WEB SERVICES
O grande entusiasmo em relao Web Services

fundamentalmente
interoperabilidade.

voltado

promessa

de

Cada

aplicao de software pode potencialmente se


comunicar com qualquer outra aplicao de software no
mundo, desde que as aplicaes sejam Web Services.

28

16/11/2010

PADRES UTILIZADOS PELOS WEB SERVICES

29

16/11/2010

SOAP
Simple Object Access Protocol SOAP

Prov um meio de comunicao entre aplicaes com


diferentes tecnologias;
Protocolo bsico de Web Services;
Formato baseado em XML;
Leve e simples para troca de informaes estruturadas;
Projetado para comunicao na internet; e
Define o formato de cabealho e corpo de uma mensagem
deWeb Services.
30

16/11/2010

SOAP
<?xml version="1.0"Envelope
encoding="UTF-8"?>
Informaes de
header
<soap:Envelope
autenticao,
block
xmlns:soap="http://www.w3c.org/2003/05/soap=envelope
roteamento
"soap:encodingStyle="http://www.w3c.org/2003/05/soapblock
encoding">
<soap:Header>
</soap:Header>

body

O contedo da
mensagem

message

<soap:Body>
</soap:Body>

</soap:Envelope>
31

16/11/2010

WSDL
Web

Description
interface
Service
Description
Operation
name

Descreve a

name
documentao
pattern

Language
input

output
e os
detalhes tcnicos dos Web

Services; e

infault

outfault

fault

Formato baseado emname


XML.
binding
name
type

Operation
ref

input
output
infault
outfault

fault
ref

service
name
interface

endpoint
name
binding

36

16/11/2010

WSDL
<?xml version="1.0" encoding="utf-8"?>
<description name="Emergency ...>
<types> ... </types>
<interface name="Localization">
<fault name="faultLocalization" element="ghns:faultLocalization" />
<operation name="opNewLocalization" ....>
<input messageLabel="In" element="ghns:inLocalization">
<output messageLabel="Out" element="ghns:returnLocalization">
<outfault ref="faultLocalization" messageLabel="statusOpNewLocalization">
</operation>
<binding name="bindingLocalization interface="tns:Localization ... >
<fault ref="faultLocalization" wsoap:code="soap:Sender" />
<operation ref="tns:opNewLocalization ... />
</binding>
<fault ref="faultLocalization" wsoap:code="soap:Sender" />
<operation ref="tns:opNewLocalization .../>
<service name="servLocalization" interface="tns:Localization">
<endpoint name=teste binding="tns:bindingLocalization
address="http://200.19.98.1:8091/Hospital" />
</service>
</description>
37

16/11/2010

UDDI
Fornecer ao provedor os protocolos necessrios para que os
Web Services sejam registrados, descobertos e publicados na
rede;
Agncia de registro de Web Services;
Banco de Dados Web Services; e

Utiliza SOAP para codificao das mensagens.

38

16/11/2010

COMPOSIO WEB SERVICES

39

16/11/2010

COREOGRAFIA
SOAP

SOAP

40

16/11/2010

ORQUESTRAO

SOAP

Orquestrador

41

SOAP

16/11/2010

42

Arquitetura Orientada a
Servios
Exemplo Servidor
Exemplo Cliente

EXEMPLO SERVIDOR:
CADASTRO DE PRODUTOS

16/11/2010

WEB SERVICE :: EXEMPLO


Cadastro de Produtos

43

16/11/2010

WEB SERVICE :: EXEMPLO


Criando o banco de dados COMERCIAL e a tabela PRODUTO no
IDE NetBeans
1.

No IDE Netbeans v aba Services, expanda o item Databases.

2.

Caso no exista a conexo com o MySQL clique com o boto


direito do mouse sobre Databases. Clique em MySQL Database

3. Na janela que se abre configure as informaes do banco de dados Mysql.

44

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Pressione com o boto direito em MySQL clique em Conectar. Aps conectar com o
banco de dados vamos criar nossa base de dados Comercial.

2.

Clique com o boto direito do mouse e selecione Create Database. Na janela que abre
coloque o nome da base de dados COMERCIAL. Mantenhas as outras informaes.

45

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Expanda o banco de dado Comercial e pressione com o boto


direito do mouse na pasta Tables. Escola a opo Recreate Table.
2. Na janela que se abre importe o arquivo PRODUTO.grab

O banco de dados COMERCIAL est pronto.


46

16/11/2010

WEB SERVICE :: EXEMPLO


Importando um projeto EJB Module no IDE NetBeans
1.

No IDE Netbeans v no menu File e escolha a opo New > Open Project...

2.

Selecione os projeto: CadProdWsApp. Pressione o boto Open Project.

47

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Configurando o Data Source.

2.

Abra o arquivo Persisntece.xml.

3.

Altere o campo Data Source para o banco de dados COMERCIAL.

48

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Agora, expanda o pacote org.ws.cadprod.model e observe nossa Entity Class, Produto.


Edite a classe Produto.java e procure pela annotation @NamedQueries. Ao final
dessa linha adicione os seguintes trechos de cdigo:

@NamedQuery(name = "Produto.getMaxCodigo", query =


"SELECT MAX(p.codigo) FROM Produto p"),
@NamedQuery(name = "Produto.findByDesc", query =
"SELECT p FROM Produto p WHERE p.descricao LIKE
:descricao")})

49

16/11/2010

WEB SERVICE :: EXEMPLO


Criando WebService no IDE NetBeans
1.

No IDE Netbeans v no menu File e escolha a opo New > Other...

2.

Na janela que se abre v categoria Web Services e selecione a opo Web Service.
Pressione o boto Next.

50

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Na prxima janela, no campo Web Service Name, nomeie como CadastrarProdWs.

2.

Nessa mesma janela configure o campo Package como: br.ufscar.dc.webservice.

3.

Finalmente, pressione o boto Finish.

51

16/11/2010

WEB SERVICE :: EXEMPLO


1.

O IDE Eclipse criar o Web Service.

52

16/11/2010

WEB SERVICE :: EXEMPLO


JAX-WS

Java API for XML Web Services


Utiliza anotaes para gerar a WSDL
Faz parte do JDK 6.0

Anotaes (JRS 181)


@WebService:
Indica que a classe um Web Service;
@WebMethod:
Indica que o mtodo anotado uma funo; e
@WebParam:
Permite o cliente referenciar os parmetros do Web Service.
53

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Insira o cdigo no Web Service abaixo:

54

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Insira o cdigo no Web Service abaixo:

55

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Compile o projeto CadProdWsApp clicando com o boto direito no


mouse sobre ele e, em seguida, na opo Build.

2. Agora v at a aba Services do Netbeans e expanda a opo


Servers.
3. Inicie o servidor de aplicaes Glassfish V3.

4. Depois de iniciar o servidor de aplicaes vamos efetuar o deploy


do web service. Volte aba Projects, clique com o boto direito
do mouse sobre o projeto CadProdWsApp e depois com Deploy.
5. Chegou, enfim, o momento de testarmos o web service. Expanda a
pasta Web Service do projeto e clique com o boto direito do mouse
sobre o web service CadastrarProdWs. Em seguida, clique na
opo Test Web Service.
56

16/11/2010

WEB SERVICE :: EXEMPLO

57

16/11/2010

58

Arquitetura Orientada a
Servios
Exemplo Servidor
Exemplo Cliente

EXEMPLO CLIENTE:
WEB

16/11/2010

WEB SERVICE :: EXEMPLO


Importando um projeto EJB Module no IDE NetBeans
1.

No IDE Netbeans v no menu File e escolha a opo New > Open Project...

2.

Na janela que se abre escolha o projeto CadProdWsAppClient e pressione o boto


Open Project.

59

16/11/2010

WEB SERVICE :: EXEMPLO


1.

No IDE Netbeans v no menu File e escolha a opo New > Web Service Client...

2.

Na janela que aparecer selecione a opo Project e clique no boto Browse

3.

Na prxima janela, o projeto de nosso Web Service, CadProdWsApp, ser exibido.

60

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Expanda o Project CadProdWsApp e selecione o Web Serivce CadastrarProdWs.


Em seguida, clique no boto OK.

61

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Novamente na janela inicial, para o campo Client Style, selecione a opo JAXWS Style.

2.

Para o campo Package coloque: org.ws.cadprod e clique no boto Finish. O IDE


Netbeans criar os stubs para comunicao com o Web Service CadastrarProdWs.

62

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Clique no boto direito no mouse sobre a pasta Source Packages e selecione a opo
New > Java Package

2.

Informe o nome do novo pacote, org.ws.cadprod.controller, no campo Package


Name e clique no boto Finish.

63

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Agora clique com o boto direito do mouse sobre


org.ws.cadprod.controller e, depois, na opo New > Servlet.

2.

No campo Class Name da janela exibida coloque o nome de nosso servlet,


CadProdServlet. Matenha as outras informaes como esto e clique no boto
Finish.

64

pacote

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Edite a classe CadprodServlet.java e insira o cdigo-fonte da listagem abaixo para o


mtodo doPost:

65

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Continuando

66

16/11/2010

WEB SERVICE :: EXEMPLO


1.

Continuando

1.

V at pasta Web Pages, expanda-a e visualize as


paginas web da nossa aplicao.

2.

Clique com o boto direito do mouse sobre o projeto


CadProdWsAppClient e selecione a opo Build.

3.

Agora, efetuaremos o deploy da aplicao. Clique


com o boto direito do mouse novamente sobre o
projeto CadProdWsAppClient e, em seguida, na
opo Deploy.

4.

Chegou a hora de testarmos a aplicao. Clique com


o boto direito do mouse sobre o projeto
CadProdWsAppClient e, depois, na opo Run.
67

16/11/2010

WEB SERVICE :: EXEMPLO


Cadastro de Produtos

68

16/11/2010

Grato!
Dvidas? Entre em contato:

Alexandre Bellini
alexandre_bellini@dc.ufscar.br
@alexandredc
Antonio F. Prado
prado@dc.ufscar.br
Luciana A. M. Zaina
lzaina@ufscar.br

www.ges.dc.ufscar.br
Grupo de Engenharia de
Software

69

16/11/2010

Anda mungkin juga menyukai