135
IA847 Projeto de Sistemas Distribuídos Abertos Prof. Eleri Cardozo DCA/FEEC/Unicamp [email protected] http://www.dca.fee.unicamp.br/~eleri

IA847 Projeto de Sistemas Distribuídos Abertos143.106.148.168:9080/Cursos/IA847/01-07/ia847.pdf · global (por exemplo, ... convêniência, etc. Exemplo: Windows, Linux, Java, MATLAB

  • Upload
    dinhanh

  • View
    221

  • Download
    0

Embed Size (px)

Citation preview

IA847Projeto de Sistemas Distribuídos Abertos

Prof. Eleri CardozoDCA/FEEC/Unicamp

[email protected]://www.dca.fee.unicamp.br/~eleri

IA847 - Prof. Eleri Cardozo 2

Sistemas Distribuídos

Um sistema distribuído é um sistema computacional com as seguintes propriedades:

1. Distribuição: um subconjunto de seus componentes são controlados por entidades independentes e dispersas (processos, máquinas virtuais, etc.).

2. Concorrência: um subconjunto de seus componentes executam concorrentemente (paralelismo real ou pseudo-paralelismo).

3. Falhas parciais: qualquer componente do sistema pode falhar independentemente dos demais.

4. Assincronismo: as atividades do sistema não são regidas por um relógio global (por exemplo, pode ser impossível estabelecer causa-efeito ou determinar precisamente o estado do sistema).

IA847 - Prof. Eleri Cardozo 3

Sistemas Abertos

Sistemas abertos são sistemas implementados segundo padrões abertos.

Padrão aberto: documento estabelecido por consenso e publicado por organismo de padronização acreditado para uso comum e repetitivo. Exemplo: Protocolos TCP/IP (IETF), RM-ODP (ISO), UML (OMG).

Padrão de-facto: padrões aceitos por razões de disponibilidade, custo, convêniência, etc. Exemplo: Windows, Linux, Java, MATLAB.

OBS: 1. A motivação para uso de padrões aberto é motivado pela independência de fornecedores.

2. Um sistema desenvolvido segundo padrões abertos não necessariamente é um sistema gratuito ou de código aberto.

IA847 - Prof. Eleri Cardozo 4

Sistemas Abertos: Classificação

Podemos classificar sistemas abertos em quatro categorias:

1. Modelos de referência: descrevem os componentes do sistema, suas funções, relações e formas de interação. Exemplo: Modelos OSI e ODP.

2. Arquiteturas de referência: igual aos modelos de referência, mas com especificação mais precisa das interfaces e pontos de referência entre os componentes do sistema. Exemplo: Arquiteturas SOA e OMA.

3. Arquiteturas abertas: igual às arquiteturas de referência, mas com especificação precisa dos protocolos de interação entre os componentes do sistema. Exemplo: Arquiteturas CORBA e TCP/IP.

4. Implementações de referência: provêem código aberto (gratuito ou não) para os componentes fundamentais da arquitetura. Exemplo: Linux kernel e Projetos da Apache.

O grau de interoperabilidade é menor para os modelos de referência e maior para as implementações de referência.

IA847 - Prof. Eleri Cardozo 5

Exemplo: Arquitetura CORBA

Object Request Broker (ORB)

Objetos deAplicação

CORBAServices

CORBAFacilities

Arquitetura OMA

IDL (Interface Description Language)

IIOP (Internet Inter-ORB Protocol)

OMA + IDL + IIOP = CORBA

IA847 - Prof. Eleri Cardozo 6

Desenvolvimento de Sistemas Distribuídos

Infra-estrutura necessária:● Hardware: rede de computadores, multiprocessador, processador multitarefa● Software: ORBs, middlewares, contêineres, ...

A infra-estrutura de hardware é responsável por:● Suportar a distribuição do processamento;● Suportar comunicação entre os elementos do sistema.

A infra-estrutura de software é responsavel por:● Prover transparência (esconder a distribuição) aos componentes do sistema;● Atender a um subconjunto de requisitos não-funcionais do sistema.

IA847 - Prof. Eleri Cardozo 7

Desenvolvimento de Sistemas Distribuídos

Um sistema distribuído é especificado em diferentes níveis de abstração e/ou visões (viewpoints).

A parte mais importante da especificação é sua arquitetura.

Uma arquitetura de software define os elementos (objetos, módulos, componentes, etc.) que compõem o sistema, a estruturação destes elementos (camadas, tiers, clusters, etc.), as relações entre os elementos (cliente/servidor, produtor/consumidor, etc.), e as propriedades visíveis externamente destes elementos e relações (pontos de interação).

IA847 - Prof. Eleri Cardozo 8

Desenvolvimento de Sistemas Distribuídos

Atualmente, a tendência é se concentrar mais na arquitetetura e menos nas tecnologias de implementação:

● favorece o reuso de arquiteturas (em oposição ao reuso de código);● alterar a arquitetura em fase adiantada de desenvolvimento é extremamente custoso;● ferramentas de desenvolvimento de software possuem capacidade crescente de geração de código.

Adotam esta estratégia:

● ODP: Visão de tecnologia; ● MDA (Model-driven Architecture): PIM (Platform Independent Model).

IA847 - Prof. Eleri Cardozo 9

Redes de ComputadoresRede de Telefonia

Redes Locais

CATV

Redes de Acesso(Última Milha)(Cable Modem,

ADSL, Fibra)

Troncos(Fibra ótica)SONET/SDH

Redes ATM

Redes TCP/IP

Ethernet Wireless

VoIP IPTV

Fixa Móvel

2G, 3G

WWW

WiFi/WiMax

Sensores

Veicular

Corporal

...

Chão deFábrica

Tecnologias(camadas 1,2)

Aplicações(camadas 5,6,7)

Fibra Ótica(DWDM)

Comunicação(camadas 3,4)

IA847 - Prof. Eleri Cardozo 10

Redes de Computadores

Modelo OSI (ISO): um modelo de referência para redes de computadores.

Protocolos ISO para o modelo OSI: conjunto de protocolos para os elementos (camadas) do modelo OSI.

Arquitetura TCP/IP (IETF): arquitetura de rede não aderente ao modelo OSI.

Outras arquiteturas de rede: NetWare (Novell), IN (Rede Inteligente) (ITU-T), SNA (IBM).

IA847 - Prof. Eleri Cardozo 11

Modelo OSI

Rede

Física

Enlace

Transporte

Sessão

Apresentação

Aplicação

Transmissão de bits no meio físico

Transferência de quadros entre nós próximos

Transferêrncia de pacotes (store-and-forward)

Transferência de segmentos fim-a-fim

Manutenção de estado da comunicação fim-a-fim

Formatação canônica de dados

Infra-estrutura para o desenvolvimento de aplicações

IA847 - Prof. Eleri Cardozo 12

Modelo OSI: Exemplo

Rede

Física

Enlace

Transporte

Sessão

Apresentação

Aplicação

Par trançado (100BaseT)

Ethernet (IEEE 802.3)

Internet Protocol (IP), Address Resolution Protocol (ARP)

Transfer Control Protocol (TCP)

Secure Socket Layer (SSL)

Hypertext Markup Language (HTML)

Hypertext Transfer Protocol (HTTP, HTTPS)

Navegador Web

IA847 - Prof. Eleri Cardozo 13

Modelo OSI: Visão Geral

4-7

1-3 1-3 1-3

1-3

4-7

1-3

1-3

roteamento

comunicaçãoem broadcast

comunicação fim-a-fim

subrede decomunicação

OBS: Esta visão “OSI” não é mais atual. Exemplo:● meio físico dedicado (switching);● roteamento baseado em restrições;● L2-VPNs (Layer 2 Virtual Private Networks).

comunicaçãoponto-a-ponto

IA847 - Prof. Eleri Cardozo 14

Arquitetura TCP/IP

Interface de Rede

Interconexão de Redes

Transporte

Aplicação

Rede

Física

Enlace

Transporte

Sessão

Apresentação

Aplicação

OBS: Na arquitetura TCP/IP a camada de aplicação é responsável pela representação canônica de dados (apresentação) e por manter o estado da comunicação (sessão).

IA847 - Prof. Eleri Cardozo 15

Protocolos TCP/IPA camada interface de rede não prescreve protocolos específicos.

A camada de rede define os seguintes protocolos:● IP (Internet Protocol): define o formato de um pacote de rede (datagrama);● ARP (Address Resolution Protocol): mapeia endereços de rede em endereços de interface de rede (enlace);● ICMP (Internet Control Message Protocol): define mensagens de controle (p.ex., echo request) e erros (e.g., host unreachable).

A camada de transporte define os seguintes protocolos:● TCP (Transfer Control Protocol): transporte de cadeia de bytes com garantia de entrega fim-a-fim;● UDP (User Datagram Protocol): transporte de mensagens sem garantia de entrega fim-a-fim.

A camada de aplicação define vários protocolos tais como HTTP, SMTP (Simple Mail Transfer Protocol) e SSH (Secure Shell).

IA847 - Prof. Eleri Cardozo 16

Protocolos TCP/IP

Além dos protocolos básicos, a Arquitetura TCP/IP especifica umgrande número de protocolos de rede e aplicação, por exemplo:

Camada de rede:● IPSec (IP Secure): confidencialidade e integridade de pacote IP;

● OSPF (Open Shortest Path First): roteamento de pacotes IP;● RSVP (Resource Reservation Protocol): reserva de recursos

para comunicação;● DiffServ (Serviços Diferenciados): priorização de pacotes;● DHCP (Dynamic Host Configuration Protocol): atribuição de

endereços de rede.

Camada de Aplicação:● SNMP (Simple Network Management Protocol): gerência de

rede;● DNS (Domain Name System): mapeamento nome

hierárquico-endereço de rede;● NAT (Network Address Translation): mapeamento

endereçamento privado-público.

IA847 - Prof. Eleri Cardozo 17

Endereçamento TCP/IP

Endereço físico(distingue a conexão ao meio físico)

Física

Endereço de enlace(distingue a interface de rede no enlace)

Endereço de rede(distingue globalmente a interface)

Enlace

Rede

TransporteEndereço de transporte(distingue um ponto de acesso à rede utilizado por aplicação)

AplicaçãoEndereço de aplicação(distingue um serviço ou aplicação)

IA847 - Prof. Eleri Cardozo 18

Mapeamento de Endereços TCP/IP

Física

Enlace

Rede

Transporte

Aplicação

hardwired

00:11:43:CF:06:53

ARP (Address Resolution Protocol)

143.106.50.145

8080

prainha.dca.fee.unicamp.br

DNS (Domain Name System)

http://prainha.dca.fee.unicamp.br:8080/

RJ-45

IA847 - Prof. Eleri Cardozo 19

Endereços IP

Camada de rede: utiliza endereçamento de 32 bits hierarquizados em dois níveis (subrede - host)● Classe A: 7 bits para subrede e 24 para host;● Classe B: 14 bits para subrede e 16 para host;● Classe C: 21 bits para subrede e 8 para host.

Notação decimal: valor decimal de 8 bits separados por pontoExemplo: 143.106.8.30

Notação classless: notação decimal / tamanho do prefixo (agrega 2N endereços consecutivos)Exemplos: 143.106.8/24 (rede com 256 hosts), 143.106.8/26 (rede com 1024 hosts), 143.106.8.30/32 (host específico)

IA847 - Prof. Eleri Cardozo 20

Por que TCP/IP Prevaleceu ?

Não especificar protocolos de rede e enlace permitiu evoluir as tecnologias de rede e preservar as aplicações (a custa do protocolo ARP).

Camada de rede simples com serviço de melhor-esforço (protocolo IP) barateia os roteadores.

Deixa para os computadores dos usuários o ônus da comunicação confiável e o controle de congestionamento (protocolo TCP) -- escalabilidade.

Fácil de configurar (protocolo DHCP).

Compartilhamento de endereços públicos (NAT).

Portabilidade de aplicações (sockets).

Killing application (WWW).

IA847 - Prof. Eleri Cardozo 21

Requisitos de Rede

Requisitos Funcionais:

Transporte de bytes entre componentes do sistema distribuído.

Requisitos Não Funcionais:

● Confiabilidade (taxa de perdas, probabilidade de falha, ...);● Segurança (privacidade, autenticidade, ...);● Qualidade de serviço (atraso, jitter, ...);● Classes de serviço (priorização de tráfego)● Mobilidade (de terminal, de sessão, ...).

Os requisitos funcionais são atendidos pelas camadas 1-7. Os requisitos não funcionais podem necessitar de infra-estrutura adicional (Gerência baseada em políticas, QoS brokers, etc.).

IA847 - Prof. Eleri Cardozo 22

Requisitos de Rede

Que requisitos de rede TCP/IP é capaz de atender ?

a. Segurança: atende razoavelmente bem com mecanismo de chaves criptográficas (ex: HTTPS);b. QoS (atraso, jitter): não atende (Internet atual);c. CoS: atende em redes privadas com equipamentos adequados (ex: priorização de tráfego VoIP);d. Mobilidade: não tende.

Cenário hoje:

a. sobre-provisionamento de recursos para QoS/CoS;b. mobilidade apenas na camada 2 (ex: WiFi) ou via redes sobrepostas (ex: IP em redes de telefonia celular).

IA847 - Prof. Eleri Cardozo 23

Qualidade de Serviço

Visão OSIQoS nas camadas 1,2,3 garantidos por controle de admissão;QoS nas camadas superiores negociados no estabelecimento de conexões.

Visão TCP/IP (original)Campo TOS (Type of Service) no datagrama IP utilizado para definir o tipo de serviço conferido ao datagrama pelos roteadores.

Visão TCP/IP (Arq. de Serviços Integrados - IntServ)Utiliza-se um protocolo para sinalizar reserva de recursos na camada 3 (RSVP).

Visão TCP/IP (Arq. de Serviços Diferenciados - DiffServ)Redefine-se o campo TOS para identicar classes de serviço.

IA847 - Prof. Eleri Cardozo 24

Conexões

Uma conexão é uma negociação entre duas camadas adjacentes (por meio de seus respectivos protocolos) visando dotar a comunicação de certos atributos relavantes para a camada. Por exemplo, para a camada de rede atributos de taxa de transferência e atraso são importantes; para a camada de transporte ausência de perdas é importante.

Conexões garantem a utilização dos recursos de forma planejada (por exemplo, evitando congestionamento nos roteadores).

Entretanto, a complexidade dos protocolos orientados a conexão é muito maior em relação àqueles que operam sem conexão.

IA847 - Prof. Eleri Cardozo 25

Campo TOS

De acordo com o valor do campo TOS, o roteador confere um tratamento adequado ao pacote:● máxima vazão;● máxima confiabilidade;● mínimo atraso;● máxima segurança.● mínimo custo monetário.

Problema: os roteadores primitivos não tinham como honrar o campo TOS.

Resultado: serviço de melhor esforço independente do campo TOS.

IA847 - Prof. Eleri Cardozo 26

Arquitetura IntServ

Solução orientada a fluxo.

R RRfluxo

● Estabelece reserva de recursos para um fluxo individual.● Define um modelo de reoteador capaz de diferenciar fluxos. ● Define um protocolo para reserva de recursos por fluxo.

A B

estado

IA847 - Prof. Eleri Cardozo 27

Roteadores IntServ

Agente deRoteamento(e.g., OSPF)

Base de Dados

(Tabela) deRoteamento

Agente deReserva

(e.g., RSVP)

Agente deGerência

(e.g., SNMP)

Controle deAdmissão

Controlede Tráfego

Classificador

de Pacotes

Escalonador

de Pacotes

Interfacede Saída

Interfacede

Entrada

Roteadorde Pacotes

Filas

IA847 - Prof. Eleri Cardozo 28

Protocolos IntServA Arquitetura IntServ define o protocolo RSVP (Resource Reservation Protocol). RSVP é um protocolo:

- soft state; - extensível (cabeçalho simples + objetos); - complexo (combinação e compartilhamento de reservas); - exige tráfego modelado por meio de token bucket.

A B

R RR

Path (fluxo, Tspec)

Resv

A mensagen Path instala (e “refresca”) o estado e Resv confirma o estado.

IA847 - Prof. Eleri Cardozo 29

IntServ: Legado

A arquitetura IntServ foi uma proposta muito radical:

● estabele conexão no nível de rede !!!● exige roteadores complexos (e portanto caros);● exige sinalização no host (externa à rede);● não é solução escalável (estado e controle por fluxo).

Pelas razões acima, IntServ nunca foi utilizada pelos provedores de rede. Entretanto ...

● o modelo de roteador IntServ prevalece;● o protocolo RSVP é empregado em outas arquiteturas de rede (ex: MPLS);● a idéia é viável se houver agregação de fluxo (como no MPLS).

IA847 - Prof. Eleri Cardozo 30

Arquitetura DiffServ

Solução orientada a diferenciação de serviços:● define-se N classes de serviço;● para cada classe, define-se um comportamento homogêneo para pacotes pertencentes à classe (per hop behavior - PHB).

Classes de serviço são especificadas separadamente. Cada classe é identificada por um código no campo TOS (DiffServ Code Point - DSCP) e pode possuir mais de uma subclasse. Cada subclasse pode possuir mais de uma “prioridade de descarte”. Atualmente existem 3 classes:● EF (Expedited Forward) - similar a uma “linha privada virtual” - não define subclasses;● AF (Assured Forward) - “melhor que melhor esforço” - define 4 subclasses com 3 prioridades de descarte cada;● BE (Best Effort) - serviço padrão - não define subclasses.

IA847 - Prof. Eleri Cardozo 31

Roteadores DiffServ

Medidorde Tráfego

Classifi-cador dePacotes

Escalo-nador

dePacotes

Interface

deSaída

Interfacede

Entrada

Roteador

de Pacotes

Filas

AF1

BE

EF Condicio-

nador de

Pacotes

Marcador

dePacotes

...

Agente deRoteamento(e.g., OSPF)

Base de Dados(Tabela) deRoteamento

Agente deGerência

(e.g., SNMP)

SLAs (Service Level Agreements)

IA847 - Prof. Eleri Cardozo 32

DiffServ Hoje

● Utilizada em redes privadas e entre provedores de rede;

● Marcação pelo host usualmente ignorada pela rede;

● Apesar de escalar melhor que IntServ, o tratamento de SLAs pode ainda comprometer a escalabilidade;

● Cenário provável:

Provedor de Rede

Provedorde ConteúdoRede de

Acesso

SLA

DiffServAlocaçãode Banda

Usuário

IA847 - Prof. Eleri Cardozo 33

Arquiteturas deSistemas Distribuídos

IA847 - Prof. Eleri Cardozo 34

Arquiteturas de SDs

O termo “arquitetura” refere-se a arquitetura de uma aplicação específica (exemplo: e-Banking). O termo “estilo arquitetural” ou “padrão arquitetural” refere-se a um esboço de arquitetura a partir do qual arquiteturas de aplicações podem ser projetadas (exemplo: estilo cliente/servidor).

Arquiteturas que seguem o mesmo estilo arquitetural compartilham propriedades estrututurais semelhantes.

A partir daqui, os termos “arquitetura” e “estilo arquitetural” serão utilizados como sinônimos.

IA847 - Prof. Eleri Cardozo 35

Arquiteturas de SDs

Arquiteturas usualmente estabelecem:

1. Os elementos que compõem a arquitetura;Exemplo: Uma arquitetura de agentes possui os elementos agência e agentes.

2. A estruturação dos elementos da arquitetura;Exemplo: Agentes são elementos contidos em agências (relaçãocontêiner/contido).

3. As relações entre os elementos da arquitetura;Exemplo: Uma agência controla a execução de agentes.

4. Os pontos de interação da arquitetura.

Exemplo: Agências interagem entre sí segundo um protocolo de gerência deagentes. Agentes oferecem interfaces de callback para controle por parte daagência. Agências oferecem interfaces para os agentes obterem informaçõessobre o seu ambiente de execução.

IA847 - Prof. Eleri Cardozo 36

Arquiteturas de SDsExemplo de modelagem de arquiteturas

IA847 - Prof. Eleri Cardozo 37

Padrões Arquiteturais

● Cliente/Servidor;

● n-Tier;

● Dirigidas a Eventos e a Mensagens;

● Peer-to-Peer (P2P);

● Grades Computacionais;

● Orientadas a Serviço.

IA847 - Prof. Eleri Cardozo 38

Arquitetura Cliente/Servidor

O sistema é decomposto em elementos clientes e servidores. Servidores provêem serviços por meio de uma ou mais interfaces. Clientes utilizam serviços invocando operações nestas interfaces.

Clientes dependem de servidores para desempenhar suas funções.

A relação entre clientes e servidores é a de provedor/consumidor de serviços. Esta relação é estabelecida apenas durante a execução de serviços.

Um ponto de interação entre clientes e servidores deve explicitar protocolos para descrição de interfaces de serviços e para invocação de serviços.

IA847 - Prof. Eleri Cardozo 39

Protocolos de Interação Cliente/Servidor

RPC (Remote Procedure Call) - O servidor suporta um conjunto de subrotinas que podem ser invocadas dinamicamente. ● a passagem de parâmetros e retorno é sempre por valor;● necessita de infra-estrutura para invocação remota.

Infra-estrutura mínima:

bibliotecaRPC

bibliotecaRPC

P1 P2 P3

invocação localcallRPC

protocoloRPC

serializa parâmetrosde-serializa retorno

de-serializa parâmetrosserializa retorno

Cliente

Servidor

IA847 - Prof. Eleri Cardozo 40

Compiladores RPC

Stub

bibliotecaRPC

P2 P3P1

bibliotecaRPC

P1 P2 P3

invocação local

Servidor

Skeleton

protocolo RPC

associação (binding)

Cliente

P1, P2, P3Descrição de interfaces

CompiladorRPC

IA847 - Prof. Eleri Cardozo 41

RPC: Registro de ServidoresServidores devem registrar seus procedimentos para que clientes os encontrem. Registros podem ser locais, centralizados ou distribuídos.

C

R

S

R

S

R

S

C

S

R

S

S

C

S

S

S

R

DistribuídoLocal

Centralizado

IA847 - Prof. Eleri Cardozo 42

RPC: Registro de Servidores

RegistroRegistro:● portmapper● serviço de nomes● negociador (trader)

ServidorCliente

Stub Skeleton

1. registra2. busca

3. invoca

IA847 - Prof. Eleri Cardozo 43

RPC: Registro de Servidores

Portmapper: mapeia procedimentos (programa, versão, procedimento) em um port de servidor local. Exemplo (0x12345678, 1, 2) -> 111

Serviço de nomes: mapeia nomes hierárquico em endereços de servidores. Exemplo: /Servidores/TimeServers/T1/getTime -> (143.106.50.145, 111)

Negociador (Trader): mapeia nomes hierárquicos e atributos em endereços de servidores locais. Exemplo:/Servidores/TimeServers/T1/getTime {Precision = 99.990} ->(143.106.50.145, 111)

Ao buscar um servidor, o cliente define um critério de busca. Exemplo:/Servidores/TimeServers/*/getTime {Precision > 99.0}

IA847 - Prof. Eleri Cardozo 44

RPC: Protocolos

SUN RPC: Utilizada em serviços como NFS e NIS. Possui linguagem de descrição de procedimentos (RPC Language) e compilador (rpcgen). Opera com registro local (portmapper). Stubs possuem assinaturas diferentes dos procedimentos.

/* RPC Language */program DATE_PROG { version DATE_VERS {

long BIN_DATE(void) = 1; /* numero do procedimento */string STR_DATE(long) = 2;

} = 1; /* versao */} = 0x12345678; /* numero do programa */

......

/* codigo do cliente */CLIENT cl = clnt_create(server, DATE_PROG, DATE_VERS, “udp”); /* stub */long ldate = bin_date_1(NULL, cl);

IA847 - Prof. Eleri Cardozo 45

RPC: Protocolos

DCE RPC: Utilizada inicialmente no DCE (Distributed Computing Environment), serviu de base para o Microsoft DCOM/COM+. Possui invocação segura e compilador. Stubs possuem assinaturas diferentes dos procedimentos. Hoje disponível em código aberto.

/* DCE IDL */[uuid(70ff8220-6e1a-11cc-89ee-080002b2a1bca)]interface date {

long bin_date();[string, prt] str_date ([in] long date);

}

........

/* codigo do cliente */rpc_binding_handle_t binding_h; /* stub */unsigned32 dce_status;import_interface(“date”, date_v1.0_c_ifspec, &binding_h, &dce_status);long ldate = time(NULL);char* date = str_date(binding_h, ldate, &dca_status);

IA847 - Prof. Eleri Cardozo 46

Objetos Distribuídos

Comumente arquiteturas cliente/servidor são realizadas com objetos distribuídos. Um objeto distribuído:● possui uma referência que extrapola o seu espaço de endereçamento;● possui uma ou mais interfaces descritas segundo uma linguagem de descrição de interfaces;● é ancorado por uma infra-estrutura que suporta invocação remota dos métodos definidos em sua(s) interface(s).

A infra-estrutura de suporte a objetos distribuídos provê minimamente:● stubs e skeletons gerados para uma dada interface;● mecanismo de ligação stub-skeleton (binding). Adicionalmente a infra-estrutura pode prover:● mecanismo de controle de execução e persistência de objetos distribuídos;● serviços adicionais (segurança, transação, etc.).

IA847 - Prof. Eleri Cardozo 47

Objetos Distribuídos: CORBA

Stub

bibliotecaORB

P2 P3P1

bibliotecaORB

O1 O2 O3

invocaçãolocal

Servidor

Skeleton

protocolo IIOP

associação (binding)

Cliente

I1, I2, I3Descrição de interfaces: CORBA IDL

CompiladorIDL

POA

controle

Objetos serventes

IA847 - Prof. Eleri Cardozo 48

Objetos Distribuídos: CORBA

// CORBA IDLinterface date {

long bin_date();string str_date(in long ldate);

}

