Parte1-Segundo Bimestre

Propaganda
Sumário
I - Introdução
Estrutura do trabalho
II - A Evolução dos Sistemas Distribuídos
Arquitetura Cliente / Servidor
Arquitetura Orientada a Objetos
Internet / Intranet
Arquiteturas Distribuídas Orientadas a Objetos
CORBA x DCOM
J2EE x .NET
Web Services
III – Arquitetura
Componentes (components)
Papéis (funções) – Roles
Operações – Operations
IV - Protocolos
XML – Extensible Markup Language
Exemplo de documento XML
Elementos XML (XML elements)
Elementos XML possuem relacionamentos
Atributos XML
XML embutido em HTML
XML News
XML Namespaces
Usando Namespaces
SOAP (Simple Object Access Protocol)
Bloco de estrutura SOAP
Esqueleto de mensagens SOAP
Envelope SOAP
O xmlns:soap namespace
O Atributo encodingStyle
Header SOAP
O atributo Actor (autor)
O atributo mustUnderstand
SOAP Body
WSDL
Estrutura WSDL
WSDL ports
Bindings SOAP
UDDI – Universal Description, Discovery and Integration
Discovery direto
Discovery indireto
API UDDI
UDDI Business Registry
Páginas Brancas (White Pages)
Páginas Amarelas (Yellow Pages)
Páginas Verdes (Green Pages)
Arquitetura UDDI
Sites-Operadores
7
9
10
11
11
12
13
14
14
15
16
17
20
20
21
22
23
24
26
26
27
28
28
29
30
31
31
32
32
33
33
34
34
35
36
36
37
38
38
38
39
39
39
40
40
40
41
41
42
Registrars
V – Segurança
Segurança ao nível de Transporte
SSL
PKI
IPSec
Segurança ao nível de XML
XKMS (XML Key Management Services
WS-Security
VI - Aplicação de WS em B2B
Vantagens e Desvantagens do WS
VII - Como o Mercado apoia o padrão
Microsoft
Sun Microsystems
Oracle
META Group
OASIS
TechMetrix Research
Forrester Research Inc
VIII – Conclusão
Referências
42
43
44
44
44
45
47
48
48
50
52
54
54
54
55
55
55
56
56
57
58
I - Introdução
Durante o curso de especialização, tivemos contato com as principais
tecnologias de sistemas de informação e acompanhamos o sua evolução
impulsionada, entre outros motivos, pela enorme necessidade de integração
entre os sistemas. Optamos por abordar neste trabalho de final de curso uma
nova tecnologia que se apresenta atualmente como a preconizadora de uma
grande revolução nas comunicações entre as aplicações: os Web Services.
Alguns dos aspectos da tecnologia de Web Services nos despertam
muita atenção porque, em primeiro lugar, eles são processados via Internet (à
qual praticamente toda empresa está conectada), Intranet ou outras redes
baseadas em IP. Em segundo lugar, importantes fornecedores de tecnologia,
como IBM, Microsoft, Oracle e Sun, concordaram em apoiar um conjunto de
padrões que definem como sistemas diferentes devem interagir entre si, num
nível até então improvável de cooperação entre concorrentes. Além disso, a
abordagem de Web Services não torna necessariamente as tecnologias de
integração anteriores obsoletas, mas viabiliza tipos de integração anteriormente
muito complexos.
Ao longo deste trabalho pretendemos apresentar ao leitor de forma
abrangente os principais aspectos desta nova tecnologia e colocá-lo em
contato com a nova tendência de desenvolvimento de software proposto por
ela. A fim de obter informações atualizadas, este trabalho contou com uma
pesquisa realizada exclusivamente em sites da Internet, onde um vasto
material sobre este assunto pode ser encontrado com facilidade. Os endereços
acessados encontram-se listados ao final deste trabalho onde informações
ainda mais aprofundadas podem ser obtidas.
Estrutura do trabalho
No capítulo seguinte é descrito de maneira breve a evolução dos sistemas
computacionais distribuídos desde a arquitetura centralizada, Client-Server,
Aplicações Distribuídas, Objetos Distribuídos, o surgimento de aplicações para
a Internet até a necessidade de se obter uma interoperabilidade entre estas
aplicações nos dias atuais.
O capítulo III descreve mais detalhadamente o conceito de Web Services e
apresenta a sua Arquitetura e elementos.
No capítulo IV serão apresentados os principais protocolos utilizados em Web
Services, tais como SOAP, UDDI, WSDL pretendendo assim mostrar como
estes protocolos se encaixam para formar a base desta nova arquitetura.
O capítulo V dedica-se a rever alguns dos principais protocolos de segurança
desenvolvidos para suportar as aplicações distribuídas e mostrar como eles
podem ser aplicados para garantir transações seguras em Web Services. Além
de citar os novos protocolos especialmente desenvolvidos para este fim.
O sexto capítulo deste trabalho apresenta como a arquitetura de Web Services
se encaixa neste novo contexto de aplicações distribuídas e B2B além de
apresentar quais os benefícios que ela traz tanto aos desenvolvedores quanto
para os usuários. Neste capítulo também, será apresentado quais as situações
em que a aplicação de Web Services não é a mais adequada.
No capítulo VII apresentamos as ações de algumas das principais empresas
envolvidas na padronização da Arquitetura de Web Services, quais as
tendências em relação à movimentação do mercado em torno do Web Services
e algumas pesquisas que apontam o que está previsto para os próximos anos.
II - A Evolução dos Sistemas Distribuídos
Arquitetura Cliente / Servidor
No início da década de 90, a grande novidade nos sistemas corporativos era a
arquitetura cliente/servidor, expressão que designa um tipo de arquitetura de
sistemas que se contrapôs a dois modelos utilizados anteriormente: os
sistemas centralizados e os micros isolados.
No primeiro, todos os dados e funcionalidade do sistema da empresa residiam
em computadores de grande porte, os chamados Mainframes. Os terminais
utilizados não possuíam nenhuma capacidade de processamento ou
armazenamento de dados local, caracterizando um sistema extremamente
inflexível.
Com o adventos das LANs (Local Area Network) a situação começou a
melhorar. Os arquivos e programas mais importantes passaram a residir num
servidor de arquivos, protegidos por senhas e backups automáticos. O
gerenciamento das impressoras passou ser também centralizado, otimizando
sua utilização. Todo o processamento ainda se concentrava na própria estação
de trabalho do usuário.
Entretanto, os sistemas baseados em bancos de dados, espinha dorsal da
maioria das empresas, continuavam a residir nos Mainframes, com interfaces
não-amigáveis. Para
integrar os sistemas de bancos de dados aos
microcomputadores que tornavam-se cada vez mais comuns nas mesas dos
usuários, começou a ser difundido o conceito de arquitetura cliente/servidor. A
grande novidade desta arquitetura é a separação dos aplicativos corporativos e
do processamento de transações em duas partes, uma executada no servidor e
outra na máquina do cliente. Nesses aplicativos distribuídos, a porção servidor
é responsável pela segurança e pela integridade dos dados, enquanto o cliente
serve para exibir os dados numa interface amigável e de modo personalizável
ao usuário final. Este modelo, embora amplamente difundido, possui um alto
custo de suporte e manutenção.
Arquitetura Orientada a Objetos
Na programação distribuída usando a arquitetura cliente-servidor, clientes e
servidores podem ser implementados usando qualquer paradigma de
programação. Assim, é possível que um serviço específico seja executado por
um método de algum objeto. No entanto, mesmo que o cliente também tenha
sido desenvolvido orientação a objetos, na comunicação entre o cliente e o
servidor esse paradigma deve ser esquecido, devendo ser utilizado algum
protocolo preestabelecido de troca de mensagens para a solicitação e resposta
ao serviço.
Um sistema de objetos distribuídos é aquele que permite a operação com
objetos remotos. Dessa forma é possível, a partir de uma aplicação cliente
orientada a objetos, obter uma referência para um objeto que oferece o serviço
desejado e, através dessa referência, invocar métodos desse objeto, mesmo
que a instância desse objeto esteja em uma máquina diferente daquela do
objeto cliente.
O conceito básico que suporta plataformas de objetos distribuídos é o conceito
de arquiteturas de objetos. Essencialmente, uma arquitetura orientada a
objetos estabelece as regras, diretrizes e convenções definindo como as
aplicações podem se comunicar e interoperar. Dessa forma, o foco da
arquitetura não é em como a implementação é realizada, mas sim na infraestrutura e na interface entre os componentes da arquitetura.
No paradigma de arquiteturas de objetos, há três elementos principais. A
arquitetura OO fornece uma descrição abstrata do software, que categorias de
objetos serão utilizadas, como estarão particionados e como interagirão. As
interfaces são as escrições detalhadas das funcionalidades do software.
Finalmente, a implementação é composta por módulos de software que
suportam as funcionalidades especificadas nas interfaces.
O uso de interfaces permite isolar a arquitetura de um sistema de sua
implementação.
Dessa forma, o sistema pode ser construído com um alto grau de
independência em relação às implementações específicas de suas
funcionalidades, ou seja, é possível substituir implementações específicas com
pequeno impacto sobre o sistema como um todo.
A adoção do paradigma de arquitetura de objetos permite também atingir um
alto grau de interoperabilidade através da adoção de uma infra-estrutura
padronizada de comunicação entre objetos através das interfaces. Assim, cada
componente da arquitetura deve se preocupar apenas em como se dará sua
comunicação com a infra-estrutura de comunicação.
Internet / Intranet
A partir de 1994, o fenômeno da Web mostrou um novo modelo de integração
de sistemas, constituindo-se de padrões abertos, com maior independência em
relação aos fornecedores, trazendo um novo enfoque para a relação
cliente/servidor. Por meio de formulários desenvolvidos em linguagem HTML
(Hypertext Markup Language), clientes e servidores podem trocar informações,
pode-se ter acesso a bancos de dados, documentos ficam a disposição de
usuários na rede e grupos de trabalho encontram meios para o
desenvolvimento de trabalhos colaborativos.
Todas estas facilidades encontradas na Web acabaram sendo levadas para
dentro das corporações, por meio de uma versão doméstica da Internet, a
Intranet, tecnologia que vem varrendo o mundo empresarial. Embora a Intranet
ainda apresente limitações no desenvolvimento de aplicações que acessem
bancos de dados no estilo do modelo cliente/servidor, seu baixo custo e
facilidade de implantação vêm fazendo com que cada vez mais empresas
adotem esta tecnologia.
Nos últimos anos diversos padrões foram propostos para a implementação do
conceito de sistemas distribuídos. Um modelo muito popular tem sido o de
separação de uma aplicação em camadas, apresentação, negócio e dados. No
entanto, ainda nos deparamos com alguns problemas que impedem que este
modelo desenvolva-se plenamente, tais como: complexidade de
implementação e, principalmente, implantação. Sistemas escritos em diferentes
linguagens, e não raro em plataformas distintas, sofrem ainda de um mal bem
mais grave, a incompatibilidade entre os tipos de dados, além da necessidade
de forte envolvimento das equipes técnicas de ambos os lados no processo de
integração. Estas tem sido as principais causas da baixa integração entre os
sistemas de clientes e fornecedores mesmo com toda a facilidade de infraestrutura de comunicação existente hoje em dia.
Arquiteturas Distribuídas Orientadas a Objetos
A necessidade de integração das aplicações que se encontravam em
ambientes heterogêneos e a necessidade de comunicação entre elas em
tempo-real fez com que a computação distribuída ganhasse cada vez mais
espaço no mundo atual. O DCE (Distributed Computer Environment) foi o
começo dessa tendência de computação distribuída em empresas, porém o
DCE não era orientado a objeto, assim surgiu o CORBA, que é uma arquitetura
de objetos para computação distribuída. e junto com o CORBA veio o DCOM
da Microsoft. O DCOM era o principal concorrente do CORBA, a diferença
entre essas duas tecnologias é que o CORBA roda em multiplataforma,
enquanto o DCOM só em ambientes Windows.
CORBA x DCOM
O padrão CORBA (Common Object Request Broker Architecture), é um
conjunto de especificações criado pela OMG (Object Management Group), um
grupo formado por mais de 800 empresas da indústria de informática.
Um sistema baseado em CORBA é composto por objetos distribuídos, que são
elementos de software que implementam um determinado processamento e
possuem uma determinada interface. O CORBA define uma camada
intermediária (middleware) entre os objetos distribuídos da aplicação e a rede
de comunicação. A localização do objeto e a linguagem na qual ele está
implementado são mantidos totalmente transparentes. Detalhes de
implementação e localização não precisam ser conhecidos para se fazer uma
requisição a um objeto. Tudo que é necessário saber de um objeto CORBA
para requisitá-los, é a sua interface. A interface de um objeto é definida através
da linguagem IDL (Interface Definition Language), que é totalmente declarativa,
não trazendo nenhum detalhe de implementação de objeto. A linguagem IDL
permite definir os métodos e atributos de um objeto e exceções que ele pode
gerar. Ela permite a independência de sistema operacional e de linguagem de
programação para os objetos. Objetos clientes e servidor em diferentes
linguagens e executando em diferentes sistemas operacionais podem
interoperar sem nenhum problema.
O DCOM foi criado pela Microsoft em 1996 como uma evolução natural do
OLE/COM ( Object Linking Embedding/Component Object Model), lançado
em 1993 com o objetivo de suportar a comunicação entre objetos distribuídos.
O DCOM faz uso dos investimentos realizados no COM, tais como aplicações,
componentes, ferramentas e conhecimento para ingressar no mundo da
computação distribuída baseado nas padronizações já existentes. Trata-se de
um protocolo que possibilita componentes de software se comunicarem
diretamente sobre uma rede de maneira confiável. O COM define como deve
ser a interação entre os objetos e seus clientes, sem a intermediação de
qualquer componente do sistema.
Analogamente às DLLs, que são códigos compilados prontos para uso, o
modelo de componentes do DCOM seria uma versão “orientada a objeto” da
DLL, com poderes ampliados tais como a reutilização de código.
J2EE x .NET
Com o J2EE (Java 2 Entreprise Edition) e a plataforma .NET, Sun
Microsystems e Microsoft, respectivamente, travam um novo duelo de titãs na
competitiva arena de desenvolvimento de aplicações para Internet.
Com a .NET, a Microsoft introduziu uma plataforma capaz de competir em
iguais condições com a J2EE (Java 2 Platform, Enterprise Edition), da Sun
Microsystems. Java
representa mais do que uma linguagem de programação, pois, ao lado da
tecnologia de máquinas virtuais (JVM), permite compilar os programas, sem
alterações, para serem executados em diversos equipamentos. A plataforma
da Microsoft era, até pouco tempo atrás, essencialmente baseada no Windows
e estava atrelada ao mundo do PC. Com o advento da .NET, a primeira grande
diferença é que o ambiente de desenvolvimento agora ampliou sua atuação
também para outros dispositivos e para acrescentar a contribuição de
ferramentas de parceiros.
Por outro lado, Mais do que uma plataforma de desenvolvimento de aplicações,
a Sun Microsystems acena para o mercado com uma opção que segue o ideal
de se trabalhar com soluções e sistemas abertos, enriquecidos por
comunidades de desenvolvedores.
Um outro fator muito importante e que promete aumentar ainda mais a disputa
entre as duas plataformas é que tanto J2EE quanto .NET são compatíveis com
os principais padrões relacionados aos Web Services, entre eles SOAP, WSDL
e UDDI.
Web Services
Web Services tratam-se de uma forma simples e padronizada de utilizar a
malha da Internet para implementar a integração entre sistemas heterogêneos,
de forma bastante flexível, substituindo as tradicionais estratégias de EAI.
O significado de “Enterprise Application Integration” (EAI), cuja tradução seria
“Integração de Aplicações Corporativas”, mudou com o tempo. Há algum
tempo, o termo era exclusivamente usado para designar a tentativa de uma
empresa de interligar suas aplicações internas de negócios de forma que os
dados possam ser compartilhados entre elas.
Recentemente, o significado foi expandido para também englobar a união de
dados e processos com parceiros comerciais externos.
Não é raro que o ambiente de tecnologia seja bastante heterogêneo dentro de
uma mesma empresa, com sistemas distintos para cada aplicação. Novas
tecnologias e frameworks de desenvolvimento estão surgindo, tendo como
objetivo uma maior integração entre os diversos aplicativos e serviços
disponíveis na Internet. Este novo modelo em crescimento deve tratar tarefas
complexas, como o gerenciamento de transações, através da disponibilização
de serviços distribuídos que utilizem interfaces de acesso simples e bem
definidas.
Web Services permitem a integração entre sistemas distintos de forma
bastante simples e direta. Uma das regras que nortearam a criação do padrão
foi "não invente nada de novo". Basicamente um Web service funciona como
uma página Web, com a diferença que ao invés de HTML, utiliza-se XML.
Desta forma os dados podem ser descritos e o pacote da mensagem pode ser
manipulado com grande facilidade tanto por quem envia, quanto por quem
recebe.
Download