LEONARDO CEZAR DE FREITAS
RA: 032.333
WEB SERVICES
FACULDADE DE TECNOLOGIA DE AMERICANA
2006
LEONARDO CEZAR DE FREITAS
RA: 032.333
WEB SERVICES
Monografia apresentada ao curso de Tecnologia
em Processamento de Dados da Faculdade de
Tecnologia de Americana – FATEC AM como
parte da matéria EAPS.
Orientador: Profº Sergio Roberto Sigrist
FATEC - AMERICANA
SEGUNDO SEMESTRE DE 2006
II
Dedico
este
trabalho
a
todos
os
profissionais da área de Tecnologia da
Informação,
que
com
seus
esforços
contribuem para cada vez mais consolidar
reconhecimento de nossa profissão.
Agradecimentos
Ao Prof. Sergio Roberto Sigrist
Por aceitar e orientar-me nesta monografia.
Aos Professores da Faculdade de Tecnologia de Americana
Por todo o trabalho executado com o objetivo de ensinar-me.
IV
"O fator decisivo para vencer o maior
obstáculo é, invariavelmente, ultrapassar o
obstáculo anterior."
Henry Ford
V
Resumo
Web Services é uma tecnologia nova, mas sua aceitação é grande e encontra-se
presente em muitas plataformas de aplicativos. Com o apoio de grandes corporações
de software existentes no mercado, como Microsoft, IBM, Sun e BEA, esta tecnologia
tem mostrado sua capacidade em atender às novas necessidades tecnológicas e
também dos negócios: promover uma integração de funcionalidades ao mesmo tempo
em que oferece escalabilidade, padronização e baixo custo de implementação e
manutenção.
Atualmente, um profissional que atue diretamente com desenvolvimento de
software, ou mesmo aquele que mantém infraestruturas tecnológicas, e principalmente
os diretores e gerentes das empresas, sejam elas de TI ou não, devem reconhecer o
potencial de Web Services e estudá-lo, porque ele promete ser item muito importante
na evolução da TI corporativa.
Este trabalho tem o objetivo de apresentar os elementos e tecnologias
essenciais para o funcionamento dos Web Services, bem como também mostrar o
impacto e os resultados que o Web Services vem causando nos negócios das
empresas.
VI
Abstract
Web Services is a new technology, but its acceptance is great and its present
today in many application platforms. With the support of big companies existents in the
market, like Microsoft, IBM, Sun and BEA, this technology has showed its capacity to
supply the technological and business needed: to promote an integration of
functionalities ate the same time that offers scalability, standardization and lowers costs
of implementation and maintenance.
Actually, a professional who works directly in software development, even those
who maintains technological infrastructures, companies CIOs and top staff, are they of
IT department or not, they must accept the potential of the Web Services technology
and study it, because it is the next chapter in the evolution of corporative IT.
The major objective of this paper is present the elements and essential
technologies that makes Web Services functional, and to show the impact of the results
that Web Services have been making in the companies business today.
VII
Sumário
1. Introdução ...................................................................................................
9
2. SOA – Service Oriented Architecture ......................................................... 10
3. O Web Service ............................................................................................ 14
3.1 Esquema de funcionamento de um Web Service ................................... 15
4. Tecnologias ................................................................................................ 17
4.1. Protocolo HTTP……………………………………………………………... 17
4.2. XML – Extensible Markup Language …………………………………….. 22
4.3. SOAP – Simple Object Access Protocol …………………………………. 26
4.3.1 Exemplos de mensagens SOAP ....................................................... 27
4.3.1.1 Envio de uma solicitação de execução de um Web Service ........ 27
4.3.1.2 Resposta de uma solicitação de execução de um Web Service .. 28
4.4 WSDL – Web Service Description Language …………………………… 30
4.4.1 Estruturas do WSDL ........................................................................ 31
4.5 - UDDI - Universal Description, Discovery and Integration …………… 33
4.5.1 O UDDI Business Registry (UBR) ……………………………….…… 35
5. SOA, Web Services no ambiente de negócios ........................................... 36
5.1 Benefícios .............................................................................................. 37
5.2 Limitações e aspectos críticos ............................................................... 39
6. Conclusão ................................................................................................... 40
7. Bibliografia .................................................................................................. 41
1. Introdução
Web Services (ou Serviços Web) tem se apresentado como uma nova e
importante tecnologia de computação neste começo de século. Todas as maiores
empresas de software do mundo estão desde o momento da especificação desta
tecnologia promovendo seu uso, crescimento e até mesmo a adoção destes em suas
plataformas de desenvolvimento de softwares, como é o caso da estratégia adotada
pela plataforma Microsoft.NET, que desde do inicio foi promover um ambiente
integrado de desenvolvimento de componentes que pudessem utilizar Web Services de
uma maneira quase que nativa.
Mas não é somente pelo fato de ser uma nova tecnologia que tem feito do Web
Services um nome tão falado na industria de TI. Através de sua proposta de
funcionamento, que é a de integrar funcionalidades e reutilizar rotinas, tornando os
softwares automatizados, distribuídos, gerenciáveis e escaláveis, o Web Services
atingiu de maneira certeira a estratégia de muitos gerentes e diretores da área de TI: a
de utilizar uma plataforma já existente de aplicativos, mas provendo sua integração e
distribuição de uma maneira simples, utilizando conjuntos de hardwares e softwares
existentes. O resultado é uma sinergia de esforços e redução de muitos custos.
Neste trabalho de pesquisa será apresentado no segundo capítulo o que é uma
arquitetura orientada a serviços. É importante primeiramente entender os conceitos
envolvidos neste tipo de arquitetura, pois o Web Services nada mais é do que uma
implementação desta.
O capítulo três será exclusivamente voltado para a apresentação do Web
Services, mostrando seus detalhes e composições internas e citando as tecnologias
que são utilizadas como base para seu funcionamento. Cada uma das tecnologias
apresentadas será explicada em detalhes através do capitulo quatro.
No ultimo capítulo deste trabalho serão comentados o impacto do Web Services
no mundo corporativo, alguns casos de uso da tecnologia e os principais benefícios e
aspectos críticos (ou até problemáticos) dos serviços web.
2. SOA – Service Oriented Architecture
Antes de mostrar o Web Services em detalhes, é preciso apresentar o conceito
tecnológico no qual este é baseado. Desta maneira, compreende-se que o Web
Services não é um elemento novo e diferente. Ele baseia-se no conceito de aplicações
orientadas a serviço, a arquitetura SOA.
De acordo com uma definição da IBM [1], “SOA é um estilo de arquitetura de
softwares que visa interligar os negócios da empresas através de uma rede de
comunicação. A rede de comunicação pode existir inteiramente no mesmo escritório,
ou podem estar dispersas geograficamente, e até mesmo tecnologicamente,
combinando serviços de negócio rodando em escritórios em cidades distantes. Ao
mesmo tempo, estes serviços podem estar rodando também em seu próprio
computador”.
Figura 1: Evolução das arquiteturas de aplicações de Tecnologia de Informação
A figura 1 mostra a evolução das arquiteturas de software desde o inicio da década
de 80, quando surgiram os primeiros aplicativos comerciais, que rodavam somente em
um computador, em uma época em que não existia o conceito de servidor de banco de
dados ou servidores de aplicações.
O esquema mostra também os modelos de arquitetura de software que dominaram
a década de 90, quando foi introduzido o conceito de cliente e servidor. Nestes anos,
os softwares que foram desenvolvidos executavam em estações de computadores
distribuídas dentro da empresa, e utilizavam um servidor de dados banco de dados
para centralizador e armazenar as informações.
Com o boom da Internet no início do século XXI, as empresas tiveram a
necessidade de desenvolver softwares mais flexíveis, para que pudessem rodar em
varias plataformas, tanto a parte servidora quando a parte cliente. Foi então que houve
mais uma divisão, dando origem a arquitetura três camadas: os softwares passaram a
serem compostos pela interface, ou camada de apresentação, onde o usuário grava e
consulta os dados; a camada de negócio, responsável por tratar os dados que são
gravados ou consultados pelo usuário, que pode rodar no mesmo computador ou até
então em servidores de aplicativos específicos para tal finalidade; e finalmente, a
camada de banco de dados, que fica indisponível para a interface, podendo ser
manipulada somente pela camada de negócio.
O modelo de três camadas foi amplamente difundido e ainda hoje é o modelo
predominante nos ambientes de softwares das grandes corporações.
O modelo mais recente é o modelo orientado a serviços. Este divide a camada de
negócio da arquitetura três camadas em duas partes: uma primeira, que seriam os
processos, são as mesmas funcionalidades que já existiam na camada de negócio; e
uma segunda, a de funções, permite a camada de negócio interagir com outras
camadas de negócio de outros aplicativos, localizados no mesmo ambiente de
execução ou até mesmo em ambientes de execução remotos, distribuídos na Internet
ou na rede privada da companhia.
Prova-se que uma arquitetura orientada a serviços vem a agregar funcionalidades
numa arquitetura existente, mas não substituí-la por completo.
Numa visão objetiva, para existir uma arquitetura SOA, basta existirem as
aplicações clientes, que são as entidades que buscam serviços e invocam sua
execução, e os servidores responsáveis por prover estes serviços, gerenciarem sua
execução e devolverem os resultados às solicitações dos clientes. Esta interação entre
as aplicações clientes e os provedores de serviços deve ocorrer dentro de um canal de
comunicação, e os dados transferidos devem ser transcritos em um protocolo
especifico da arquitetura SOA empregada.
Atualmente, existem diversos tecnologias para o desenvolvimento de um ambiente
de software orientado a serviços, como por exemplo, CORBA, RMI, DCOM. Estes que
foram citados precisam rodar em portas especiais de comunicação, o que pode
invalidar o software, dependendo da infraestrutura de comunicação existente.
É
justamente nesta deficiência que o Web Service leva grande vantagem, porque ele
transmite uma mensagem XML utilizando HTTP como agente de transporte, através
apenas portas padrões de comunicação, o que permite uma simples implementação
mesmo em uma rede de comunicação cheia de restrições de segurança.
O modelo de funcionamento do SOA permite aos administradores de TI expandirem
a oferta de serviços, para atenderem novas rotinas de negócios, ou mesmo melhorar a
qualidade das aplicações, atualizando hardware e sistema operacionais, sem prejudicar
o funcionamento de todo o ambiente já em execução.
Do
ponto
de
vista
técnico,
uma
arquitetura
SOA
permite
um
grande
reaproveitamento de rotinas e códigos de aplicativos já existentes (apenas sendo
necessário criar as interfaces para estes no ambiente de serviços) e também melhorar
o serviço, alterando plataforma de funcionamento ou hardware, sem que sejam
necessárias alterações na aplicação cliente, e também este não note diferença alguma.
Em um ambiente orientado a serviço, é recomendado que cada serviço seja
proprietário de si mesmo, ou seja, o serviço deve conter uma parte dedicada a sua
execução e funcionamento (o componente, programa ou executável), e também sua
declaração de interface, que permite aos programas clientes saberem como interagir
com ele. Desta maneira, um aplicativo que solicita determinado serviço precisa apenas
acessar a interface para compreender como invocar determinada rotina oferecida por
ele.
Olhando numa perspectiva de gerencia de TI, utilizar uma arquitetura SOA traz,
entre outros benefícios:
-
alinhamento entre a área de negocio e a área de TI. Como a arquitetura de
funcionamento é orientada a serviços, fica simples para área de TI mapear os
serviços que atendem cada regra de negócio da companhia;
-
aumenta a padronização dos processos existentes no legado de sistemas
corporativos;
-
permite uma centralização do controle corporativo. Note que mesmo com
serviços em locais distribuídos, o gerenciamento destes pode ser centralizado.
Mas a utilização de uma arquitetura de softwares orientada a serviços exige um
grau de entendimento muito maior sobre os negócios ao que, por exemplo, o
conhecimento necessário para o desenvolvimento em uma arquitetura cliente/servidor.
Pelo fato de utilizar serviços, e cada serviço contemplar uma rotina de negócio
específica, caso esta rotina não tenha sido compreendida totalmente, ou até mesmo,
se o todo no qual está inserida rotina não foi totalmente estudado e separado, poderá
resultar na implementação de um serviço que funcionará incorretamente, ou será
insuficiente, necessitando na criação de mais e mais serviços, que muitas vezes
deixarão de ser executados, gerando uma carga desnecessária ao ambiente de
execução.
3. O Web Service
Web Services é um padrão de comunicação, que atende as necessidades de uma
arquitetura baseada em serviços, e tem como principal objetivo promover a
comunicação entre diferentes softwares e aplicações [2], rodando em uma variedade
indeterminada de plataformas. Web Services contempla sozinho a implementação de
uma arquitetura de SOA.
O Web Services apresenta-se como uma forte de tendência no desenvolvimento de
softwares distribuídos, sendo a tecnologia que mais ganha espaço. Isto é devido a sua
simplicidade e versatilidade, e também pelo fato que de basear-se em tecnologias já
consolidadas e amplamente difundidas.
A arquitetura básica inclui tecnologias e padrões [3] capazes de:
- trocar mensagens;
- descrever Web Services;
- publicar e descobrir Web Services.
A implementação de um Web Service é baseada em um conjunto de protocolos e
linguagens padrões de Web, das quais podemos destacar:
- o HyperText Transfer Protocol (HTTP);
- o Simple Object Access Protocol (SOAP);
- o Web Service Description Language (WSDL);
- e o UDDI (Universal Description, Discovery and Integration).
O formato XML é a base dos três últimos elementos citados: SOAP, WSDL e UDDI.
3.1 Esquema de funcionamento de um Web Service
Figura 2: Macro-esquema de funcionamento da tecnologia Web Service
A figura 2 representa o macro-esquema de funcionamento de um Web Service. O
ponto inicial na figura é o Service Requester, que representa a aplicação cliente
(solicitante do serviço). O próximo agente é o Service Broker, que é o publicador de
serviços. O último processo ocorre no Service Provider, que é onde efetivamente existe
o Web Service.
Em eventos, o funcionamento segue-se da seguinte maneira:
-
o Service Requester efetua uma solicitação ao provedor de localizações
(Service Broker), informando o serviço que deseja executar;
-
Service Broker devolve ao Service Requester a localização do provedor de
serviço, bem como as informações em detalhes necessárias para sua
execução;
-
Service Requester invoca o serviço controlado por Service Provider, enviando
para ele uma mensagem SOAP;
-
o Service Provider devolve a mensagem para Service Requester, utilizando
também o padrão SOAP.
O canal de comunicação e transporte entre o aplicativo solicitante e o fornecedor do
serviço é o protocolo HTTP (Hyper Text Transfer Protocol). Este foi estabelecido no
princípio da Internet moderna, com o objetivo de disseminação mais simples de
arquivos texto através da rede mundial de computadores.
Além do HTTP, o padrão Web Service utiliza o SOAP (Simples Object Access
Protocol) como padrão para transmissão de mensagens. O SOAP nada mais é que um
conjunto de instruções formatadas em XML, contendo informações relevantes para a
execução de determinado serviço, que serve também para formatar uma estrutura que
permita aos serviços devolverem informações processadas e estruturadas aos
aplicativos clientes.
A funcionalidade de descobrimento de um serviço é implementada pelo padrão
UDDI (Universal Description, Discovery and Integration). Este tem o poder de tornar um
Web Service público. Desta maneira, podem existir na Internet repositórios UDDI, e
sempre que um desenvolvedor desejar utilizar uma rotina já existente, ele pode buscála em um Web Service que a implemente através da interface de pesquisa do UDDI, e
caso encontre um serviço que satisfaça sua necessidade, poderá então utilizá-lo.
Para descrever um Web Service, ou seja, para apresentar suas interfaces,
métodos, parâmetros e regras de execução, utiliza-se o protocolo WSDL, que significa
Web Service Description Language. Através dele, os aplicativos que irão interagir com
um Web Service podem entender como fazê-lo de maneira automática.
Nos próximos capítulos deste trabalho de pesquisa descreverão em detalhes cada
uma destas tecnologias, que são essenciais para a montagem e funcionamento de um
Web Service.
4. Tecnologias
4.1. Protocolo HTTP
Na Internet, a transmissão de dados ocorre através protocolos distintos, cada
qual com sua finalidade. Por exemplo: para a transmissão de arquivos, existe o
protocolo FTP; para a transmissão de mensagens eletrônicas (e-mail), existe o SMTP e
o POP3; e muitas outras. A grande maioria dos protocolos de comunicação estão sob
responsabilidade do W3C 1.
O HTTP é sigla para Hypertext Transfer Protocol. Trata-se de um protocolo de
nível de aplicativo para distribuir informações em formatos hipermídia
2
. Com a
evolução da internet, o HTTP foi adotado como genérico, tornando-se um protocolo que
pode ser usado para muitas tarefas além do uso em hipermídia, permitindo aos
sistemas construírem formas independentes para transmitir dados. O HTTP é utilizado
como padrão para transferência de documentos pela World Wide Web desde 1990. A
versão atual de HTTP é a 1.1, deferida através do W3C em Junho de 1999, pela RFC
3
2616.
O protocolo de comunicação HTTP consiste em uma série de comandos entre o
aplicativo cliente e servidor. Através destes comandos, ocorrem as transmissões de
dados, em ambos os sentidos. No caso do aplicativo cliente, este transmite
informações para o servidor, utilizando os métodos GET e POST, e no caso do
servidor, este processa as informações enviadas pelo aplicativo cliente e devolve os
dados pelo mesmo canal de comunicação.
1
W3C. World Wide Web Consortium. Entidade sem fins lucrativos que tem o objetivo de coordenar as
ações na World Wide Web (ou Internet).
2
Hipermídia, do inglês hypermedia: é um termo criado em 1965 por Ted Nelson, e é utilizado como
extensão do termo hypertext, onde gráficos, áudio, vídeo, textos planos e hyperlinks interagem-se para
criar uma forma não linear de informação. http://en.wikipedia.org/wiki/Hypermedia, em 10 de outubro de
2006.
3
RFC – Sigla de Request For Comments. Especificações de padrões W3C são documentos colocados
ao público como recomendação, para que o mesmo possa ser melhorado de maneira democrática.
Desta maneira, não importa qual é a plataforma de software cliente ou servidor,
e vice-versa, pois todos os softwares para HTTP devem seguir a especificação W3C.
Nota-se então a possibilidade de troca de informações entre as mais diferentes
plataformas, de forma transparente.
Uma requisição HTTP deve conter:
- o tipo de solicitação, sendo os mais comuns, o GET e POST;
- o objeto que está sendo solicitado;
- uma lista de pares de comandos, que são os valores de cabeçalhos;
- os parâmetros, ou dados, que estão sendo enviados ao servidor. Fica opcional
o envio ou não destes dados.
O trecho abaixo mostra um exemplo de uma requisição HTTP:
1: POST /sistemas/cadatro.asp HTTP/1.1
2: Host: www.empresa.com
3: Content-Type: text/xml; charset=utf-8
4: Content-Length: length
5:
6: Nome=Josias&Idade=21
Analisando linha a linha a mensagem HTTP apresentada, temos os seguintes
itens:
- linha (1): no protocolo HTTP, esta linha deve informar qual o tipo de solicitação
que está sendo efetuando, qual objeto que está sendo solicitado e qual a versão
de HTTP da mensagem. No caso, o tipo de solicitação é o POST, o objeto é
/sistemas/cadastro.asp e a versão do HTTP é a 1.1.
- linhas (2) a (4): estas linhas representam o que é chamado de cabeçalho
HTTP. Um cabeçalho HTTP pode conter mais linhas, caso necessário. Cada
linha do cabeçalho HTTP contém um atributo e seu valor. Os atributos podem
ter os mais diversos significados, como indicar o tamanho da mensagem, o tipo
de dados, identificação do usuário, características da conexão, e muitos outros,
todos especificados pela RFC 2616.
- linha (6): a partir desta linha, é colocada a informação que está sendo enviada
para o servidor. Este trecho da mensagem é livre para uso pelo aplicativo
cliente, podendo colocar o quanto precisar de dados.
Uma resposta HTTP tem uma estrutura semelhante ao de uma requisição,
conforme é mostrado a seguir:
1: HTTP/1.1 200 OK
2: Content-Type: text/xml; charset=utf-8
3: Content-Length: length
4:
5: <html><body>Os dados foram processados</body></html>
Observa-se que a linha (1) agora é tomada com a informação sobre a versão do
HTTP, um status code (que será explicado a seguir) e sua mensagem. Em seguida,
vem o trecho de cabeçalho HTTP, seguido pelo trecho de dados. No trecho de dados,
são colocadas as informações que resultaram do processamento do objeto
anteriormente solicitado.
Uma resposta HTTP gerada pelo servidor deve necessariamente conter um
código. Os cabeçalhos, ou o trecho de informação, em alguns momentos, podem não
ser tão importantes. Mas é o status code (ou código de status) o elemento mais
relevante. O código de status indica se a solicitação do cliente foi processada com
sucesso, se houve algum erro, ou mesmo se o objeto não foi encontrado.
Logo abaixo, segue uma tabela com o principal status codes possíveis de uma
resposta HTTP:
Código Significado
404
O recurso informado através da URL não foi encontrado no servidor.
500
Ocorreu um erro interno no servidor durante o processamento.
403
O acesso ao recurso solicitado através da URL foi negado.
200
O objeto foi encontrado, processado e a resposta devolvida para o
cliente.
Um esquema de troca de informações através de protocolo HTTP está
exemplificado na figura 3:
Cliente
Servidor Web
Pacote de comandos
POST / GET
Recebimentos de
comandos POST / GET
Recebimento da
resposta
Processamento do
comando
Figura 3: Esquema de troca de dados no protocolo HTTP
Todo o fluxo de eventos ilustrado no na figura 3 acontece de maneira síncrona, ou
seja, desde o estabelecimento da conexão efetuado pelo aplicativo cliente, até a
resposta HTTP enviada pelo servidor, todos os eventos são feitos em seqüência. Desta
maneira, os dados são enviados e recebidos pela mesma conexão criada pelo
aplicativo cliente.
Ainda sobre o esquema anterior, se aplicarmos o mesmo no contexto de
execução de um serviço web, podemos obter a seguinte configuração de eventos:
1) determinado Web Service será solicitado pelo aplicativo solicitante (um cliente
HTTP), que atuará como o consumidor do serviço;
2) para invocar determinado serviço, o aplicativo primeiramente localiza o serviço,
utilizando o padrão de endereçamento de Internet chamado URL4;
3) Uma URL precisa ser hospedada em um servidor (um servidor HTTP). Quando
localizada, é estabelecida a comunicação entre o aplicativo cliente e o servidor,
que passam então a trocar os comandos HTTP, conforme a especificação W3C;
4) O cliente monta o comando POST ou GET, para solicitar a execução, colocando
os comandos e informações do padrão HTTP e também os dados necessários
para execução do serviço;
4
URL - Universal Research Location: padrão de sintaxe para identificar os documentos que são
possíveis de ser recuperados da rede mundial de computadores (W3 ou a Internet) http://en.wikipedia.org/wiki/URL.
5) O servidor aceita a conexão do cliente, interpreta os comandos HTTP, que
contém dados sobre qual serviço esta sendo solicitado, e faz a leitura da
informação específica para a execução do serviço, e caso o serviço exista no
servidor e esteja rodando normalmente, a execução do serviço é então
realizada;
6) O servidor monta o pacote de comandos HTTP de resposta, contendo o código
de status, informações de cabeçalho e também os dados inerentes à resposta
do Web Service, e envia estes pela mesma comunicação que foi antes
estabelecida.
7) O cliente processa a resposta do Web Service.
Deve-se deixar claro que o protocolo HTTP é mais completo e apresenta mais
funcionalidades àquelas foram apresentado neste tópico. Mas tratando-se da
relação do uso do protocolo HTTP pelo padrão Web Service, as características aqui
apresentadas fazem-se suficientes para dar suporte ao entendimento da tecnologia
tema deste trabalho.
4.2. XML – Extensible Markup Language
Para melhor compreender a arquitetura da tecnologia Web Services, é muito
importante um estudo básico sobre XML, pois este é responsável por formatar todos
os padrões de troca de mensagens da tecnologia Web Service.
XML é a sigla para Extensible Markup Language. Trata-se de um formato texto
simples, muito flexível, derivado do SGML (ISSO 8879). Originalmente, fora
desenhado para atender os desafios de uma publicação eletrônica em larga escala.
XML é também atualmente é uma base importantíssima para a troca de uma
variedade de dados na Web e em muito outros ambientes.
A figura 3 ilustra um exemplo de um documento XML.
Figura 3: Exemplo de documento XML
O XML tem uma estrutura bastante simples, que é baseada em hierarquia,
definida por nós. Cada nó possui atributos, e cada nó pode ainda conter outros nós,
que terão outros atributos e assim por diante.
É importante para um documento XML que ele esteja bem formatado, ou seja,
não pode haver nós sem seus respectivos terminadores, bem como não pode haver
propriedades sem a terminação com “ (aspas). Caso um documento XML não esteja
bem formatado, ele não poderá ser interpretado, ou seja, determinada software de
leitura de XML não conseguirá entender sua estrutura e obter a informação ali
contida. Na maioria das vezes, os interpretadores XML acusam erros em
determinado documento antes mesmo de fazer sua leitura por completo.
Devido a sua simplicidade e facilidade, o XML cresceu rápido, e tornou-se
ferramenta essencial em uma serie de aplicações, como por exemplo:
-
atuar como padrão de mensagens para transferência de dados entre diferentes
plataformas. Podemos citar o Web Services, XML RPC e aplicativos EDI 5.
Com seu formato texto é fortemente autodescritivo, basta desenvolver API de
interpretação de XML para cada plataforma existente, e assim, o XML passa
transparentemente entre plataformas e canais de comunicação;
-
atuar como repositório de configuração: a maioria dos softwares mais
modernos, e até os softwares proprietários de empresas independentes de
software, têm adotado o XML como o padrão para manutenção das
configurações de seus softwares, devido ao fato de XML poder ser estendido
de acordo com a necessidade de determinada aplicação por possuir atributos
e nós para identificar de maneira livre cada característica de sua
funcionalidade;
-
armazenamento de dados: apesar de não ser a melhor tecnologia para isto,
devido ao tamanho excessivo de caracteres não inerentes aos dados, o que
causa grande volume de armazenamento físico, arquivos XML podem também
ser utilizados para armazenamento de dados.
5
Electronic Data Interchange (EDI). É troca estruturada de informação entre computadores, através de
padrões estabelecidos de mensagens, de uma aplicação de computador para outra aplicação de
computador com um mínimo de intervenção humana.
Wikipedia: http://en.wikipedia.org/wiki/Electronic_Data_Interchange.
As principais fraquezas do XML são, sem dúvidas, o excessivo consumo de
banda de rede que se faz necessário para transmitir os dados dos documentos, uma
vez que estão em formatos texto, e a linguagem XML exige uma quantidade extra de
caracteres controladores da estrutura, o que deixa o documento com um tamanho em
bytes maior ainda. A segunda dificuldade é a maior necessidade por processamento
para leitura e escrita de documentos XML. Os XML Parsers, que são os programas ou
bibliotecas necessárias para trabalhar com documentos XML, possuem algoritmos
muito bem elaborados para minimizar este maior consumo, mas ainda sim, registram
índices de consumo de processamento superiores aos programas que processam
dados em forma binária.
XML Namespaces
Com a visibilidade futura de aplicações XML onde um único documento pode
conter elementos e atributos que são definidos para serem usados por múltiplos
softwares, foram criados os Namespaces.
Um XML Namespace é uma coleção de nomes, identificados por uma referência
URI, que é usada em documentos XML como tipos e elementos e atributo de nomes.
XML Namespaces provêem um método de evitar conflitos de elementos em
documentos XML. Desde que nomes de elementos em XML não são fixados, muito
freqüentemente um nome irá conflitar com outro ocorrendo dois tipos diferentes de
documentos usando a mesma descrição de nomes para dois tipos diferentes de
elementos.
Este documento XML carrega informação sobre um formulário:
<?xml version="1.0" encoding="utf-8"?>
<form>
<select>
<option>Apples</option >
<option>Bananas</option >
</select>
</form>
Este documento XML também carrega informação sobre um formulário:
<?xml version="1.0" encoding="utf-8"?>
<form>
<paper>A4</paper>
<pages>10</pages>
<name>Election Results</name>
</form>
Nos casos acima gerará conflito, pois os dois documentos contêm o mesmo
elemento <form>, mas com significados diferentes.
Para resolver o problema exposto acima o XML usa um prefixo, um exemplo de
documento XML usando prefixo:
<?xml version="1.0" encoding="utf-8"?>
<f:form>
<select>
<option>Apples</option >
<option>Bananas</option >
</select>
</f:form>
<p:form>
<paper>A4</paper>
<pages>10</pages>
<name>Election Results</name>
</p:form>
Agora os documentos não se conflitam, pois usam diferentes elementos.
4.3 SOAP – Simple Object Access Protocol
SOAP (Simple Object Access Protocol) é uma especificação com o objetivo de
possibilitar a comunicação entre dois aplicativos, de maneira descentralizada, utilizando
o XML como protocolo base, e adotando regras simples e leves. O conteúdo SOAP
precisa transmitido por um canal de comunicação, como por exemplo, uma conexão
utilizando o protocolo HTTP ou mesmo via sockets através de RPC. Outra
característica diferencial do SOAP é a de prover a integração entre plataformas
heterogêneas de software, uma vez que detalhes inerentes à arquitetura de execução
de cada plataforma são omitidos quando os dados são convertidos para XML.
Vale ressaltar que o SOAP não foi desenvolvido especificamente para uso exclusivo
na tecnologia Web Services. O protocolo de mensagens SOAP pode também ser
empregado como padrão em outras arquiteturas de softwares distribuídos, ou mesmo
em implementações proprietárias de empresas de software. Isto garante o amplo uso
de SOAP e sua independência de qualquer modelo particular ou arquitetura específica.
As maiores dificuldades do padrão SOAP residem exatamente no problema de
utilização do XML: tamanho dos documentos é muito grande, o que ocasiona consumo
de banda, e o processamento dos arquivos XML utiliza mais recursos de
processamento das estações, o que evidencia que padrão SOAP não é recomendado
para uso interno em uma empresa, pois existem tecnologias distribuídas mais
eficientes, como por exemplo, o CORBA ou DCOM.
De acordo com a especificação no W3C para o SOAP [4], este é constituído por três
partes:
-
um envelope que define uma base para descrever o que está na mensagem e
como processá-la;
-
um conjunto de regras para expressar tipos de dados de instâncias definidas a
nível de aplicativo;
-
e uma convenção para representar chamadas e respostas de procedimentos
remotos.
Ainda de acordo com o W3C, apesar da possibilidade de utilizar-se SOAP em uma
variedade não definida de canais de comunicação, a entidade definiu que sua
especificação é fortemente voltada a implementação de uma comunicação com SOAP
através de HTTP. Portanto, este trabalho de pesquisa está voltado para este cenário.
4.3.1 Exemplos de mensagens SOAP
4.3.1.1 Envio de uma solicitação de execução de um Web Service
No exemplo a seguir, é mostrado um trecho de XML que corresponde a
chamada de um Web Service. Portanto, o canal de comunicação utilizado é o HTTP e a
mensagem é codificada utilizando-se SOAP versão 1.1. O Web Service em questão é
representado
pelo
arquivo
“Service.asmx”,
e
contém
o
método
“RetornarCotacaoDolarNoDia”, que quando executado, retorna a cotação do dólar.
1: POST /WebSite1/Service.asmx HTTP/1.1
2: Host: localhost
3: Content-Type: text/xml; charset=utf-8
4: Content-Length: length
5: SOAPAction: "http://tempuri.org/RetornarCotacaoDolarNoDia"
6:
7: <?xml version="1.0" encoding="utf-8"?>
8: <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9: xmlns:xsd="http://www.w3.org/2001/XMLSchema"
10: xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
11: <soap:Body>
12:
<RetornarCotacaoDolarNoDia xmlns="http://tempuri.org/" />
13: </soap:Body>
14: </soap:Envelope>
Em síntese, este trecho representa um comando HTTP, que se utiliza o método
POST, conforme pode ser observado na linha (1), disparando para o Web Service
localizado no endereço “/WebSite/Service.asmx”, localizado no servidor onde foi
estabelecida a conexão HTTP. As linhas (2),(3),(4),(5) representam o cabeçalho HTTP.
Logo após os comandos HTTP, temos a mensagem SOAP. Observe a entidade
<soap:Envelope>. Ela representa o envelope, o nível máximo da estrutura XML do
SOAP.
Em seguida, aparece o <soap:Body>, que é o corpo da mensagem SOAP. Este
elemento XML provê um mecanismo simples para a troca da informação obrigatória
para a execução do serviço Web. Tipicamente, o <soap:Body> pode transmitir as
informações necessárias para a execução dos serviços ou mesmo informações sobre
erros acontecidos durante seu processamento. No caso apresentado, o <soap:Body>
contém informações para executar o método “RetornarCotacaoDolarNoDia” que está
no
serviço
web
requisitado
(“Service.asmx”).
Caso
o
método
“RetornarCotacaoDolarNoDia” possuir mais detalhes para execução, como por
exemplo, o envio de parâmetros para execução da rotina, estes devem ser informados
dentro do elemento “RetornarCotacaoDolarNoDia”.
4.3.1.2 Resposta de uma solicitação de execução de um Web Service
A partir do exemplo anterior, onde foi invocado um Web Service que devolve ao
solicitante a cotação do dólar no dia, segue a reprodução da mensagem de resposta
produzida pela execução do Web Service.
1: HTTP/1.1 200 OK
2: Content-Type: text/xml; charset=utf-8
3: Content-Length: length
4:
5: <?xml version="1.0" encoding="utf-8"?>
6: <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7: xmlns:xsd="http://www.w3.org/2001/XMLSchema"
8: xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
9: <soap:Body>
10:
<RetornarCotacaoDolarNoDiaResponse xmlns="http://tempuri.org/">
11:
<RetornarCotacaoDolarNoDiaResult>12</RetornarCotacaoDolarNoDiaResult>
12:
</RetornarCotacaoDolarNoDiaResponse>
13: </soap:Body>
14: </soap:Envelope>
Novamente, a primeira parte da resposta compreende os códigos específicos do
protocolo HTTP. A primeira linha define o código de status, que no caso é 200,
informando que o serviço procurado pelo POST (“/WebSite1/Service.asmx”), no
momento da requisição, foi encontrado e processado. As duas linhas seguintes
representam as informações de cabeçalho HTTP.
Na mensagem SOAP recebida, observamos novamente a presença obrigatório
do envelope SOAP, representado pelo elemento <soap:Envelope>, e também do
elemento <soap:Body>. Dentro deste, encontra-se em detalhes a resposta enviada
pelo serviço Web. No caso do nosso serviço “RetornarCotacaoDolarNoDia”, que
retorna
um
número,
vemos
o
mesmo
dentro
do
elemento
<RetornarCotacaoDolarNoDiaResponse>.
Os exemplos de mensagens SOAP apresentados e explicados neste capítulo
são o que em essência forma um Web Service: uma chamada HTTP, contendo um
conjunto de instruções em XML, contra um objeto web, e a resposta deste
procedimento, também através de instruções em XML. É um funcionamento simples,
mas muito eficiente para tornar possível que funcionalidades distribuídas comuniquemse e executem em ambientes de software heterogêneos.
4.4 WSDL – Web Service Description Language
Como a comunicação e troca de mensagens no ambiente Web é padronizada,
tornou-se conseqüência a necessidade de existir a possibilidade de descrever estes
padrões de forma estruturada. O padrão WSDL – Web Service Description
Language foi desenvolvido para atender esta necessidade. No caso de Web
Services, um Web Service é sempre descrito programaticamente utilizando a
sintaxe definida pelo padrão WSDL.
De acordo com a definição do W3C, “WSDL é um formato XML que descreve
serviços de rede com um conjunto de endpoints (pontos finais) operando em
mensagens contendo informações orientadas a documento ou informações
orientadas a procedimentos. As mensagens são descritas de maneira abstrata, e
depois são convertidas para a rede real de protocolos e mensagens que definem o
endpoint.”.
Desta maneira, entende-se que o WSDL define um serviço de rede de maneira
abstrata, ou seja: as características de execução do serviço, como meios de
transmissão, linguagem de programação e tipos de dados utilizados, não estão
representadas de modo que as relacionem somente a uma arquitetura, mas estão
descritas de forma que seja possível a qualquer arquitetura implementar ou utilizar
um serviço descrito através de um documento WSDL.
É uma tarefa complicada tentar descrever um serviço em um nível tão abstrato,
não importando, por exemplo, o protocolo de comunicação ou a plataforma que
hospeda o serviço. É consenso comum que dependendo da plataforma de
execução, até os tipos de dados podem diferentes e incompatíveis com outras
plataformas, o que torna impossível a execução de determinado serviço.
Mas o WSDL resolve esta problemática porque ele força a utilização de padrões
comuns nas arquiteturas, para justamente garantir a execução dos serviços. E por
permitir montagens específicas, ou seja, por ser extensível, o WSDL pode
futuramente atender a novas necessidades sem precisar ser revisto em sua
especificação inicial.
Mas apesar de ter a capacidade de representar qualquer serviço distribuído de
rede, o WSDL foi concebido pelo W3C com o objetivo de atender a plataforma Web
Services. Portanto, todos os exemplos de especificação e implementações
realizadas até agora podem ser vistos mais comumente em arquiteturas que
empregam Web Services.
4.4.1 Estruturas do WSDL
O WSDL utiliza os seguintes elementos na definição de serviços de rede:
Figura 4: Esquema básico de uma descrição de um Web Service
Types: um agrupador para definições de tipos de dados usando alguns tipos de
dados de sistemas.
Message: uma definição abstrata do tipo de dado que será comunicado.
Operation: uma descrição abstrata de uma ação suportada pelo serviço.
Port Type: um conjunto abstrato de operações suportadas por um ou mais
endpoints.
Port: um único endpoint definido como uma combinação de um binding e um
endereço de rede.
Service: uma coleção de endpoints relacionados.
Exemplo completo de um documento WSDL
<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePrice">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
</types>
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePrice"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation soapAction="http://example.com/GetLastTradePrice"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="StockQuoteService">
<documentation>My first service</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port>
</service>
</definitions>
4.5 - UDDI - Universal Description, Discovery and Integration
Uma arquitetura SOA baseada em Web Service pode usufruir-se da capacidade
de publicação determinado serviço em uma rede IP. Esta rede pode ser pública,
como Internet, ou privada, dentro de uma empresa. Este registro é padronizado, e
chamado de UDDI (Universal Description, Discovery and Integration), e também
pode ser público ou privado. Com o UDDI, as empresas que oferecem Web
Services podem publicar seus serviços em listas, podem unir-se umas as outras, e
por diante, definindo uma nova maneira sobre como os serviços ou aplicações de
software interagem-se na Internet.
UDDI consiste [7] em um esquema XML que define quatro estruturas de dados:
- Registro do negócio, que é um esquema XML para descrever os negócios e
Web Services;
- A definição dos serviços;
- A descrição sobre como encontrar e conectar automaticamente à suas
funcionalidades dos serviços;
- E uma interface programática que define uma API que opera nestas estruturas.
Esta interface é baseada em SOAP.
Por sua vez, o registro do negócio em um UDDI é formado por três
componentes:
- White Pages: contém informações sobre uma empresa especifica, como por
exemplo, nome, endereço, contatos e localização.
- Yellow Pages: contém dados para classificação geral de qualquer empresa ou
serviço oferecido, como por exemplo, tipo da indústria, de produtos ou códigos
geográficos.
- Green Pages: contém informações técnicas sobre os serviços expostos por
determinado UDDI, como por exemplo, qual a URL para acessar determinado
serviço.
Figura 5: Fluxo de informação do UDDI
A figura 5 mostra o exemplo de um fluxo descobrimento e descrição de
determinado Web Service. O Web Service Provider, que é o responsável por criar e
garantir com que o Web Service fique disponível para utilização, realiza a operação
de publicação (representado pelo traço (P)) do serviço no diretório UDDI. Um Web
Service Requester realiza a operação de busca por um serviço, representando o
passo número (1). Em seguida, as operações (2) e (3) representam a troca de
mensagens entre o Web Service Requester e o Web Service Provider quanto a
definições do Web Service, utilizando nesta troca de dados o padrão WSDL.
De acordo com a W3C 6, o padrão UDDI foi escrito em Agosto de 2000, em torno
da idéia de que o UDDI tornaria possível que qualquer tipo de serviço fosse
disponibilizado na Internet, e pudesse ser utilizado por qualquer outro serviço ou
programa de software. Mas a realidade é que determinado serviço pode ser critico
para determinado indivíduo que esteja precisando deste. Portanto, os interesses
comerciais falaram mais altos, e o alcance dos registros UDDI foi bem limitado, e
atualmente, o cenário mais ideal no qual pode-se empregar o UDDI é dentro de
uma mesma empresa, onde se cria repositórios UDDI para que as aplicações
6
Wikipedia, enciclopédia pública da Internet.
http://en.wikipedia.org/wiki/Main_Page
clientes possam automaticamente conectar-se as implementações de serviços ou
negócios da companhia.
4.5.1 O UDDI Business Registry (UBR)
De acordo com o UDDI.org 7, O UDDI Business Registry é um registro UDDI
público e gratuito, atualmente operado e mantido através de uma joint venture que
conta com o suporte da IBM, Microsoft, SAP e NTT Comunications. Qualquer indivíduo
é livre para publicar informações sobre seus Web Services públicos em qualquer um
dos nós do UBR.
O objetivo do UBR é facilitar a publicação dos Web Services públicos. Um
indivíduo que cadastra seus serviços num nó da UBR, não precisa fazer em outro nó,
uma vez que os sites UBR comunicam-se entre si, promovendo a replicação contínua
entre seus dados, fazendo assim com que a operação de descobrimento de
determinado Web Service, através do padrão UDDI, seja a mais rápida possível. A
atualização dos registros não é diária, mas mesmo assim é um mecanismo de grande
abrangência e eficiência.
7
UDDI.org: Entidade que promove a tecnologia Web Services. http://www.uddi.org/faqs.html
5. SOA e Web Services no ambiente de negócios
Os grandes avanços realizados pela tecnologia Web Services aconteceram, sem
dúvida alguma, devido aos esforços conjuntos de grandes empresas de software, como
Microsoft, IBM, Sun, W3C, e outras. Graças aos diversos profissionais destas
empresas, que se encarregaram de definir os padrões e escrever todas as
especificações da tecnologia Web Services, hoje os desenvolvedores podem utilizar
com segurança e confiabilidade uma tecnologia que está muito difundida na Internet,
apresentando uma grande variedade de material para pesquisa, suporte técnico e
softwares para desenvolvimento.
Apesar de todo o trabalho executado, uma implementação prática de uma
arquitetura orientada a serviços (SOA), precisa de uma certa estratégia para que seu
sucesso seja atingido plenamente.
Scott Simmons 8, da equipe do WebSphere 9, cita [6], em Setembro de 2006,
que são diversos fatores necessários para o sucesso da implementação de uma
arquitetura de software orientada a serviços, mas o que realmente ele observou
durante sua carreira é que as empresas que obtiveram êxito tinham todas em comum o
fato de terem desenvolvido um plano de Governança de TI para suportar o design,
desenvolvimento, publicação e operacionalização de um framework de software
baseado em SOA. Sem um plano de governança para dar suporte à implementação da
arquitetura SOA, as chances de um projeto ser mal-sucedido são muito maiores.
Ainda de acordo com Simmons, uma arquitetura SOA muda a missão do
departamento de TI e o relacionamento do TI com o resto da organização.
8
Arquiteto-executivo para do time para Integração Mundial dos Serviços de Suporte Técnico.
WebSphere: Nome comercial de produto. É o mundialmente conhecido servidor de aplicações de
software da IBM.
9
Além do projeto de Governança de TI, os esforços para obter o sucesso na
implementação de uma arquitetura SOA possuem quatro núcleos principais:
- a definição e o reforço de policiamento e de procedimentos para suportar o
design, desenvolvimento, publicação e gerenciamento de serviços com um
conjunto correspondente de métodos, técnicas e ferramentas para dar suporte
ao SOA e a requerimentos táticos e estratégicos do négocio;
-
o estabelecimento de um Centro de Competência (ou Centro de Excelência),
representando tanto o departamento de Tecnologia da Informação e demais
departamentos da empresa para manter e avançar as iniciativas SOA como
uma competência compartilhada através da organização;
-
apoio e patrocínio dos executivos da empresa para com as intenções e
objetivos do SOA, realizando mandatos para dar o contínuo suporte à
comunicação entre os responsáveis pelo desenvolvimento, implementação e
gerenciamento do SOA;
-
um entendimento ao nível organizacional para taticamente executar e
estrategicamente planejar a adoção do SOA. O SOA é incremental e uma
evolução que muda desde o departamento de TI até a organização por
completo, e é beneficiado por uma implementação interativa entre as áreas.
5.1 Benefícios
De fato, uma implementação de uma arquitetura orientada a serviços, que utiliza
o Web Services como tecnologia central, não precisa do desenvolvimento de um novo
ambiente de execução por completo, pois as ferramentas hoje existentes para o Web
Services permitem rodar em ambiente já existe, e possibilitar aos Web Services que
são criados que estes se tornem ser parte integrante do legado do software já existente
em uma companhia.
Após o desenvolvimento de um bem-sucedido plano de Governança de TI que
englobe a iniciativa Web Services, uma organização que consegue colocar em prática
a arquitetura obtém benefícios imediatos como: a flexibilização em um novo tipo de
design de software; a reutilização de componentes de negócio já existentes em novas
redes; e a possibilidade de interoperabilidade e integração com plataformas antigas,
novas, ou diferentes (implementação de arquitetura, ex: Windows x Linux).
O tempo de desenvolvimento de uma rotina é reduzido pela implementação de
um Web Service. O processo de um Web Services, desde sua concepção e publicação,
de um modo geral tem tempo curto de duração, o que permite que os processos das
empresas respondam de maneira mais rápida e positiva às mudanças do mercado.
Outras características benéficas de um Web Service ficam mais claras quando
são analisados os ganhos que este trouxe aos negócios que foram afetados por ele.
Por exemplo: uma empresa que deseje obter cotações de compras de seus
fornecedores de uma maneira mais eficiente utilizando um Web Service de Cotações
on-line, conectando os fornecedores ao seu software de compras interno, via Internet,
terá a possibilidade de conseguir cotações mais rapidamente, e conseqüentemente,
poder trabalhar melhor com as propostas de preços oferecidas, reduzindo os custos de
aquisição de determinado produto.
Empresa Compradora
Fornecedor A
Servidor Web
Armazena e
processa o
Web Service
Cotação on-line
Fornecedor B
Fornecedor C
SOAP
sobre HTTP
Departamento
Compras
Banco de Dados da
Empresa Compradora
Figura 6: Esquema de sistema de cotação on-line
Para o fornecedor, a utilização do Web Service de cotação on-line é a garantia
de que sua cotação está entregue diretamente ao sistema de compras de seu cliente, e
que a resposta se sua oferta é a melhor será a mais rápida possível, uma vez que
possivelmente não haverá intervenção humana neste cenário.
5.2 Limitações e aspectos críticos
Uma arquitetura orientada a serviço utilizando Web Services não é a solução
para todos os desafios de integração e interoperabilidade existentes hoje para o setor
de Tecnologia da Informação.
Seguem pontos onde uma arquitetura distribuída pode não ser um beneficio e
alguns aspectos críticos:
- um modelo orientado a serviços talvez não é o melhor para rodar rotinas de
negócio complicadas e demoradas em modo assíncrono. O processo natural
de um ambiente orientado a serviço é o envio de uma mensagem, seu
processamento rápido e a devolução da resposta. Uma utilização diferente
disto pode ocasionar problemas aos quais a especificação de tecnologias SOA
não oferecem uma cobertura suficiente;
- SOA requer um framework de ambiente que em muitos casos são softwares
em “estado-de-arte”, como a plataforma Microsoft.NET, o NetWeaver da SAP e
WebSphere da IBM, e infelizmente, apesar dos esforços, não há nada que
garanta uma interoperabilidade completa entre estas plataformas;
- existe uma certa dificuldade em garantir a qualidade das mensagens que são
transmitidas em um ambiente de software distruibuido. No caso de Web
Services, que utiliza como canal de transporte o HTTP, este fica suscetível a
uma infinidade de riscos, como por exemplo: problemas na conexão de rede,
problemas com servidores DNS (no momento de conectar-se a um Web
Service), e muitos outros. São problemas que não podem ser controlados ou
totalmente catalogados e controlados por um Web Service, pois ocorrem em
partes externas que não são acessíveis por ele.
6. Conclusão
Através da utilização de diversas tecnologias abertas como base para sua
existência, o Web Services rapidamente ganhou espaço no mercado, e tem sido o
melhor quando o assunto é software distruibuido (ou SOA). Ela é flexível e permite o
funcionamento de sistemas em uma linguagem abstrata de nível acima de muitos
outros padrões, o que garante o Web Services como uma das melhores tecnologias
para realizar a comunicação entre plataformas heterogêneas de software.
Devido à limitação do tempo para o desenvolvimento deste trabalho, não foi
possível estendê-lo a outros detalhes inerentes a tecnologia, como por exemplo, a
questão da segurança dos dados e também quais os softwares existentes na
atualidade que garantem o funcionamento de um ambiente para o Web Services. Fica
o desejo de que numa próxima oportunidade seja possível estudar e apresentar estes e
outros itens.
Apesar dos pontos críticos ou até falhos desta tecnologia, como a limitação para
rodar processos assíncronos ou demorados e o custo da transmissão dos dados
devido ao tamanho das mensagens XML, ainda existem muitos outros fatores positivos
que a tornam promissora, como o uso de tecnologias abertas, o conceito de abstração,
para permitir a interoperabilidade entre plataformas, e vantagem que ela oferece de
agregar valor ao negócio de uma empresa, pois o Web Service não vem substituir
sistemas e softwares existentes, e sim para tornar sistemas já existentes compatíveis
uns com os outros, possibilitando à empresa ser mais rápida em suas respostas às
mudanças do mercado.
Web Services tem tudo para ser um “divisor de águas” como foi quando
apareceram as primeiras arquiteturas em três camadas, que acabaram com o modelo
cliente / servidor. O futuro promete aplicações mais voltadas a serviços, permitindo a
empresa comunicar-se com o ambiente externo, de forma programática e sem
necessidades maiores de intervenções pelos desenvolvedores. Espera-se agora, que
continue o suporte desta tecnologia pelos grandes fabricantes de software, e o
principal, que esforços para manter um padrão único continuem existindo e
regulamentando esta tecnologia.
7. Bibliografia
7.1 Bibliografia Básica
[1] IBM - Definição de SOA:
http://www-128.ibm.com/developerworks/webservices/newto/
[2] W3C - Definição de Web Services: http://www.w3.org/2002/ws/Activity
[3] W3C - Especificação do WSDL: http://www.w3.org/TR/wsdl
[4] W3C – Especificação SOAP: http://www.w3.org/TR/2000/NOTE-SOAP-20000508/
[5] W3C – Especificação Web Services: http://www.w3.org/TR/2000/NOTE-SOAP20000508/
[6] IBM – SOA governance and the prevention of service-oriented anarchy
http://www128.ibm.com/developerworks/websphere/techjournal/0609_col_simmons/0609_col_sim
mons.html?ca=drs[7] Wikipedia – Definição de UDDI
http://en.wikipedia.org/wiki/Universal_Description_Discovery_and_Integration
7.2 Bibliografia Auxiliar
KREGER, H.
eBook – Web Services Conceptual Architeture (WSCA 1.0)
IBM. 2001
WIEHLER, G.
eBook - Computer - Service Oriented Architecture
Siemens. 2004.
VIII
Download

Web Services - Website pessoal