......

// clienteorg.omg.CORBA.Object obj = nserver.resolve_str(“TimeServer”);

date dt = dateHelper.narrow(obj); /* stub */long ldate = dt.bin_date();String str = str_date(ldate);

IA847 - Prof. Eleri Cardozo 49

Arquitetura n-Tier

Variante da arquitetura Cliente/Servidor onde os elementos da aplicação distribuída são estruturados em camadas verticais (tiers). Comumente são empregadas 3 camadas (Arquitetura 3-Tier):

- Apresentação: contém os elementos responsáveis pela interação com o usuário.

- Lógica da Aplicação (de negócio): contém os elementos responsáveis pela lógica da aplicação (processamento da informação).

- Dados (Back-End) - contém os elementos responsáveis pela persistência e consistência dos dados.

Elementos de uma camada interagem apenas com elementos de camadas adjacentes.

Pontos de interação entre camadas devem explicitar protocolos para descrição de interfaces de serviços e para invocação de serviços disponíveis em cada camada.

IA847 - Prof. Eleri Cardozo 50

Exemplo de Arquitetura 3-Tier

Apresentação

EJBContainer

(EnterpriseJava Beans)

WebContainer

(JSP/Servlet)

Base deDados

Relacional

Lógica daAplicação

Dados(Back-End)

