quarta-feira, 29 de agosto de 2012

Extjs web service - datasnap



Eu estava folheando umas revistas antigas aqui em casa "Informática Exame hoje Revista Info", quando deparei com o artigo Função por extenso no Excel. Tratava-se de uma macro VBA, a qual gerava o extenso de um valor numérico qualquer. Esta função retornava um valor, dinheiro ou quantidade, por extenso, usada para a impressão de cheques, valor de duplicatas, entre outros. Surgiu a seguinte questão: Como converter números em texto por extenso no ExtJS 4 consumindo um webservice feito no Delphi? Aí são outros quinhentos (anos?).

A pesquisa mostrou que aplicações clientes javascript (ExtJS) pode ter boa parte dos processos realizados remotamente no servidor (Delphi) de maneira muito veloz, efetuando solicitações e recebendo respostas através dos métodos disponibilizados pelo servidor de aplicação com base no protocolo TCP/IP + HTTP para possibilitar a comunicação. Pretty cool, isn't it?

Mostrou a possibilidade de clientes em javascript (aqui ExtJS) consumir, invocar, chamar métodos remotamente em servidores de aplicações Win32 implementados no Delphi. O Delphi não está restrito a clientes Desktop win32, pode-se criar aplicações distribuídas baseadas em REST, onde o tráfego de dados são realizados via JSON.

O servidor de aplicação baseado no REST recebe a solicitação de uma aplicação cliente, processa e retorna uma resposta com relação a tal requisição de uma maneira automática. Por ser baseado em padrões comuns, mais especificamente na notação JSON.

Quanto ao JSON, o mesmo pode ser definido como uma notação padrão que dentro deste contexto deve ser adotada para a transferência das informações pelo fato de ser mais leve e simples se comparado a outros padrões presentes na atualidade, como é o caso do XML. Neste cenário, utilizei o Sencha Architect, como ferramenta de apoio.

No Sencha, são invocados dois métodos: a função Extenso (converte valores numéricos para extenso) e a função inverte strings. Estas funções foram implementadas no Delphi.


Keywords:
Sencha Architect consuming webservice; Datasnap with ExtJS; Datasnap javascript client. Função extenso no ExtJS; ExtJS web service.