As aplicações distribuídas vieram para ficar, e o modelo n-tier é adotado pelas empresas cada vez mais. Aliado a isso, no cenário atual, nota-se a presença forte da internet nas soluções de TI como canal de comunicação. E quando se pensa em multicamadas e internet, é impossível não lembrar de uma tecnologia em franca expansão: os Web Services.
Neste artigo, que está dividido duas partes, aprenderemos algumas técnicas avançadas do protocolo SOAP e de sua implementação feita pela CodeGear, e veremos como empregá-las em nossas aplicações.
Como de costume, vamos utilizar um exemplo prático de aplicação para ilustrar os conceitos aprendidos. Faremos um disco virtual, um aplicativo onde o usuário poderá enviar arquivos para um servidor remoto, listá-los e recuperá-los posteriormente.
Todos esses processos (envio, consulta e recebimento) poderão ser realizados de qualquer máquina com acesso ao servidor de aplicação.
O que você vai precisar
Será usado o Delphi 2006 Architect para o desenvolvimento da solução. Nada impede, porém, que você utilize alguma versão anterior que forneça os componentes do protocolo SOAP (em outras palavras, a paleta WebServices). Atente apenas para um ponto: muitos bugs da implementação foram corrigidos pela CodeGear e a versão 2006 do produto vem com muitas delas já instaladas.
Então, é altamente recomendável que você aplique essas atualizações no seu Delphi. Vamos ver como fazer isso no próximo tópico. É claro que você também pode usar a novíssima versão 2007, se a tiver instalada.
Também será necessário ter IIS (Internet Information Services) instalado, uma vez que o servidor de aplicação será desenvolvido sobre a tecnologia ISAPI. E como faremos acesso a banco de dados, será preciso ter um SGBD configurado. Neste artigo será usado o Firebird 2.0.
Nota: É esperado que o leitor já tenha alguma experiência com SOAP antes de ler este artigo. Vários artigos já foram publicados na revista ClubeDelphi, e, como referência, eu sugiro a edição 70, onde Guinther Pauli abordou o tema de forma brilhante.
Por último, você precisa instalar o HTTPRIOEx, desenvolvido por mim, disponível para download junto com os fontes desse artigo. Ele é essencialmente igual ao original que acompanha o Delphi, de fato, ele herda diretamente desse último, exceto pelo novo evento OnBeforeExecuteStream, necessário para algumas técnicas abordadas neste artigo.
Para instalá-lo, apenas abra o seu pacote no Delphi e clique sobre a opção Install.
Atualizando o SOAP
Como mencionado anteriormente, é extremamente importante atualizar a implementação do SOAP com os últimos releases disponíveis. Você pode encontrá-los no site da CodeGear, ou através dos news groups da empresa (veja a seção Links).
Quando este artigo foi escrito, o último pacote disponibilizava as correções feitas no Delphi 2007 para as versões anteriores do produto. É provável que quando você esteja lendo este artigo, um novo update tenha sido liberado. Novamente, é importante visitar periodicamente o site da CodeGear para ter acesso a essas informações.
Para aplicar as alterações, basta substituir as units antigas pelas novas (faça backup antes!). Caso alguma exista alguma mudança na interface dos componentes, talvez seja preciso reinstalar os pacotes do SOAP no IDE do Delphi. Em todo caso, um documento de instalação sempre é distribuído junto com os arquivos.
Preparando o banco de dados
Nossa aplicação vai precisar de um banco de dados para armazenar os usuários e os arquivos enviados por eles. Como já dito, vamos usar o Firebird 2.0 com SGBD. Entretanto, como o foco desse artigo é apenas o protocolo SOAP, não mostraremos como criar o banco e seus artefatos.
Basta você baixar os exemplos disponíveis e fazer uso do banco existente.
Iniciando os trabalhos
Com tudo preparado, já podemos começar a desenvolver nossa aplicação. Abra o Delphi, clique em File > New > Other e selecione o item Delphi Projects > WebServices. Marque o item SOAP Server Application e clique em OK. Quando for solicitado que você escolha o tipo de servidor a ser criado, selecione a caixa ISAPI/NSAPI Dynamic Link Library.
Clique em Sim quando aparecer a mensagem Create Interface for SOAP module. Na caixa seguinte, preencha o campo Service name como “DiscoVirtual” e em Unit identifier digite “uDiscoVirtual”. Mantenha as demais opções como estão e clique em OK.
O Delphi gerará todos os arquivos necessários para a criação de uma DLL ISAPI, e também uma interface para a classe remota. Salve todas as units em uma pasta chamada “server”, com exceção do arquivo “uDiscoVirtualIntf”, que deve ser armazenado em outro diretório, chamado “common”. Salve o WebModule como nome “uWebModule”, e o projeto como “DiscoVirtualServer”.
Abra a uDiscoVirtualIntf e monte a interface como mostrado na Listagem 1.
IDiscoVirtual = interface(IInvokable)
['{972B0D6B-4B41-4136-859F-5B94DD697341}']
{ <-- O seu GUID será diferente! }
procedure Login(const UserName,
Password: string); stdcall;
procedure Logout; stdcall;
function GetFileList: OleVariant; stdcall;
procedure UploadFile(const FileName: string;
FileData: TByteDynArray); stdcall;
function DownloadFile(
const FileName: string): TByteDynArray; stdcall;
procedure DeleteFile(
const FileName: string); stdcall;
end;
...
Confira outros conteúdos:
Instalando o ACBr
Mapeamento Objeto-Relacional com TMS...
Introdução aos componentes JEDI
Promoção de Natal
Oferta exclusiva de Natal!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,90
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 59,90 /mês
Total: R$ 718,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.