HTTPRMI

JDBCJava BeansHibernate

IA847 - Prof. Eleri Cardozo 51

Arquitetura Dirigida a Eventos e Mensagens

O sistema é decomposto em elementos produtores e consumidores de eventos (mensagens).

Produtores e consumidores são desacoplados por meio de um canal de difusão de eventos (mensagens).

Produtores e consumidores de eventos (mensagens) dependem do canal de difusão para desempenhar suas funções.

Um ponto de interação entre produtores, consumidores e canal de difusão deve explicitar protocolos e interfaces para subscrição, “de-subscrição”, publicação e consumo de eventos (mensagens).

IA847 - Prof. Eleri Cardozo 52

Arquitetura Dirigida a Eventos e Mensagens

ProxyConsumidor

ProxyProdutor

Admin

Persistência

Produtor

Produtor

push

subscribeunsubscribe

pull

Consumidor(push)

Consumidor(pull)

push

Canal deDifusão

IA847 - Prof. Eleri Cardozo 53

Arquitetura Dirigida a Eventos e Mensagens

Exemplo de infra-estruturas de eventos/mensagens:

● Serviço de Notificação e de Mensagens CORBA;

● Java Message Systems (JMS);

● ActiveMQ (Apache);

● WebSphere MQ (IBM).

IA847 - Prof. Eleri Cardozo 54

