Web Services no Delphi for PHP
Compartilhe serviços via web e integre sua aplicação com clientes e fornecedores
Que atire a primeira pedra quem nunca precisou gerar ou ler um arquivo texto em um projeto de integração. Sim, isso é mais comum em desenvolvimento de software que podemos imaginar. Certa vez estava eu em uma empresa, feliz e sorridente tocando minha vida quando meu superior veio dar a notícia de que toda parte de pagamentos e cobranças da empresa seriam automatizadas através de integração com os bancos que trabalhávamos. Para variar os pagamentos dos prestadores de serviços e parceiros eram feitos através de um único banco, já a cobrança. Essa era feita por três bancos diferentes. Isso mesmo: três instituições bancárias.
Pois bem, lá fui eu entrar em contato com os bancos para poder obter a documentação dos sistemas. Em alguns dias minha caixa de email estava repleta de arquivos .pdf contendo dezenas de páginas cada um. Era um tal de CNAB 080 para cá, CNAB 240 para lá. Regras do Banco do Brasil aqui, definições da Caixa Econômica Federal ali, enfim! Em pouco tempo tinha tanta documentação para ler que já não fazia mais nada.
Nota do DevMan
O padrão estabelecido pelo CNAB (Centro Nacional de Automação Bancária) foi criado para permitir a troca de arquivos entre bancos e clientes. O objetivo destes arquivos é intercambiar informações digitalmente entre o sistema de informática do banco e o do cliente. Dentre as informações podemos citar: cobrança (boletos bancários), pagamentos, extrato (para conciliação), débito em conta, e custódia de cheques. Cada um destes produtos tem seu fluxo de informação e, portanto um layout. O arquivo contém texto puro e colunas fixas definidas pela FEBRABAN, cada banco, por possuir suas próprias peculiaridades, tem suas variações que são previstas dentro do padrão. Estes arquivos são enviados ou recebidos de diversas formas, mas principalmente através do site do banco.
Mas o que isso tudo tem haver com Web Services? Nada! E este foi todo o problema. Por trabalhar com integração com arquivos texto a FEBRABAN, ou melhor, os bancos têm que disponibilizar suas regras e padrões através de extensas documentações. Isso tudo para que seus clientes possam gerar os arquivos dentro do que se espera, e para que a integração possa ser feita de maneira segura e eficiente. Isto toma muito tempo e ainda temos outros inconvenientes. Um arquivo texto não se auto descreve como um arquivo XML. Por isso as vastas documentações, para nos informar quem é quem nas milhares de linhas com dezenas de caracteres que temos que enviar e receber nesta integração.
No cenário exposto acima, os Web Services cairiam como uma luva. Eles nos poupariam horas de leituras de documentação uma vez que o próprio descritor de serviço (WSDL), já nos exibiria os serviços disponíveis, assim como os objetos a serem enviados. Óbvio que a documentação não seria extinta, mas se resumiria apenas às regras do negócio e não em páginas e páginas de layout de registros com posição inicial, posição final, tamanho e tipo. Assim, nós estaríamos consumindo um ou mais serviços através dos Web Services que as instituições financeiras disponibilizariam para seus clientes. Neste cenário, nós desenvolvedores, ou melhor, as aplicações, estariam atuando como clientes destes Web Services. Mas vamos a outro cenário.
Ententendo a lógica
Imagine que você trabalha em uma grande empresa, como por exemplo uma editora. A direção da empresa decidiu automatizar o processo de vendas para permitir que seus grandes clientes coorporativos possam efetuar seus pedidos de forma automática, sem a intervenção humana. Não seria ótimo? Reduziria-se assim o tempo de digitação das notas, possíveis falhas humanas no processo, um custo de compra menor para o cliente, uma reposição Just-in-time e muito mais. Porém você está em um dilema: como oferecer este tipo de serviço ao cliente? Conceder uma senha para acessar o banco de dados e executar uma instrução de inserção no mesmo? Ou então fazer como os bancos. Vamos criar longas documentações com padrões de arquivos .txt e iniciar a brincadeira.
Aqui mais uma vez, os Web Services podem nos auxiliar. Que tal disponibilizar para seus clientes um serviço Web onde ele possa nos enviar um lote com os produtos que necessita? Toda a informação necessária para o processo será descrita no WSDL, cabendo ao cliente simplesmente consumir o serviço e informar os dados, e mais: nosso Web Service poderia ainda ter outros recursos que retornassem o status de um pedido feito pelo cliente, dados de faturamento e muito mais. Agora, neste cenário a aplicação seria a provedora dos serviços e não mais cliente.
A partir de agora veremos como funciona um Web Service. Tomaremos ciência de toda a tecnologia envolvida no processo, conheceremos a arquitetura, protocolo de comunicação e muito mais. Na seqüência, vamos criar nosso primeiro Web Services utilizando Delphi for PHP, e com isso disponibilizaremos serviços para que nossos clientes possam consumir independente da linguagem que utilizem ou plataforma que desenvolvam. Então vamos nessa!
Entendendo os Web Services
No início da internet, as tecnologias permitiam você conectar-se a um site e baixar o conteúdo deste. O HTML permitia exibir a informação para os usuários na grande rede. Porém, novas tecnologias e frameworks de desenvolvimento foram surgindo, permitindo assim uma integração maior entre os sistemas na Web. Hoje em dia, com todo este crescimento, os sistemas estão realizando tarefas cada vez mais complexas. Surgiu então a necessidade de disponibilizar os serviços destes sistemas através de uma interface de acesso simples e bem definida. Assim, nasceram os Web Services.
Qualquer empresa hoje em dia precisa prover serviços, seja para seus clientes, para outra empresa, para os prestadores de serviço, ou outra necessidade qualquer. Seria excelente se esses serviços pudessem ser automatizados. Isso reduziria tempo, dinheiro e eliminaria possíveis erros humanos. Por exemplo, não é necessário existir um vendedor em cada estado do país se seu cliente já possui o preço e outros detalhes para realizar um pedido de compra. Este pedido pode, e já é feito hoje em dia, via interfaces computacionais. O cliente entra em seu site, monta o pedido e confirma a compra. Isto é um tipo de serviço Web, ou seja, um serviço que está publicado na Web para que qualquer pessoa possa utilizar. Este tipo de serviço atende a pessoa física. Agora leve isto para o relacionamento entre grandes instituições. É muito trabalhoso e caro para uma empresa manter uma pessoa, ou equipe, para entrar em um site, se logar, selecionar um a um os produtos e depois fechar o pedido. O ideal é que o sistema desta empresa se integre ao site do fornecedor e possa de uma forma simples e transparente enviar, consultar e cancelar pedidos de compras.
Web Services foram criados para construir aplicações deste tipo. Aplicações que são serviços na internet. Porém não faz parte do conceito de Web Service criação de interfaces gráficas para os usuários, deixando esta parte para outras empresas ou pessoas desenvolverem. Web Service é a tecnologia para comunicação entre sistemas, sendo muito usada em aplicações B2B (Business to Business). A comunicação entre os serviços é padronizada, possibilitando a independência de plataforma e de linguagem de programação. Por exemplo, um sistema de comércio eletrônico em PHP sendo executado em um servidor Linux, pode acessar com transparência o sistema de um ou mais fornecedores desenvolvido em .Net e sendo executado em um servidor Windows para informar o prazo de um produto mediante o tempo de fabricação informado pelo fabricante.
Nota do DevMan
B2B (Business to Business), é o nome dado ao comércio eletrônico associado a operações de compra e venda, de informações, de produtos e de serviços através da Internet ou através da utilização de redes privadas compartilhadas entre parceiros de negócios, substituindo assim os processos físicos que envolvem as transações comerciais. O B2B pode também ser definido como troca de mensagens estruturadas com outros parceiros comerciais a partir de redes privadas ou da Internet, para criar e transformar assim as suas relações de negócios.
O Web Service faz com que os recursos de uma aplicação estejam disponíveis na internet de uma forma padronizada. Os browsers já fazem isso, porém dependem da intervenção humana para consumir os serviços, não sendo eficazes para comunicação entre as aplicações. A grande sacada dos ...