Esse artigo faz parte da revista Clube Delphi Edição 103. Clique aqui para ler todos os artigos desta edição

1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt" vAlign=top width=751>

Qual a finalidade?

·         Desenvolver algo prático, que possa ser usado no dia-a-dia, aplicando os mesmos métodos em diversos sistemas.

Quais situações utilizam esses recursos?

·         Todo e qualquer sistema que necessita de visões on-line do cenário, podem ser construídos utilizando os conceitos que aprenderemos nesse artigo.

 

Resumo do DevMan

O desenvolvimento de sistemas em n camadas tem se popupalirazado no cenário de TI. Fazer com que uma aplicação possa ser gerenciada a distância via Web não é uma tarefa simples, porém o que veremos é a construção de uma solução completa utilizando o protocolo SOAP e o conceito DataSnap. Veremos que é perfeitamente possível colocar tudo em prática em apenas alguns passos.

A estrutura que será apresentada dará um enfoque exclusivo no uso da tecnologia SOAP e DataSnap para a integração de sistemas entre empresas, tratando do funcionamento e regras de negócio com algumas preocupações centralizadas de segurança.

 

Conectividade, acessibilidade e agilidade são palavras que podem definir o novo modismo no que diz respeito ao desenvolvimento de softwares para controles industriais, tais como: de produção e PCP (Programa de Controle de Produção). 

Nesse artigo iremos demonstrar de forma prática o uso da tecnologia DataSnap trabalhando com o protocolo SOAP (Simple Object Access Protocol). Ambas tecnologias estão disponíveis no Delphi e podem ser largamente utilizadas para os mais variados fins. O DataSnap é um conjunto de controles e conceitos que facilitam o desenvolvimento em camadas.

Com essa facilidade, criar um sistema que possa ser acessado de qualquer parte do mundo acaba sendo uma das principais vantagens do DataSnap. Outra grande vantagem é, certamente, a velocidade tanto do desenvolvimento quanto do acesso aos dados. E velocidade conta bastante quando falamos em Web e sistemas integrados.

Sendo assim, criaremos uma aplicação que irá simular uma automação avançada entre indústrias do setor metal-mecânico e empresas fornecedoras de matérias-primas. A aplicação será desenvolvida em duas etapas, onde, nesse primeiro artigo, veremos desde o entendimento do problema até a criação e codificação da camada Server.

No segundo e último artigo da série, veremos a conexão do servidor por meio de duas aplicações cliente. Umas delas responsável pelos cadastros e gerenciamento do sistema e a outra que cuidará somente dos pedidos dos fornecedores. Faremos uma breve análise sobre o problema, passando ao levantamento de conceitos a serem utilizados no desenvolvimento, bem como proposição do banco de dados e o desenvolvimento da aplicação.

 

Entendimento do Problema

Para quem não sabe, uma linha de produção trabalha diariamente correndo alguns riscos, como por exemplo: falta de matéria-prima. Esses riscos certamente influenciam no faturamento da empresa. Quem controla, normalmente, os materiais e matérias-prima são gerentes de produção que tem que como principal função: organizar, cuidar e garantir a máxima eficiência de uma linha.

 Um dos pontos-chave, para que uma linha de produção não sofra uma eventual parada por falta de algum tipo de material, gira em torno do controle e dos pedidos de compras. A principal regra para isso é justamente o controle do estoque mínimo de cada produto necessário. Tendo em vista essa situação, desenvolveremos um sistema capaz de detectar o limite mínimo de estoque e, automaticamente, emitir pedidos de compras avisando então os gerentes de produção.

Deste modo definimos que o sistema será desenvolvido em três camadas: Camada do Banco de Dados, Camada do Servidor (onde estarão as regras de negócio) e as Camadas Cliente que serão acessadas tanto para a empresa como para os fornecedores.

 

Client/Server x Três Camadas

Mas o que realmente muda em uma aplicação três ou n camadas para o método convencional (Client/Server)? Veja a análise dos dois casos.

·         No método duas camadas (Client/Server): quando trabalhamos com eventos de componentes visuais, é fácil dispersarmos algumas regras como as consistências de campos. Isso pode acarretar em dores de cabeça no momento de uma manutenção, bem como alguns problemas ligados a distribuição do sistema. Se uma regra for mudada em um formulário, todo o sistema precisa ser recompilado e distribuído novamente.

·         Analisando o método de três ou n camadas, podemos perceber que todas as regras de negócio localizam-se na camada de meio da aplicação, ou seja, a camada que fica entre o banco de dados e cliente junto ao servidor de aplicação.

 

 

Nota: DataSnap é uma coletânea de tecnologias que funcionam em conjunto e tem o objetivo de facilitar o desenvolvimento de aplicativos distribuídos.

 

Outra definição que também cabe citar aqui é de que SOAP foi definido em XML, para tanto a comunicação (remota) entre as camadas é baseada em XML e o transporte da mensagem é feita através do HTTP (protocolo de transporte de dados na Internet) permitindo que a comunicação aconteça sem bloqueios entre as camadas.

 

Banco de Dados

A Figura 1 exibe de uma forma bem simples como se dará a organização e armazenamento de dados. Nele serão armazenadas as informações de produtos, fornecedores e pedidos com seus itens. Lembrando que os pedidos serão gerados automaticamente assim que os mesmos chegarem a seus limites mínimos de estoque para seus respectivos fornecedores.

O banco de dados definido para o desenvolvimento da aplicação foi o Firebird 1.5 e conforme a Figura 1 é proposto o script de criação do banco de dados demonstrado na Listagem 1. Utilize um gerenciador de banco de dados, como o IBExpert por exemplo, ou qualquer outro para executar o script.

 

Figura 1. Estrutura proposta para o Banco de Dados

 

Listagem 1. Script para criação da base de dados

SET SQL DIALECT 3;

SET NAMES WIN1252;

 

SET CLIENTLIB '\fbclient.dll';

 

CREATE DATABASE '\BD_PEDIDOS.FDB'

USER 'SYSDBA' PASSWORD 'masterkey'

PAGE_SIZE 4096

DEFAULT CHARACTER SET WIN1252;

 

CREATE GENERATOR GEN_FORNECEDORES_ID;

SET GENERATOR GEN_FORNECEDORES_ID TO 0;

 

CREATE GENERATOR GEN_PEDIDOS_ID;

SET GENERATOR GEN_PEDIDOS_ID TO 0;

 

CREATE GENERATOR GEN_PRODUTOS_ID;

SET GENERATOR ...

Quer ler esse conteúdo completo? Tenha acesso completo