Arquitetura Peer-to-Peer (P2P)

O sistema é composto de elementos que desempenham funções semelhantes (elementos pares).

Não há uma estruturação definida para os elementos pares, apesar de prevalecer uma estruturação em grafos não orientados.

Não há relação de dependência ou hierarquia entre os elementos pares.

Um ponto de interação entre pares deve ser definido para que estes possam cooperar (tipicamente por meio de troca de mensagens).

Arquiteturas P2P são comumente empregadas em redes de compartilhamento de informação (Gnutella, Napster, etc.) e de processamento cooperativo (SETI@Home, Entropia, etc).

IA847 - Prof. Eleri Cardozo 55

Arquitetura P2P

Rede de suporte (underlay, e.g., Internet)

Rede suportada (overlay, e.g., Gnutella)

peer

Topologia, protocolos de interação e funcionalidade dos nós diferem entre as duas redes.

IA847 - Prof. Eleri Cardozo 56

Exemplo de Arq. P2P: Gnutella

Gnutella é uma arquitetura de propósito geral para compartilhamento de informação (tipicamente arquivos). Gnutella define um protocolo de interação entre os nós que suporta:

● descoberta de pares (mensagens PING e PONG);● busca de informação (mensagens QUERY e QUERY RESPONSE);● transferência de informação (mensagens GET e PUSH).

Em arquiteturas P2P estilo Gnutella um fator fundamental é o roteamento de queries.

IA847 - Prof. Eleri Cardozo 57

Exemplo de Arq. P2P: Gnutella

Mensagem PING Mensagem PONG

IA847 - Prof. Eleri Cardozo 58

Exemplo de Arq. P2P: Gnutella

Query (inundação) Query Response

Get/Push

IA847 - Prof. Eleri Cardozo 59

Arquiteturas Grid

Internet

Job

Job

Submissão remota de jobs

Mainframe

Computação em Grid

Do ponto de vista do usuário, o Grid é um processador virtual composto de dezenas/centenas de processadores interconectados.

Analogia: Power Grid (sistema elétrico de potência).

IA847 - Prof. Eleri Cardozo 60

Arquiteturas Grid

Os elementos da arquitetura são recursos computacionais (CPU, armazenamento, hardware especializado, software, etc.).

Os recursos são estruturados em recursos virtuais e organizações virtuais (VOs) -- virtualização.

VOs são regidas por meio de SLAs (Service Level Agreements).

Pontos de interação são definidos entre VOs para fins de submissão de jobs, inquirição e notificação de status e coleta de resultados.

IA847 - Prof. Eleri Cardozo 61

Grid: Recursos Virtuais

Recursos

Serviços

Acesso

Armaze-

namentoSensores Aplicações InformaçãoComputadores

Interfaces dos Recursos

Interfaces Comuns

Classes de Interfaces

(c) Open Grid Forum

IA847 - Prof. Eleri Cardozo 62

Grid: Organizações Virtuais

Organização real

Organização Virtual

SLA

SLA

Recurso

IA847 - Prof. Eleri Cardozo 63

Grid X Conceitos Similares

Processamento Distribuído:● Fraco acoplamento;● Heterogêneo;● Intra-organizacional.

Processamento Paralelo (Cluster):● Forte acoplamento;● Homogêneo;● Intra-organizacional.

Grid:● Fraco acoplamento;● Heterogêneo;● Inter-organizacional, Larga escala.

IA847 - Prof. Eleri Cardozo 64

Grid: Exemplo

Recursos

Virtualizados

Serviços

de Grid

(middleware) Brokering Service

Registry Service

DataService

CPU Resource Equipment

Service

Job-Submit Service

ComputeService

Notify

Ad

vertise

ApplicationService

(c) Open Grid Forum

1

2

3

4

5

IA847 - Prof. Eleri Cardozo 65

Grid: Serviços

● Compartilhamento de dados (Data Grids) - Exemplo: dados astronômicos.

● Processamento (Computational Grids) - Exemplo: simulação.

● Equipamentos especializados (Equipment Grids) - Exemplo: telescópio.

Aplicações desenvolvidas segundo uma arquitetura Grid devem utilizar uma infra-estrutura comum para disponibilização, gerência e uso dos serviços. Esta infra-estrutura pode consistir de um middleware, toolkit, ou ambiente de programação.

IA847 - Prof. Eleri Cardozo 66

Grid: Globus Toolkit

Conjunto de funções de suporte a arquiteturas Grid:

● Gerência de execução (alocação e gerência de recursos, manutenção de workspace);

● Comunicação (mensagem, RPC, estado compartilhado, I/O remoto providos pela Nexus Communication Library);

