Artigo Clube Delphi 106 - Aplicações multicamadas com BSS
Artigo da Revista Clube Delphi Edição 106.
Delphi Core
Aplicações multicamadas com BSS
Criando sistemas multicamadas utilizando Borland Socket Server - Parte II
Neste artigo veremos |
·Dicas de implantação e debug das aplicações cliente e servidora; ·Implementação da aplicação cliente; ·Interação entre as camadas cliente e servidora; ·Conceitos de orientação a objeto; |
Qual a finalidade? |
·Demonstrar a criação de uma aplicação que permita acesso remoto às informações em condições aceitáveis, apresentando uma solução que possua separação das regras de negócio e camadas de apresentação, tornando-se uma solução com possibilidade de evolução e facilidade em manutenção. |
Quais situações utilizam esses recursos? |
·Qualquer ambiente que necessite de grande disponibilidade, empresas que possuam sistemas complexos ou integração entre matrizes e filiais. |
Resumo do DevMan
Sistemas multicamadas têm sido amplamente discutidos nas comunidades de tecnologia, no entanto, muitos desenvolvedores ainda possuem receios em migrar seus softwares cliente-servidor para esta arquitetura ou iniciar aplicações deste tipo, devido à falta de conhecimento ou até mesmo por achar a implementação muito complexa.
Neste artigo veremos como desenvolver um sistema em multicamadas utilizando as tecnologias DataSnap e BSS (Borland Socket Server), abordando as principais maneiras para a construção do ambiente, além dos principais conceitos para o desenvolvimento de uma aplicação com qualidade.
No artigo anterior, desenvolvemos a parte servidora da aplicação que estamos construindo. Seguindo parte do raciocínio empregado no artigo anterior, iremos iniciar o desenvolvimento da nossa aplicação cliente, realizando algumas alterações à nossa aplicação servidora para a implementação das consultas. Veremos também algumas boas práticas, como um recurso de reaproveitamento de código muito conhecido no mundo da orientação a objetos, comumente chamado de herança. Logicamente, antes mesmo de iniciarmos o desenvolvimento, não posso deixar de comentar os passos relativos ao servidor de aplicação que são de extrema importância nesta fase de desenvolvimento.
Sendo assim, o primeiro passo a ser considerado é a inicialização do nosso comunicador, o Socket Server, que encontra-se por padrão em C:\Arquivos de programas\CodeGear\RAD Studio\5.0\bin\ScktSrvr.exe. Ele é necessário para que possamos fazer a conexão de nosso sistema com o servidor de aplicação. Bem, vamos por a mão na massa e finalizar nosso sistema.
O Socket Server
O Socket Server é uma pequena aplicação que permite a comunicação da aplicação cliente com o servidor de aplicativos. Ela possui código-fonte e é free, acompanhando a instalação do Delphi. Existem duas maneiras de realizar sua instalação, sendo a primeira manualmente apenas executando o arquivo mencionado, e a outra é efetuada como um serviço que será iniciado juntamente com seu sistema operacional.
Nota: Realizando a instalação do arquivo Socket Server (ScktSrvr.exe) como um serviço, não será possível fazer o debug da aplicação servidora, portanto é recomendado que se utilize este recurso apenas no ambiente de produção ou implantação. Para registrá-lo como serviço, simplesmente abra o prompt de comandos e acesse o diretório padrão do Socket Server digitando a linha de comando scktsrvr.exe –install, para realizar o processo reverso de desinstalação do serviço apenas mude o parâmetro –install para –uninstall.
Ao iniciarmos o Socket Server, devemos nos atentar para o servidor de aplicação, pois para conseguirmos visualizá-la na aplicação cliente é necessário efetuar seu registro. Para isto, abra o projeto anterior contendo a aplicação servidora e acesse a opção Project>Options. Selecione do seu lado esquerdo a opção Debugger e na opção Parameters do lado direito, digite /regserver conforme mostra a Figura 1. Perceba que ao executar sua aplicação pressionando a tecla F9 ou através do botão Run. A princípio nada acontecerá, porém, neste momento foram criadas as GUID (Globally Unique IDentifier) dos nossos Remote Data Modules no registro do seu sistema operacional. Após ter registrado o servidor de aplicação remova o parâmetro para conseguir realizar o debug normalmente.
Nota: Ao adicionarmos um componente novo ou alterar algo em algum Remote Data Module já existente na aplicação, não é necessário registrar novamente a aplicação, sendo necessário efetuar o registro toda vez que adicionarmos um novo Remote Data Module em nossa aplicação servidora.
Figura 1. Registrando a aplicação servidora através do RAD Studio
Construindo a Aplicação Cliente
Após termos tomado estes devidos cuidados, vamos finalmente iniciar o desenvolvimento da nossa aplicação cliente, deste modo abra seu RAD Studio e acesse a opção File>New>VCL Forms Application – Delphi for Win 32 e altere as propriedades Name do formulário inicial para frmMenu, Width para 800, Height para 600, Position para poDesktopCenter e defina seu Caption como Sistema de Bibliotecas. Adicione ao formulário um componente Panel e altere suas propriedades Name para pnlTopo, limpe a propriedade Caption e por último marque Align para alTop, dentro do nosso pnlTopo adicione quatro componentes SpeedButton e altere suas propriedades Name, respectivamente para spbEditora, spbLivro, spbPessoa e spbEmprestimo. Defina a propriedade Caption para Editora, Livro, Pessoa e Empréstimo e insira quatro Glyphs conforme seu gosto, para o exemplo alterei também as propriedades Layout de cada componente para blGlyphTop dispondo as imagens ao topo e suas descrições de funcionalidades logo abaixo da figura, ao concluir as configurações selecione File>SaveAll salvando em um diretório de sua preferência a Unit como untMenu e o projeto como ClientBSS.dproj. Terminando as configurações seu formulário deve estar com a aparência semelhante ao da Figura 2.
Figura 2. Exemplo do formulário de menu da aplicação cliente
Criando o formulário de herança
Apesar de ser um assunto amplamente comentado, a herança ainda é um recurso pouco utilizado pelos desenvolvedores Delphi. Não irei entrar em muitos detalhes, pois este não é o foco do nosso artigo, mas este modelo será utilizado em todas as telas do nosso sistema, facilitando muito o trabalho, pois boa parte do código será reaproveitada.
Sendo assim, crie um novo formulário e altere suas propriedades Name para frmHeranca, Position para poMainFormCenter, Width para 624, Height para 348, BorderStyle para bsDialog e por último Caption para Formulário de Herança. Adicione a este formulário um componente Panel setando seu Name para pnlTopo e Align para alTop, dentro do Panel insira oito componentes SpeedButton e altere respectivamente suas propriedades Name para spbIncluir, spbEditar, spbExcluir, spbCancelar, spbSalvar, spbDevolver, spbPesquisar e spbSair e a propriedade Caption para Incluir, Editar, Excluir, Cancelar, Salvar, Devolver, Pesquisar e Sair no marque o Visible para False.
Ainda no Panel insira um ComboBox alterando sua propriedade Name para cmbParametros, Style para csOwnerDrawFixed e limpe o conteúdo de Text, em seguida adicione um Edit alterando o Name para edtPesquisar e dois Labels alterando seus Captions para Pesquisar por... e Texto :.
Fora do Panel adicione um componente PageControl e altere Name para pclPrincipal, Align para alClient em seguida crie duas abas ao componente clicando com o botão direito do mouse sobre o componente e selecionando a opção New Page, clique sobre a primeira e altere a propriedade Name para tbsConsulta e Caption para Consulta, em seguida clique na segunda e altere as mesma propriedades para tbsCadastro e Cadastro. Selecione a tbsConsulta e adicione um componente DBGrid alterando a propriedade Align para alClient, por último adicione dois componentes DataSource ao nosso formulário nomeando o primeiro para dsrCadastro e o segundo para dsrPesquisa, agora ligue o dsrPesquisa a propriedade DataSource do nosso DBGrid, realizando estes passos teremos concluído a parte visual de nosso formulário de herança, a Figura 3 exibe o resultado final do nosso formulário.
Figura 3. Interface do formulário de herança
Agora que concluímos a interface de apresentação dos dados vamos iniciar a codificação do formulário de herança, lembrando que toda a codificação realizada neste formulário será funcional para as demais telas de nossa aplicação. "
[...] continue lendo...Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo