> Apêndices C, D e Referências
< Manutenção na aplicação, seu reflexo na Interface e Conclusão
Migração de Aplicações para Ambiente Web - Uma Abordagem Prática
A seguir são apresentados os diversos recursos utilizados na solução. A compreensão destes recursos permitirá, por exemplo, o entendimento de que o Java Script pode, em determinada situação, ser substituído por Java, e assim por diante. Evidentemente como nosso foco é Interface para Web, recursos tais com Html dificilmente poderão ser substituídos por outro.
Bash
O Bash, “GNU Bourne-Again Shell”, (BASH, 2007), é um interpretador de comandos, ou “shell”, como é conhecido em sistemas operacionais tais como Unix e Linux. Existem vários tipos de interpretadores; o Bash, Sh, Csh, KornShell, entre outros. Cada um destes tipos tem sua especificidade, porém existe um conjunto de comandos padrão aos quais todos atendem. O interpretador de comandos mais utilizado no Linux é o Bash, além disso, existem atualmente versões deste interpretador em sistemas Windows, um exemplo bastante comum é o CygWin, uma distribuição livre, fácil de instalar, que utiliza atualmente a versão 3.2 do Bash e pode ser obtido em http://www.cygwin.com/.
O Bash é um programa que permite ao usuário interagir com o sistema operacional utilizando comandos digitados do teclado. Com ele é possível criar scripts, ou seja, seqüências de comandos editados em um arquivo texto, que podem ser executados como se tivessem sido digitadas pelo usuário, por meio de referência ao nome do arquivo, como por exemplo:
#!/bin/bash
# programa Alo Mundo
echo “Alo Mundo”
Além de executar comandos do sistema, o Bash incorpora uma linguagem própria com comandos como if, for, while e definição de variáveis, funções, tabelas, entre outros, como a maioria das linguagens de programação.
O Bash é versátil e completo o suficiente para que diversos tipos de programas sejam feitos com ele. Possui uma interação natural com o sistema operacional e seus programas, dando condições para serem desenvolvidas interfaces interativas com o usuário, programas de cálculos, programas Cgi, instaladores de software, manipuladores de banco de dados, rotinas de backup, etc.
Exemplo de script:
#!/bin/bash
# testa a variável de ambiente Cgi GATEWAY_INTERFACE
# e dependendo da sua existência decide o tipo de interface a ser executada
if [ "$GATEWAY_INTERFACE" ] ; then
echo “Execute interface Web”
else echo “Execute interface Caractere” ; fi
Maiores informações sobre o Bash podem ser encontradas no sítio do projeto http://tiswww.tis.case.edu/~chet/bash/bashtop.html ou o manual do Bash, “man bash”, disponível na maioria das distribuições Linux.
Http
HTTP, (HTTP, 2007), que significa “HyperText Transfer Protocol”, ou seja, protocolo de transferência de hipertexto, é o protocolo mais utilizado para a transmissão de dados no ambiente Web. Cada vez que um usuário aciona um determinado link, seu navegador realiza uma comunicação com um servidor de páginas por meio deste protocolo.
Este protocolo transfere dados de imagens, sons e textos e tem como característica a utilização da linguagem HTML, (HTML, 2007), “Hipertext Markup Language”, Linguagem de Marcação de Hipertexto, para execução dos seus serviços.
Html
O conceito de hipertexto se baseia no fato de se ter acesso um outro documento a partir do documento atual por meio de informações de conexão que ligam um documento a outro e assim por diante. Estes documentos encontram-se num local pré-determinado, normalmente chamado de "site" ou sítio e para que se tenha acesso aos mesmos deve-se digitar o respectivo endereço, denominado URI “Universal Resource Indentifier”, como por exemplo, www.google.com.br.
O HTML, além de incorporar o conceito de hipertexto, é uma linguagem especializada na construção de páginas e na apresentação de informações em ambiente Web por meio do navegador do usuário. Consiste de um texto comum, editado em arquivos geralmente com sufixo “.htm ou .html”. É uma linguagem com marcações, conhecidas como “tags”. Todas as tags utilizadas são predefinidas e possuem cada uma delas uma utilização específica. Quando um sítio faz uma consulta a uma base de dados, os servidores de aplicações Web formatam seus resultados em HTML para que posteriormente sejam apresentados pelo navegador do usuário. Veja exemplo de página HTML a seguir:
<html>
<head>
<title>Html</title>
</head>
<body>
<form method="post" action="tst_html?recebe">
<input type="text" name="campo">
</form>
</body>
</html>
Observa-se por exemplo, tags tais como “<title>, </title>” que indicam o titulo da página; “<form>, </form>” que permitem a definição de um formulário e finalmente o “<input ...>” no qual é especificada uma caixa de texto para edição.
Se o texto anterior for editado em arquivo com o nome “tst_html.html”, em seguida copiado para uma pasta de documentos de um servidor de páginas e aberto por meio de um navegador tal como o Mozilla Firefox, informando “http://localhost/htdocs/nome_da_pasta/tst_html.html”, como resultado será obtido a exibição da página conforme a figura 42:
Figura 42- Exemplo de página html
O HTML é uma linguagem especializada na apresentação de informações em ambiente Web, por meio do navegador do usuário. Apesar de sua relativa simplicidade, é possível mostrar aos usuários informações de um modo bastante apresentável, incluindo textos formatados em diversos padrões de letras, cores, figuras e fotos.
Cgi
O Cgi, “Common Gateway Interface” é a forma de comunicação que um servidor de páginas emprega para enviar informações entre o navegador do usuário e um programa de computador em um servidor. É a interface entre um servidor de protocolo de hipertexto, Http e os outros recursos do computador servidor. (WEINMAN, 1997).
O Cgi não é realmente uma linguagem ou protocolo e sim um conjunto de variáveis e convenções para envio e recebimento de informações entre o navegador e o programa no computador servidor, normalmente chamado “programa Cgi”. Da mesma forma, um “programa Cgi” não é Cgi por si só, depende de outros fatores. Passa a agir como um programa Cgi, isto é, enviar e receber informações do navegador, quando está instalado em um local apropriado, genericamente chamado de diretório ou pasta Cgi e nessa condição sendo executado pelo servidor de páginas, e sempre dependendo dele, conforme exemplificado no script Bash a seguir:
#!/bin/bash
# cgi
# verifica se existe existe formulario
if test $1 ; then read formulario ; fi
# exibe a pagina Cgi-Bin
echo "Content-type: text/html" ; echo
echo "<html>" ; echo "<head>"
echo "<title>Cgi-Bin</title>"
echo "</head>" ; echo "<body>"
echo "<form method=\"post\" action=\"tst_cgi-bin?recebe\">"
echo "<input type=\"text\" name=\"campo\">"
echo "</form>" ; echo "</body>" ; echo "</html>"
Supondo que o nome deste arquivo contendo o script Bash seja “tst_cgi-bin”, a sua execução numa pasta comum, “>tst_cgi-bin”, na linha de comando do terminal, resultará na exibição do texto html conforme apresentado na figura 43:
Figura 43– Exemplo script Cgi executado em um terminal
Mas se o mesmo script for copiado para uma pasta Cgi de um servidor de páginas e aberto em um navegador, informando o seguinte endereço; “http://localhost/cgi-bin/nome_da_pasta/tst_cgi-bin”, neste momento ele atuará como um programa Cgi, e o resultado ilustrado no figura 44 será exibido no navegador.
Figura 44 – Exemplo de página html gerada em ambiente Cgi
Ou seja, o mesmo script, agora sendo executado pelo servidor de páginas, exibiu as informações, que neste momento foram capturadas e enviadas ao navegador do usuário. A exibição do código fonte se apresenta conforme figura 45:
Figura 45 – Fonte de página html gerada em ambiente Cgi
Quando se observa o resultado produzido e se compara com a situação inicial em que se edita manualmente o texto Html obtendo apenas uma página estática uma nova gama de possibilidades se apresenta.
Um programa que funcione como Cgi, seja elaborado com o Bash, Java, ou qualquer outra linguagem que possua condições equivalentes, pode criar páginas dinamicamente. Além disso, por conter uma lógica embutida, permite alguma “inteligência”, como por exemplo, receber informações por algum meio e gerar, com base em um “protocolo” pré-estabelecido, páginas que mudem constantemente, executando uma função de interface.
Css
Quando se pensa em interface, as questões de apresentação sempre estão presentes. O Css, (CSS, 2007), Cascading Style Sheets, ou Folhas de Estilo em Cascata, trata como o próprio nome diz do estilo da página. Por estilo deve-se considerar uma grande quantidade de características, tais como: cores, tipos e tamanhos de texto, posicionamento, enfim, um conjunto de parâmetros que permitam refinamento na apresentação e no comportamento dos componentes da página.
Existem duas formas básicas de se inserir elementos Css em uma página Html. Uma das formas, para questões que são específicas da página, é no próprio arquivo de texto html, como por exemplo:
<input type="text" size=18 value="Nome______________"
style="position: absolute; top: 140px; left: 9px; width: 166px;">
Neste exemplo se observa que na própria tag “<input” são colocados os atributos de estilo, “style=” para posicionamento tipo absoluto em pixels, nas coordenadas 140 por 9 com largura de 166.
Na segunda forma, para questões mais gerais, cria-se um arquivo de texto com atributos Css e faz-se referência a ele no texto html, como o exemplo que segue:
No arquivo “tst_css.css”
<!--
body {background-color: lightgrey;}
-->
Para fazer referência, em “tst_html.html”
<html>
<head>
<title>Html</title>
<link href="tst_css.css" rel="stylesheet">
</head>
<body>
- - -
No texto Css geral, é informado que a tag “<body>” terá a cor de fundo cinza claro, então, esta característica passará a valer para todos os corpos de página que fizerem referência a ele, como pode ser observado no segundo na tag “<link href=...”.
A principal vantagem se usar este tipo de recurso é que ser for necessário alterar este atributo, basta que se altere o texto Css de características gerais e isto se refletirá de forma automática em todas as páginas envolvidas, sejam estáticas ou dinâmicas.
Ao ser executado por meio de um navegador, informando o seguinte endereço; “http://localhost/htdocs/nome_da_pasta/tst_html.html”, o resultado será conforme exibido na figura 46:
Figura 46 – Exemplo de página html com Css alterando a cor de fundo
JavaScript
JavaScript , (FLA, 2002), é uma linguagem para ser utilizada em páginas da Web, desenvolvida pela Netscape. Com essa linguagem, é possível implementar lógica às paginas adicionando recursos dinâmicos, melhorando o visual e principalmente controlando as ações executadas pelo usuário.
O fato de não exigir a instalação de softwares especiais para sua execução, assim como ocorre com outras linguagens mais sofisticadas para o ambiente Web, o torna de grande usabilidade, já que qualquer página pode conter os seus recursos. Tudo depende da capacidade do navegador em entender as suas instruções e atualmente, praticamente todos os navegadores possuem essa condição.
Em sua essência, a linguagem atua inserida no meio do código HTML de páginas Web. Essa inserção pode ser feita de várias formas, desde a inclusão de código numa área determinada, em vários pontos da página, se referenciando a um arquivo externo à pagina ou qualquer combinação das formas anteriores. A forma de utilização depende de questões como generalidade ou especificidade do código.
A linguagem permite usar variáveis, criar funções, utilizar figuras, controlar eventos do mouse e do teclado, além de possuir, como qualquer outra linguagem comandos de controle de fluxo, como if, while entre outros, como na exemplificado a seguir, no arquivo tst_javascript.html:
<html>
<head>
<title>JavaScript</title>
</head>
<body>
<script language="Javascript">
document.write("Texto escrito com JavaScript")
</script>
</body>
</html>
Como se pode observar, inserido no texto Html, entre as tags “<script>” e “</script>” estão os comandos JavaScript, e neste exemplo, o “document.write” que exibe o texto "Texto escrito com JavaScript".
Sua execução em um navegador, informando o endereço, por exemplo, “http://localhost/htdocs/nome_da_pasta/tst_javascript”, terá como resultado o apresentado na figura 47:
Figura 47 - Exemplo de página html com o navegador executando código JavaScript
Assim como acontece com o Css, é possível utilizar o código fazendo referência a um arquivo externo.
No arquivo “tst_javascript.jsc”:
function escreve () {
document.write("Texto generico escrito com JavaScript") }
Para fazer referência, em “tst_javascript.html”
<html>
<head>
<title>JavaScript</title>
<script language="javascript" src="tst_javascript.jsc">
</script>
</head>
<body onload="escreve ()">
</body>
</html>
Nota-se algumas diferenças, em relação à utilização anterior:
No primeiro texto, o comando para escrever aparece dentro de uma função de nome “escreve”, com suas ações estão entre os caracteres “{ }”, já no texto html, a referência se faz por meio do parâmetro “src=” que aponta o local em que se encontra o script, e finalmente na tag “<body”, que se encarrega a partir do evento de carga, “onload”, de executar a função “escreve”.
Num primeiro momento, parece que tudo se tornou mais complexo, mas ao se considerar questões como códigos genéricos, que podem ser utilizados por diversas páginas, este contexto se torna bastante aplicável. Executando-se novamente em um navegador, observa-se o mesmo resultado anterior, conforme apresentado na figura 48:
Figura 48 – Navegador executando código JavaScript com código referenciado
Conforme já exposto, o Mecanismo de Acesso é composto dos componentes principais de acordo com a figura 49:
Componentes.
Figura 49 – Componentes do mecanismo de acesso
Dando continuidade, apresentada-se a as diferentes fases de execução, a de inicialização, processamento e encerramento assim como a atuação dos seus componentes principais:
Fase de inicialização.
Figura 50 – Componentes de inicialização
A seguir a atuação dos componentes na fase de inicialização, conforme pode ser visto na figura 50:
1. O usuário envia informação da aplicação selecionada ao servidor de páginas, e este executa o cliente da aplicação na condição de inícialização.
2. O cliente da aplicação na condição de inícialização, solicita ao servidor de aplicações o início da aplicação selecionada e após isso entra em estado de espera, aguardando retorno de novas páginas para emissão.
3. O servidor de aplicações inicia efetivamente a aplicação selecionada em segundo plano, ou seja, de forma autônoma, se desconectando dela após a solicitação de sua execução e retorna ao estado de espera, aguardando o atendimento de uma outra requisição.
4. A aplicação selecionada prossegue sua execução normal até o momento em que necessita de informações da Interface, e esta, detectando ambiente Web, envia página gerada ao cliente da aplicação que estava em seu aguardo, entrando em estado de espera.
5. O cliente da aplicação, até então em estado de espera, detectando que existe página para ser enviada, exibe as informações para o servidor de páginas e encerra.
Esta seqüência ocorre apenas uma vez, sendo seguida pela fase seguinte.
Fase de processamento.
Figura 51 – Componentes de processamento
Continuando, a atuação dos componentes na fase de processamento, conforme pode ser visto na figura 51:
1. O usuário, por meio da interação com a aplicação envia nova informação de formulário ao servidor de páginas, e este executa o cliente da aplicação agora na condição de processamento.
2. O cliente da aplicação detectando a condição de processamento, traduz as informações de formulário em arquivo, para que possa ser lido pela aplicação em funcionamento, até então no aguardo de novas informações e após isso entra em estado de espera, aguardando retorno de novas páginas para emissão.
3. A aplicação selecionada, percebendo informações de interação por meio da sua interface Web, executa internamente todos os procedimentos necessários até o momento em que necessita de novas informações da Interface, e esta, detectando ambiente Web, envia página gerada ao cliente da aplicação que estava em seu aguardo, entrado novamente em estado de espera.
4. O cliente da aplicação, que se encontrava em estado de espera, detecta que existe página para ser enviada, exibe as informações para o servidor de páginas e encerra.
Este ciclo continua indefinidamente, até que o usuário solicite o encerramento da aplicação, que será explicada na fase seguinte.
Fase de encerramento.
Figura 52 – Componentes de encerramento
Finalmente, a atuação dos componentes na fase de encerramento, conforme pode ser visto na figura 52:
1. O usuário, finalizando a interação com a aplicação, envia a solicitação de encerramento por meio de formulário ao servidor de páginas, e este executa o cliente da aplicação ainda na condição de processamento, pois a situação de encerramento é transparente para este módulo.
2. O cliente da aplicação detectando a condição de processamento, traduz as informações de formulário em arquivo, para que possa ser lido pela aplicação em funcionamento, até então no aguardo de novas informações e após isso entra em estado de espera, aguardando retorno de novas páginas para emissão.
3. A aplicação selecionada, percebendo informações de interação por meio da sua interface Web, executa internamente os seus procedimentos e detecta a solicitação de encerramento, momento em que informa a sua interface que proceda sua própria finalização. A interface por sua vez envia uma página de término ao cliente da aplicação que estava em seu aguardo, encerrando definitivamente as suas atividades.
4. O cliente da aplicação, após encerrar o estado de espera e detectando que existe página para ser enviada, exibe as informações para o servidor de páginas e encerra.
Após a execução desta seqüência, todos os processos, exceto naturalmente os do servidor de aplicações, se encerram.
> Apêndices C, D e Referências
< Manutenção na aplicação, seu reflexo na Interface e Conclusão
Migração de Aplicações para Ambiente Web - Uma Abordagem Prática