● Gerência de Informação (publicação, descoberta e acesso a informação sobre serviços disponíveis no Grid);

● Segurança (autenticação, autorização, delegação, gerência de credenciais).

http://www.globus.org

IA847 - Prof. Eleri Cardozo 67

Grid: Globus Toolkit

(c) Globus Aliance

IA847 - Prof. Eleri Cardozo 68

Grid: Open Grid Service Architecture (OGSA)

● Arquitetura aberta orientada a serviço para computação em Grid em padronização pelo Open Grid Forum.

● Classes de serviços similar ao Globus.

● Utiliza padrões XML existentes (WS-Security, WS-Policy, etc.) e padrões específicos para computação em Grid (Configuration Description Language (CDL), Job Submission Description Language (JSDL)).

http://www.ogf.org

IA847 - Prof. Eleri Cardozo 69

Grid: OGSA

Security• Cross-organizational users• Trust nobody• Authorized access only

Information Services

• Registry• Notification• Logging/auditing

Execution Management• Job description &

submission• Scheduling• Resource provisioning

Data Services• Common access facilities• Efficient & reliable transport• Replication services

Self-Management

• Self-configuration• Self-optimization• Self-healingOGSA

OGSA “profiles”

Web services foundation

(c) Global Grid Forum

IA847 - Prof. Eleri Cardozo 70

Arquitetura Orientada a Serviço

Tal como em Grids, arquitetura orientada a serviço (SOA - Service- oriented Architecture) é uma solução de processamento distribuído inter-organizacional. O foco principal está na interoperabilidade e segurança (mesmo comprometendo a eficiência).

Um serviço encapsula uma lógica (de negócio) auto-contida, com interface bem definida e auto-descritiva, cuja execução não depende do contexto ou estado de execução de outros serviços.

Devido aos requisitos de interoperabilidade, implementações de SOA têm se limitado à tecnologia de serviços Web.

IA847 - Prof. Eleri Cardozo 71

Arquitetura Orientada a Serviço

Os elementos da arquitetura são serviços.

Serviços são estruturados em serviços primitivos e compostos (composição de serviços).

Serviços compostos dependem dos serviços primitivos que os suportam.

Pontos de interação são definidos para registro, descoberta e invocação de serviços.

IA847 - Prof. Eleri Cardozo 72

SOA: objetos X componentes X serviços

Objeto Componente Serviço

Granularidade baixa média alta

Acoplamento médio baixo baixo

Aspectos não- providos pelo providos pelo providos pelafuncionais programador container plataforma

Interoperoperabilidade protocolo protocolo protocoloespecífico específico XML

Composiçao embutida descritor de script deno código montagem composição

(ñ recursiva) (recursiva)

IA847 - Prof. Eleri Cardozo 73

SOA: Características Próprias

Provedores e clientes de serviços podem trocar metadados sobre a utilização de serviços, por exemplo, políticas de uso do serviço.

Serviços são “sem estado” (stateless). Entretanto, o efeito da execução do serviço pode refletir em invocações subseqüentes (via alteração em base de dados, por exemplo).

Um serviços usualmente reflete um workflow balizado por regras de negócio.

Um serviço composto é também um serviço.

IA847 - Prof. Eleri Cardozo 74

SOA: Composição de Serviços

Composição é um fluxo de execução de serviços descrito por uma linguagem de composição (script descrevendo um workflow) e processado por uma máquina de composição. Tipicamente, linguagens de composição suportam:● execução sequencial e paralela de serviços;● variáveis (armazenam resultados intermediários);● pontos de decisão;● laços de iteração;● ações de compensação (tratamento de exceções).

Máquina deComposiçãoScript

ServiçoPrimitivo

ServiçoPrimitivo

...

conexão (partner link)Serviço

Composto

IA847 - Prof. Eleri Cardozo 75

SOA: Orquestração X Coreografia

Coreografia descreve contratos inter-organizacionais para a execução de serviços. É um processo não necessariamente automatizado similar a um SLA.

Orquestração é um processo intra-organização, usualmente automatizado por meio de composição de serviços.

Coreografia

Orquestração

IA847 - Prof. Eleri Cardozo 76

Desenvolvimento Orientado a Serviço

Usualmente empregam-se um processo multi-camadas:

Camada de negócio: representada por workflows, regras de negócio, políticas, etc.

Camada de serviço: representa as interfaces e conexões entre os serviços responsáveis pela lógica de negócio. Possui 3 subcamadas:● Serviços de orquestração (serviços criados via composição de serviços);● Serviços de negócio (serviços específicos do negócio);● Serviços de aplicação (serviços de propósito geral).

Camada de aplicação: plataformas de suporte a serviços e máquinas de orquestração.

IA847 - Prof. Eleri Cardozo 77

Desenv. Orientado a Serviço

Camada deAplicação

Camada deServiço

Camada deNegócio

M.C. M.C. M.C

Plataforma

IA847 - Prof. Eleri Cardozo 78

SOA: Camada de Negócio

A camada de negócio utiliza editores dedicados para modelar processos de negócio. Estes editores geram scrips de composição.

IA847 - Prof. Eleri Cardozo 79

SOA: Camada de Serviço

Serviços são descritos por meio de suas interfaces. O ciclo de desenvol-vimento de um serviço segue o modelo clássico: definição de interface, compilação de interface, implementação da lógica de serviço.

Alternativamente, um serviço pode ser desenvolvido por meio de composição de serviços utilizando uma plataforma apropriada capaz de integrar as interfaces dos serviços primitivos, o script de composição, e código executável.

Uma vez desenvolvido, a interface do serviço pode ser registrada em um diretório de serviços.

IA847 - Prof. Eleri Cardozo 80

SOA: Camada de Aplicação

A camada de aplicação utiliza utiliza plataformas e máquinas de composição. Plataformas oferecem facilidades de desenvolvimento de serviços via aplicativos, editores, debuggers, etc., bem como servidores onde os serviços serão instalados e diretórios onde os serviços serão registrados.

Máquinas de composição podem ou não ser integradas às plataformas.

Exemplos (produtos gratuitos):

● Apache Axis: executa como aplicação no Tomcat (não possui editor ou máquina de orquestração, apenas aplicativos). Bom para o desenvolvimento de serviços primitivos.

● Eclipse BPEL Project, Oracle BPEL Process Manager, ActivBPEL: Máquinas de orquestração. Bom para o desenvolvimento de serviços compostos.

IA847 - Prof. Eleri Cardozo 81

SOA: Tecnologias Web

WS-BPELWS-CDL

WSDL, UDDI

SOAP, XML

HTTP, HTTPS

Codificaçãoe

Transporte

Descrição

Processode Negócio

Web Service Business Process Description LanguageWeb Service Choreography Description Language

Web Services Description LanguageUniversal Description, Discovery and Invocation

Simple Object Access ProtocolExtensible Markup Language

Hypertext Transfer Protocol (Secure)

WS-PolicyWS-SecurityWS-Metadata

IA847 - Prof. Eleri Cardozo 82

SOA: Tecnologias & Produtos

WS-BPELWS-CDL

WSDL, UDDI

SOAP, XML

HTTP, HTTPS

WS-PolicyWS-SecurityWS-Metadata

Contêiners(Ex: Tomcat + Axis)

Aplicativos & APIs(Ex: java2wsdl, jUDDI)

Máquinas de composição(Ex: ActivBPEL)

IA847 - Prof. Eleri Cardozo 83

Padrões Arquiteturais: Resumo

Padrão Elementos Estruturação Dependências Ponto de Interação

Cliente/Servidor clientes e arbitrária clientes de prot. RPC entreservidores servidores clientes e servidores

Dirigida a Evento/ produtores e em torno de prods. e cons. prot. de interaçãoMensagem consumidores canais de difusão do canal c/ o canal

n-Tier clientes e camadas tier de tiers prot. de interaçãoservidores verticais (tiers) adjacentes entre tiers

Peer-to-peer pares redes nó dos nós prot. de cooperaçãoconectados entre pares

Grades recursos organizações orgs. de SLAs prot. de uso dosComputacionais virtuais virtuais estabelecidos recursos virtuais

Orientada a serviço composição serviço composto prot. de invocação eServiço de serviços dos primitivos composição de serviços

Multi-Agentes agentes e agentes contidos agentes de prot. de interaçãoagências em agências agências agente-agência e

agente-agente

IA847 - Prof. Eleri Cardozo 84

Unified Modeling LanguageOOAD (Object Oriented Analysis and Design) começou a proliferar no início da década de 90.

James Rumbaugh e outros (General Electric Co) publicam o livro Object-Oriented Modeling and Design, Prentice-Hall, 1991, descrevendo OMT (Obect Modeling Technique).

Ivar Jacobson (Objective Systems) e outros publicam o livro Object-Oriented Software Engineering: A Use Case Driven Approach, Addison-Wesley, 1992.

Grady Booch (Rational Software Co) publica o livro Object Oriented Analysis and Design with Applications, Pearson, 1993.

Rumbaugh se transferiu para a Rational em 1994. Lá estavam Booch e Jacobsen. UML 0.8 surgiu em 1995 como fusão das três técnicas de modelagem.

OMG (Object Management Group) criou em 1996 uma força tarefa para padronizar OOAD.

Rational submete ao OMG a versão 1.0 da UML. OMG contribui para UML 1.1.

UML 1.2 surge em 1998, 1.3 em 1999; 1.4 em 2001, 1.5 em 2003, 2.0 em 2004, 2.1.1 em 2007.

IA847 - Prof. Eleri Cardozo 85

Modelagem de Arquiteturas com UML

Elementos: diagramas de classes, componentes, pacotes.

Estruturação: diagramas de componentes e de instalação (deployment).

Dependências: relações entre elementos.

Pontos de interação: diagramas de caso de uso, atividade, comunicação, seqüência, transição de estado.

OBS: UML é deficiente para representar certos aspectos de sistemas distribuídos, por exemplo: - requisitos não-funcionais são difíceis de modelar (ex: QoS); - propriedades relativas a distribuição difíceis de estabelecer (ex: ausência de deadlocks, limites de performance); - ausência de mecanismos para modelar restrições organizacionais (ex: políticas), tecnológicas (ex: características do hardware), e de interação com o usuário humano (ex: acessibilidade).

IA847 - Prof. Eleri Cardozo 86

Object Constraint Language

OCL, Object Constraint Language (UML 2.x), é uma linguagem textual para precisar ou restringir certos elementos do modelo, por exemplo:● invariantes, pré e pós condições;● limites em tipos e valores de atributos, cardinalidade, etc;● elemento relacionados;● inter-dependência de atributos;● resultados de operações.

Exemplo:

Pessoa

NomeSexoIdadeEstCivil

conjuge

*

0..1

união

IA847 - Prof. Eleri Cardozo 87

OCLPessoa

NomeSexoIdadeEstCivil

conjuge

*

0..1

Context Pessoa inv:

-- bigamia é proibidoself.conjuge->size() <= 1

-- união somente entre sexo opostoself.conjuge->size() = 1 implies self.Sexo <> self.conjuge.Sexo

-- união significa casamentoself.conjuge->size() = 1 implies self.EstCivil = #casado and self.conjuge.EstCivil = #casado

-- um dos conjuges é sempre maior de idadeif self.EstCivil = #casado then self.Idade >= 18 or self.conjuge.Idade >= 18

união

IA847 - Prof. Eleri Cardozo 88

XML Metadata InterchangeXML Metadata Interchange (XMI) permite representar um diagrama UML de forma neutra e intercambiável entre ferramentas de projeto.Permite ainda processar o modelo UML. Por exemplo:

DocumentoXMI

Modelo UML

ferramentade projeto

Geradorde

Código

Validadorde

Modelo

Transformadorde

Modelo

Ex: Classe UML -> Interface WSDL

Ex: Aderênciaa Perfil UML

Ex: Diagrama de Arividades UML ->Documento BPEL

Save As ...

Import As ...

ferramentade projeto

IA847 - Prof. Eleri Cardozo 89

UML 2.x

Adiçoes à UML 1.5 presentes na UML 2.0 foram motivadas por MDA e SOA.

● Diagrama de atividades: construções para modelagem de workflows. Adição de fluxos, sinais, pré/pós-condições, exceções e agrupamentos de ações.

● Diagrama de classes: mudanças insignificantes (ex: navegação que pode ou não ocorrer). Entretanto, o uso de OCL é cada vez mais presente.

● Diagramas de comunicação (antigo diagrama de colaboração): adição de envio concorrente de mensagens (letra após número de seqüência).

● Diagramas de caso de uso: adição de condições para extensão de casos de uso.

● Diagramas de componentes: adição de ports, interfaces requeridas e conectores de componentes.

IA847 - Prof. Eleri Cardozo 90

Metamodelos

Um metamodelo é uma referência para a contrução de modelos. O OMG define 4 níveis de modelos.

MOF

CWM MM UML MM EDOC Mm

M0 (sistema real)

M2 (metamodelos)

M3 (meta-metamodelo)

M1 (modelos) Modelo UML Perfil UML

Simulador JogoWeb Lab

IA847 - Prof. Eleri Cardozo 91

Perfis UML

Um perfil UML é uma extensão de UML para um domínio de aplicação específico. UML pode ser estendida de duas maneiras:

● Criando novas construções a partir do meta-modelo UML (exemplo: uma nova associação).

● Utilizando os mecanismos nativos de extensão: estereótipos e valores etiquetados (tagged values).

Perfis UML são úteis para geração de código e transformação de modelos (as ferramentas sabem o que procurar no documento XMI).

IA847 - Prof. Eleri Cardozo 92

Exemplo de Perfil UML

CanalDeDifusão

subscribeunsubscribe

push

Consumidor

push

Produtor

logEnabled : Bool

<<CanalDeDifusão>>ChatServer

<<Consumidor>>Apresentador

<<Produtor>>

Editor

* ** *

CanalDeDifusão Classe Reresenta um canal de difuãoProduror Classe Reresenta um produtor de mensagensConsumidor Classe Reresenta um consumidor de mensagens

Estereótipos Elemento Descrição

Valores Etiq. Valores Elemento Descrição

plataforma java, corba Classe Plataforma alvo para geraçãode código

{plataforma=java}

{plataforma=java}{plataforma=java}

IA847 - Prof. Eleri Cardozo 93

UML e Processos de Desenvolvimento de Software

Um processo de desenvolvimento de sofware estabelece quem faz o quê, quando e como.

Involve, portanto, pessoas e organizações (quem); seqüências de ações (o quê, quando); e linguages, ferramentas e tecnologias (como).

UML não é um processo de desenvolvimento de software, mas sim uma linguagem de modelagem de software com ferramentas de suporte.

UML é útil em ações do processo que envolvem a especificação do produto (software), tipicamente, as fases de análise e projeto. Outras fases, como implementação e teste, necessitam linguagens e ferramentas específicas que não UML.

IA847 - Prof. Eleri Cardozo 94

Model Driven Architecture (MDA)

Motivações:

● Sub-utilização de modelos (modelos tem sido entidades de documentação, não de desenvolvimento);

● Proliferação de middlewares e plataformas;

● Reuso de projeto X reuso de código.

OBS:

MDA não é um padrão para o desenvolvimento de aplicações distribuídas como OMA e CORBA, mas uma estratégia de utilização de modelos no desenvolvimento destas aplicações(ou seja, modelos são as entidades centrais em MDA).

IA847 - Prof. Eleri Cardozo 95

MDA: Idéias Básicas

● Especificar um sistema independente de plataforma;

● Especificar plataformas alvo;

● Selecionar uma plataforma para suportar o sistema;

● Transformar a especificação do sistema independente de plataforma em outra compatível com a plataforma selecionada (transformação de modelos).

OBS: a transformação de modelos pode ser plenamente automática (ideal), assistida, ou manual.

IA847 - Prof. Eleri Cardozo 96

MDA: Pontos de Vista

MDA define três pontos de vista:

1. Ponto de vista independente da computação: similar aos pontos de vista de empresa e informação do ODP. Modelos neste ponto de vista são denominados CIM (Computation Independent Model).

2. Ponto de vista independente de plataforma: similar aos pontos de vista de informação e computação do ODP. Modelos neste ponto de vista são denominados PIM (Plataform Independent Model).

3. Ponto de vista dependente de plataforma: similar aos pontos de vista de engenharia e tecnologia do ODP. Modelos neste ponto de vista são denominados PSM (Plataform Specific Model).

IA847 - Prof. Eleri Cardozo 97

MDA: Transformação de Modelos

PSM

PIM

PIM“Marcado”

Marcas

Mapeamento Plataforma

Transformação

IA847 - Prof. Eleri Cardozo 98

MDA: Marcação de Modelos

A marcação de modelos é utilizada para guiar o mapeamento de PIM para PSM. Estas marcas consistem de:

● estereótipos definidos por um perfil UML;

● valores etiquetados (tagged values);

● expressão OCL;

● comentário (anchor text).

IA847 - Prof. Eleri Cardozo 99

MDA: Exemplo de Transformação

PSM(Java/RMI)

PIM(UML)

PIM“Marcado”

(UML)

Marcas

Mapeamento Plataforma

Ex: <<RMI Interface>>

Ex: XMI Class ->RMI Remote Interface

Ex: RMI

IA847 - Prof. Eleri Cardozo 100

MDA: Especificação de Transformação

PSM

PIM MetamodeloPIM

MetamodeloPSM

Especificaçãoda

Transformação

linguagem origem

linguagem alvo

IA847 - Prof. Eleri Cardozo 101

MDA: Métodos de Transformação de Modelos

1. Transformação manual de modelos PIM. Exemplo: UML -> Java -> Java2WSDL

2. Transformação de um modelo PIM que segue um perfil UML. Exemplo: EJB UML Profile -> EJB

3. Transformação de um modelo PIM marcado. Exemplo: <<RMI Interface>>

4. Transformação de modelos PIM “computacionalmente completos” Exemplo: modelo PIM expresso em SDL

IA847 - Prof. Eleri Cardozo 102

MDA: Transformação Automática de Modelos

A transformação automática usualmente requer modelos PIM compatíveis com um perfil UML ou marcados segundo uma especificação de transformação.

DocumentoXMI

PIM

ferramentade projeto

Transformadorde

Modelo

Save As ...

public interface AccessSession extends Remote {

public String start(...) throws RemoteException { ...}...}

PSM

IA847 - Prof. Eleri Cardozo 103

MDA: Exemplo - CMtel

CMtel é um modelo de componentes independente de tecnologia. O desenvolvimento de aplicações CMtel segue as linhas de MDA.

CMtel define um perfil UML para a descrição de componentes e contêineres. Um modelo PIM é obtido especifindo-se componentes e contêineres segundo este perfil.

Máquinas de transformação de código (CMBuilders) processam este modelo PIM e geram modelos PSM para certas tecnologias (CORBA e Web Services).

IA847 - Prof. Eleri Cardozo 104

Componentes CMtel

ComponenteCMtel

Faceta

Receptáculo

Transmissorde Fluxo

Apresentadorde Fluxo

Emissorde Evento

Consumidorde Evento

PortasOperacionais

Portas de Fluxo

Portasde Sinal

Elemento deConfiguração

IA847 - Prof. Eleri Cardozo 105

CMtel: Perfil UML

IA847 - Prof. Eleri Cardozo 106

CMtel: Exemplo de Aplicação

IA847 - Prof. Eleri Cardozo 107

CMtel: CMBuilders

Utilizam XSLT (XML Stylesheet Language Transformation) para transformar um PIM segundo o perfil CMtel (expresso em XMI) em um PSM. A transformação ocorre em dois passos:

XSLT(xalan)XMI XMLXML

XMLXML XSLT

(xalan)CódigoCódigoCódigo

CódigoCódigo

XSLCódigoCódigo

XSLEspecificação daTransformação

PIM PSM

XMLSchema

XML Schemas sãogerados a partir doperfil UML

IA847 - Prof. Eleri Cardozo 108

CMtel: CMBuilders

CMBuilders geram:

● Interfaces das portas dos componentes;● Fábricas de componentes;● Localizadores de fábricas (home finders);● Implementação parcial das facetas;● Implementação integral das demais portas;● Contêineres para componentes;● Arquivos de instalação (sh, bat, build.xml).

CMBuilders podem gerar ainda montadores da aplicação (assemblers) a partir de diagramas UML de comunicação (colaboração).

IA847 - Prof. Eleri Cardozo 109

CCMBuilder (CORBA CMBuilder)

Plataforma alvo:

ORB Corba (Java)

Serviço dePropriedades

(CosProperties)

Serviço deStreaming

(A/V Streams)

Serviço deEventos

(CosEvent)

Suporta portasoperacionais

Suporta elementosde condiguração

Suporta portasde sinal

Suporta portasde fluxo

Serviço deNomes

(CosNaming)

Suporta localizaçãode componentes

No PSM, portas de componentessão especificadas em CORBA IDL

IA847 - Prof. Eleri Cardozo 110

WSCMtel (Web Services CMtel)

Plataforma alvo:

Apache AXIS

jUDDIServiço de

Difusão(Push/Pull)

Suporta portasoperacionais eelementos deconfiguração

Suporta portas desinal e de fluxo

Suporta localizaçãode componentes

No PSM, portas de componentessão especificadas em WSDL

IA847 - Prof. Eleri Cardozo 111

MDA: Exemplo - ACORD

Metamodelo para aplicações sensíveis a contexto (ASC):

● Define um perfil UML para ASC;

● Define marcas adicionais com valores etiquetados;

● Transformação PIM-PSM baseada em XSLT (Linux XML tools);

● Plataforma de suporte ao PSM: Java + JESS.

IA847 - Prof. Eleri Cardozo 112

Serviços Web

Definição do W3C: A Web service is a software application identified by a URI, whose interfaces and binding are capable of being defined, described and discovered by XML artifacts and supports direct interactions with other software applications using XML based messages via internet-based protocols.

Definição Alternativa: Serviços Web são entidades de composição acessíveis via protocolos centrados em XML cujas mensagens são transportadas por protocolos nativos da Web tais como HTTP, SMTP e TCP.

A maioria dos protocolos relativos a Serviços Web estão ainda em desenvolvimento e possuem pouco suporte para sua utilização (APIs, ferramentas, experiência de uso, etc.).

Os protocolos centrais estão caminhando para a estabilidade e possuem suporte para desenvolvimento e utilização.

Serviços Web são base para o desenvolvimento de arquiteturas orientadas a serviço (SOA).

IA847 - Prof. Eleri Cardozo 113

Serviços Web: Padronização

Serviços Web são padronizados por duas organizações:

● World Wide Web Consortium (W3C) - http://www.w3c.org

● Organization for the Advancement of Structured Information Standards (OASIS) - http://www.oasis-open.org

Os padrões relativos a Web Service são amplamente suportados pela indústria (Microsoft, Sun, IBM, Oracle, ...).

A Apache Software Foundation (http://www.apache.org) desenvolve em comunidade os protocolos mais importantes.

IA847 - Prof. Eleri Cardozo 114

Serviços Web: Protocolos

http://roadmap.cbdiforum.com/reports/protocols/

IA847 - Prof. Eleri Cardozo 115

Serviços Web: Uso Básico

http://roadmap.cbdiforum.com/reports/protocols/

IA847 - Prof. Eleri Cardozo 116

CORBA X Serviços Web

XML

IDL WSDL

SOAP/HTTPIIOP/TCP

UDDICosNaming

WS-*CORBA Services

BPEL, WSIL

Objetos Serviços

RPC, MsgsRPC

IOR URI

CDR

Forte Fraco

Entidades de Distribuição

Acoplamento

Referência Remota

Interação

Descrição de Interfaces

Transporte

Localização

Formatação

Composição/Coreografia

Serviços

CORBA Serviços Web Característica

POA Proc. da Invocação

CORBA DomainServices

BusinessDomain

Specific Exts.

Aplicações p/ DomíniosEspecíficos

IA847 - Prof. Eleri Cardozo 117

Serviços Web: Uso Avançado

Processode negócio

Ferramentade Edição

ScriptBPEL

Serviços (intra-organização)

Serviços (inter-organização)

composiçãocoreografia

ServiçoComposto

Máquina deComposição

IA847 - Prof. Eleri Cardozo 118

Serviços Web: Desenvolvimento

O desenvolvimento de Serviços Web requer plataformas que ofereçam suporte para a criação, instalação e invocação destes serviços.

Exemplos de Plataformas

● Apache SOAP (desenvolvimento “próximo ao fio”)● Apache Axis/Axis2● Sun ONE● Microsoft .NET● Oracle JDeveloper

Exceto a plataforma .NET que privilegia C#, todas as demais plataformas são baseadas em Java.

IA847 - Prof. Eleri Cardozo 119

Serviços Web: Plataforma AxisApache Tomcat

Plataforma Axis(servlet)

Permite estender a plataforma(via pré e pós-processamento demensagens SOAP)

HTTP POST

Dispatcher

WEB-INF/lib

serviços:WS-Policy

WS-Security

Aplicativos:java2wsdl wsdl2javaSoapMonitorAdminClient

Serviços Web

WEB-INF/services

IA847 - Prof. Eleri Cardozo 120

Serviços Web: Desenvolvimento

InterfaceWSDL

CompiladorWSDL

(wsdl2java)

GeradorWSDL

(java2wsdl)

InterfaceJava

Stubs doCliente

Skeletondo Servidor

Impl.Vazia

Arquivos deInstalação e

Desinstalação

Estilo “Objetos Distribuídos”

Impl.Completa

Instalador/Desinstalador(ClientAdmin)

Serviço(.jar)

jar

axis2/WEB-INF/lib

URI do serviço

IA847 - Prof. Eleri Cardozo 121

Serviços Web: Desenvolvimento

Java Object

<service name="AccessService" scope="application"> <description> GigaBOT Access Service </description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/> </messageReceivers> <parameter name="ServiceClass">accessservice.AccessService</parameter></service>

Ant

build.xml

ServiçoInstalável

(.aar)

Descritor do Serviçoaxis2/WEB-INF/services(hot deployment)

Estilo POJO (PlainOld Java Object)

IA847 - Prof. Eleri Cardozo 122

Web Services: Clientes

Invocação Estática: Utiliza stubs como em objetos distribuídos. Stubs possuem a URI do serviço hardcoded.

Invocação Dinâmica: utiliza classes auxilares para construir uma invocação passo-a-passo (similar ao DII do CORBA). Dependendo do estilo de invocação, o cliente pode suprir diretamente a URI do serviço ou seu nome no UDDI (mais a URI do UDDI).

A invocação estática é type-safe, enquanto a dinâmica não é. Entretanto, na invocação dinâmica o cliente pode escolher o serviço em tempo de execução.

IA847 - Prof. Eleri Cardozo 123

Web Services: Exemplo (cliente)package client;import javax.xml.namespace.QName;import org.apache.axis2.AxisFault;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.rpc.client.RPCServiceClient;

public class AccessRPCClient {

public static void main(String[] args1) throws AxisFault { try { RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); EndpointReference targetEPR = new EndpointReference("http://143.106.50.145:8080/axis2/services/AccessService"); options.setTo(targetEPR); // create session QName opCreateSession = new QName("http://accessservice/xsd", "createSession"); Object[] opArgs = new Object[] {"[email protected]", "cardozo", 1, 3}; Class[] returnTypes = new Class[] { String.class }; Object[] response = serviceClient.invokeBlocking(opCreateSession, opArgs, returnTypes); String sessid = (String) response[0]; // Displaying the result System.out.println("createSession : " + sessid);} catch (Exception exc) {

System.out.println("Exception: " + exc.toString());}

}}

IA847 - Prof. Eleri Cardozo 124

Alternativas a Web Services

Apesar das vantagens claras de Web Services sobre tecnologias de objetos distribuídos como CORBA e RMI, muitos tem criticado esta tecnologia, por exemplo:

● SOAP muito complexo para transportar documentos XML;

● WS-* muito extensos e pouco utilizados;

● Navegadores não suportam diretamente Web Services;

● Data binding estrito dificulta evolução das aplicações.

IA847 - Prof. Eleri Cardozo 125

Alternativas a Web Services

Quais são as alternativas ?

● REST (Representational State Transfer);

● JavaScript + JSON (JavaScript Object Notation);

● AJax (Asynchronous JavaScript and XML).

O que estas alternativas propõem ?

● Simplicar a interação (HTTP + XML);

● Navegador como contêiner da aplicação no lado cliente (JavaScript);

● Data binding menos estrito (DOM/SAX versus XPath/XSLT).

IA847 - Prof. Eleri Cardozo 126

REST

REST é um estilo arquitetural cuja realização depende apenas de HTTP e XML. Idéia:

HTTP(API)

HTTP(API)

POST/DELETEGET

HTTP

XMLParserXML

recurso

Aplicação

estado

Cliente Servidor

IA847 - Prof. Eleri Cardozo 127

REST

Em REST a aplicação é modelada como um conjunto de recursos operados por requisiçoes HTTP (POST/GET/DELETE).

Requisições/resposta carregam documentos XML.

O estado da aplicação é acessado e alterado por meio de requisições HTTP.

Nenhum serviço adicional é especificado (exemplo: transações).

Não existe suporte para orquestração (como BPEL).

Extremo oposto a Web Services em termos de simplicidade.

Ideal para aplicações tipo “browse catalog”.

IA847 - Prof. Eleri Cardozo 128

JavaScript/JSONJavaScript foi inicialmente concebida para computações simples como checagem de consistência em formulários HTML.

JSON é uma representação de dados na forma atributo-valores.

Funções convertem representação textual em “objetos” e vice-versa (similar a JAXB).

Utilizado no GoogleMaps.

JavaScript

JSON Objects

eval() toJSONString()

lógica

JSON Text(pode ser XML)

JSON Text

parseJSON() JSON Objects

IA847 - Prof. Eleri Cardozo 129

JSON: Representação Textual de Objetos

var records = { "data" : [ { "First Name" : "Bob", "Last Name" : "Smith", "Email" : "[email protected]", "Phone" : "(555) 555-1212", }, { "First Name" : "Jan", "Last Name" : "Smith", "Email" : "[email protected]", "Phone" : "(555) 555-3434", }, { "First Name" : "Sue", "Last Name" : "Smith", "Email" : "[email protected]", "Phone" : "(555) 555-5656", } ]};

<data> <item> <FirstName>Bob</FirstName> <LastName>Smith</LastName> <Email>[email protected]</Email> <Phone>(555) 555-1212</Phone> </item> <item> <FirstName>Jan</FirstName> <LastName>Smith</LastName> <Email>[email protected]</Email> <Phone>(555) 555-3434</Phone> </item> <item> <FirstName>Sue</FirstName> <LastName>Smith</LastName> <Email>[email protected]</Email> <Phone>(555) 555-5656</Phone> </item></data>

IA847 - Prof. Eleri Cardozo 130

JavaScript/JSON

IA847 - Prof. Eleri Cardozo 131

Objetos JavaScript

var obj = { a : Object, b : Array, c : false, d : null, init : function() { // set local object vars here this.run(); }, run : function() { // run bulk of behavior here }}function initializer() { obj.init(); // other init() methods go here}addEvent(window,'load',inializer);

IA847 - Prof. Eleri Cardozo 132

JSON: Lado Servidor

O servidor poderá utilizar parsers JSON para conversão de objetos textuais JSON em, por exemplo, Java.

Axis2 suporta JSON:

HTTP

SOAP(XML)

JSONText

HTTP

IA847 - Prof. Eleri Cardozo 133

Ajax

Utiliza JavaScript para processar requisições HTTP transportando documentos XML:

http_request.open('GET', url, true);http_request.send(null)

if(http_request.status == 200) { alert(http_request.responseText);} else {

alert('HTTP request failed');}

IA847 - Prof. Eleri Cardozo 134

Ajax Como Cliente de Serviços Web

<html><head>...<script type="text/javascript" src="scripts/prototype.js"></script><script type="text/javascript" src="scripts/ws.js"></script><script type="text/javascript">function sayHello(name, container) { var call = new WS.Call('/AjaxWS/services/HelloWorld'); var nsuri = 'http://example'; var qn_op = new WS.QName('sayHello',nsuri); var qn_op_resp = new WS.QName('sayHelloResponse',nsuri); call.invoke_rpc(qn_op, new Array( {name:'name',value:name} ),null, function(call,envelope) { var ret = envelope.get_body().get_all_children()[0]. get_all_children()[0].get_value(); container.innerHTML = ret; $('soap').innerHTML = arguments[2].escapeHTML(); } );}</script></head>

IA847 - Prof. Eleri Cardozo 135

Conclusão

HTTP + XML é atrativo pela simplicidade

Cliente Rico (Java + Web Service) versus Cliente Pobre (JavaScript + Ajax/JSON)

Aparentemente é muito difícil disseminar o uso de serviços comuns (WS-* terá o mesmo fim de CORBA Services?)

Grandes provedores de informação oferecem alternativas mais simples a Web Services (Amazon, Google, ...)

O que é de fato a Web 2.0?