quinta-feira, 31 de julho de 2008

Formulários HTML

Para enviar informações ao servidor na arquitetura WEB utilizamos a Requisição HTTP(HTTP Request), nesta podemos enviar informações através de cookies, na URL chamado querystring e internamente na requisição. Uma forma muito comum de enviar estas informações do cliente é utilizar o formulário HTML e seus elementos de formulário.

O formulário HTML é representado pelo elemento <form> e dois atributos são importantes de serem conhecidos por nós, o atributo method, que pode receber os valores get e post, e o atributo action que define a URL destino que os dados do formulário serão enviados para fazer a próxima requisição.

Veja uma exemplo no código 1:

<form method="post" action="formulario.asp" >
</form>

Código 1 - Exemplo da utilização do elemento <form>


O formulário define o método e o destino para onde os dados do formulário serão enviados, mas somente os valores dos elementos de formulários serão enviados. Então textos livres ou qualquer outro elemento que não seja de formulário, não serão enviados ao servidor. Ainda para que o elemento de formulário tenha seu valor enviado, deve ter definido o seu atributo name e o atribudo disabled não definido, ou seja, o elemento deve estar habilitado.

Para ver isto acontecendo, vamos criar outro HTML chamado formulario.htm e adicionar o código 2 como seu conteúdo:

<html>

<head>

<title>Formulario HTML</title>

</head>

<body>

<form method="post" action="formulario.htm">

<fieldset>


<legend>Informacoes do Usuario</legend>

Usuario: <input
type="text" name="usuario" /><br />

Senha: <input
type="password" name="senha" /><br />

<input
type="checkbox" id="usuarioAtivo" name="usuarioAtivo" value="1" /><label
for="usuarioAtivo">Usuario ativo</label>

</fieldset><br />

Nome: <input type="text" name="nome"
/><br/>

Sexo:

<input type="radio" name="sexo"
id="sexoMasculino" value="m" /><label for="sexoMasculino">Masculino</label>

<input type="radio" name="sexo"
id="sexoFeminino" value="f" /><label for="sexoFeminino">Feminino</label><br />

Estado Sudeste:

<select name="estado">

<option>Espirito
Santo</option>

<option>Minas
Gerais</option>

<option>Rio de
Janeiro</option>

<option>São
Paulo</option>

</select><br />

Cupom desconto: <input type="text"
name="cupomDesconto" readonly="readonly" value="12-34-56" /><br />

Observacoes:<br />

<textarea name="observacoes" cols="60"
rows="2"></textarea><br /><br />

Teste de campo desabilitado: <input
type="text" name="campoDesabilitado" disabled="disabled" value="Valor do campo
desabilitado" size="60" /><br />

Este é um campo oculto: <input
type="hidden" name="campoOculto" value="Valor do campo oculto" /><br />

<input type="submit" name="enviar"
value="Enviar" />

</form>

</body>

</html>

Código 2 - Código do formulário 1

No código 2 têm vários elementos de formulário, abaixo segue uma lista de todos os elementos de formulário do HTML 4.01 e está em negrito os elementos utilizado no código 2:
  • <input type="text"/>
    Define uma caixa de texto para digitação do usuário
  • <input type="password"/>
    Define uma caixa de texto para digitação do usuário, o texto digitado não aparecerá no navegador
  • <input type="radio"/>
    Define uma opção para seleção
  • <select>
    Monta uma lista de valores, para seleção de uma ou várias opções.
  • <input type="checkbox"/>
    Controle que permite selecioná-lo, normalmente utilizado para confirmar uma opção
  • <textarea>
    Permite a digitação de um texto que pode ter várias linhas.
  • <input type="file">
    Permite o envio de um arquivo selecionado pelo usuário ao servidor.
  • <input type="hidden">
    Permite o envio de um valor, que não é visível pelo usuário.
  • <input type="submit">
    Botão que, quando clicado, faz o envio dos dados do formulário.
  • <input type="reset">
    Botão que limpa os valores dos elementos de formulário para seus valores iniciais.
  • <input type="image">
    Botão que é uma imagem, quando clicado, envia os dados do formulário.
  • <input type="button">
    Botão que não envia os dados do formulário. Interessante para o uso com javascript.
Além dos elementos de formulário acima, o código têm também os elementos <fieldset> e o <legend>, estes elementos definem uma área e um texto da área respectivamente, o que é gerado ao ser interpretado pelo navegador está disponível na Imagem 1. O elemento <label&bt; que define um texto, que quando clicado ativa o elemento de mesmo id do texto definido no atributo for. Assim ao se clicar no label de texto "Usuário ativo", o checkbox é marcado.

Vamos ver o que o HTML acima gera ao ser visualizado em um navegador:

Imagem 1 - Visualizando o formulário

Preencha os valores como na Imagem 2:

Imagem 2 - Preenchendo os valores

Clicando em enviar e analisando a requisição HTTP criada para este evento, por exemplo utilizando o firebug, teremos o resultado conforme Imagem 3 e Imagem 4:

Imagem 3 - Analisando a requisicao HTTP no Firebug

Imagem 4 - Parametros de post da requisicao HTTP

Alguns pontos importante de serem observados são:
  • Textos livres dentro de formulário não são enviados, somente elementos de formulário;
  • Elementos de formulário em modo somente leitura, atributo readonly definido, tem seus valores enviados normalmente;
  • Elementos de formulário em desabilitados, atributo disabled definido, não tem seus valores enviados;
  • Campos ocultos tem seus valores enviados;

Repare que para ter seus valores enviados os elementos devem ter seu atributo name definido. O atributo id pode ser definido, mas não influencia no envio de informações ao servidor, este atributo é utilizado para manipulação em cliente, seja por javascript ou por exemplo pelo elemento <label>

Referências:
http://developer.mozilla.org/en/docs/DOM:form
http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-40002357
http://developer.mozilla.org/en/docs/XUL:label
http://msdn.microsoft.com/en-us/library/ms535845(VS.85).aspx

quarta-feira, 30 de julho de 2008

HTML - Experiência rica

O HTML pode ter imagens, textos e hiperlinks como já vimos, mas somente isso talvez não faria nossos documentos possibilitarem uma experiência totalmente rica.

Além de permitir a interligação de todos os documentos da WEB entre si, mostrar imagens e estruturar o HTML com grande liberdade, também é possível ver multimídias como animações, vídeo e áudio. Assim nossos documentos HTML além de poderem ter uma interface bonita, podem permitir uma ótima experiência e usabilidade para nossos usuários.

Antes de sair colocando um vídeo ou áudio para tocar em nossas páginas devemos lembrar que estes recursos, se tocados sem o consentimento do usuário, pode gerar bastante incômodo. Este tipo de recurso deve ser utilizado com cuidado, diversos sites que utilizam áudio, como por exemplo o YouTube, tocam seus vídeos quando o usuário os aciona e/ou sempre há a possibilidade de interromper ou parar.

O HTML possibilita a utilização de vídeo e áudio historicamente através de alguns elementos como <bgsound>, <a>, <embed>, <object>, como é possível ver neste link, mas cada solução tem sua limitação quanto a diferentes versões de navegadores e sistemas operacionais. Para uma solução que atenda diferentes sistemas operacionais e navegadores, é necessário usar javascript.

Hoje em dia é muito comum ouvirmos falar do Adobe Flash(o antigo Macromedia Flash, pois a Adobe comprou a Macromedia), veja um demonstração dos recursos neste flash da própria adobe. A Microsoft também têm um produto concorrente para o Adobe Flash, que é o Silverlight. Veja uma demonstração. Ambas empresas fornecem um produto que é o ambiente próprio para desenvolver suas animações, permitindo a utilização de scripts e linguagens de programação

O interessante que estas opções, principalmente o Flash, vêm se tornando tão comuns que vários navegadores já vêem com ele instalado. Ou seja, se atender TODOS os usuários que acessem o nosso site não for tão crítico para o negócio, é possível utilizar destes recursos sem receio de perder usuários.

Outra forma de desenvolver aplicações WEB hoje em dia é o chamado RIA(Rich Internet Application) ou Aplicação de Internet Rica, também utilizando em cliente Flash e Silverlight.

Referências:
http://developer.mozilla.org/en/docs/Using_the_Right_Markup_to_Invoke_Plugins
http://www.scriptwell.net/howtoplaysound.htm
http://silverlight.net/
http://www.adobe.com/products/flashplayer/
http://www.adobe.com/products/flex/

terça-feira, 29 de julho de 2008

Praticando alguns recursos do HTML

Neste post já vimos como criar um HTML básico utilizando o VWD. Vamos agora adicionar outra página ao projeto já existente CriandoNovoSite. Para isso, antes temos que abrir o VWD, pode ser que seja listado o projeto CriandoNovoSite nos projetos recentes(Recent Projects), como na Imagem 1, se assim for, clique no projeto para abri-lo.

Imagem 1 - Projetos recentes no VWD

Caso o projeto não esteja nos recentes, será possível abrir o projeto normalmente através do menu File / Open Web Site, como na Imagem 2

Imagem 2 - Abrindo o site Web

Clique nesta opção, selecione o diretório do site WEB, Imagem 3, e clique em Open.

Imagem 3 - Selecionando o local do site Web

Agora que temos o projeto aberto, crie um novo arquivo chamado PraticaRecursos.htm e adicione o HTML do código 1 neste.

<html>

<head>

<title>Pratica de Recursos HTML</title>

</head>

<body>

</body>

</html>

Código 1 - HTML inicial

No código 1 adicionamos um HTML básico, onde somente o título da janela foi definido. Todo HTML deve ter o elemento raiz <html>, este por ser raiz, deve ser o primeiro elemento aberto e último elemento fechado.
Para um HTML bem escrito, lembre-se sempre de colocar os elementos minúsculos e serem fechados. Neste HTML ainda podemos ver o elemento body, mas nada foi adicionado nele ainda. Já o título do documento foi definido para "Pratica de Recursos HTML". Com o arquivo salvo, ao abrir a página em um navegador veremos uma tela em branco com o título definido, conforme imagem 4:

Imagem 4 - HTML inicial

Adicione o código 2 dentro do elemento body:


<div>

Notícia

Esta é uma descricão básica da notícia.

Leia aqui a notícia na íntegra
</div>

Código 2 - Conteúdo adicionado ao body

No código 2 acabamos de adicionar um conteúdo ao elemento body, o conteúdo que está dentro do elemento body é que poderá estar visíveis para o usuário. Salve o arquivo e visualize as modificações no navegador, o resultado será como na Imagem 5

Imagem 5 - Visualizando conteúdo adicionado ao body

Repare que apesar de ter sido adicionado com quebra de linha os textos, a visualização no navegdor não mostrou estas quebras de linha, isto porque como já vimos no HTML a quebra de linha deve ser feita com o elemento
.
Vamos evoluir este documento e colocar o texto Notícia como título, a descrição básica da notícia em itálico e o texto Leia aqui a notícia na íntegra como hiperlink. Para isso modifique o texto adicionado no código 2 para ficar como este no código 3:


<div>

<h1>Notícia</h1>



<i>Esta é uma descricão básica da notícia.<i><br />



<a href="http://terramagazine.terra.com.br/interna/0,,OI3030855-EI6578,00.html">Esta é para ler a notícia na íntegra</a><br
/>

</div>

Código 3 - Fazendo as alterações de formatação

Usamos então o elemento <h1> para colocar a notícula como título. Para o efeito de itálico no texto, usamos o elemento <i>. Para criar o link usamos o elemento <a> e definimos seu atributo href com o valor de um URL para outro documento HTML, que está hospedado em outro site WEB. Este é o conceito de hiperlink do HTML, que permite que todos os documento da WEB se relacionem. Feito as modificações, salve e visualize o resultado, deverá ser como a Imagem 6

Imagem 6 - Visualizando o texto formatado

Continuando a alteração de nosso modelo, vamos adicionar uma imagem, definir cores e melhorar a formatação e texto do nosso documento. Para adicionar a imagem iremos salvar a Imagem 7 abaixo no mesmo diretório da página, faça isso clicando na imagem com o botão direito e mandando salvar como, salve com o nome brasil.jpg no mesmo diretório da página PraticaRecursos.htm.
Imagem 7

O solution explorer no VWD deverá ficar então como na Imagem 8:

Imagem 8 - Solution Explorer após salvar imagem

Agora faça a modificação no HTML para ficar como no código 5:


<html>

<head>

<title>Pratica de Recursos HTML</title>

</head>

<body>

<div>

<h1>A machadinha
de Daniel Dantas</h1>

<div
style="float:left">


<img src="brasil.jpg" alt="Brasil de olho" />

</div>

<div
style="float:right; background-color:#efffff">


<i>...O banqueiro baiano já insinuou que se contar o que sabe derruba de Collor
pra cá sem disparar um único tiro. Essa sua tranqüilidade me faz lembrar um xará
seu chamado Daniel Boone, que nos anos 70 fazia o maior sucesso na TV....<i><br
/>


<a
href="http://terramagazine.terra.com.br/interna/0,,OI3030855-EI6578,00.html">Leia
a notícia completa</a>

</div><br />

</div>

</body>

</html>

Código 5 - HTML com imagem e formatação

Foram feitas diversas alterações no HTML, as alterações de texto são mais fáceis de perceber, somente foram feitas para nosso exemplo parecer uma chamada para uma notícia. Para a imagem ficar a esquerda e o texto a direita, adicionamos dois elementos <div>, e definimos o seu atributo style com o estilo float:left(para definir o que fica a esquerda) e o estilo float:right(para definir o que fica a direita).

Dentro do div que fica a esquerda, adicionamos a imagem que acabamos de salvar. Para adicionar esta imagem o elemento utilizado é o <img>, ainda é necessário definir o atributo src com a url da imagem a ser mostrada, e o atributo alt que é o texto alternativo que também será mostrado como dica.

No div da direita definimos também outro estilo, que foi a cor de fundo através do estilo background-color, e seu valor recebeu um valor hexadecimal RGB, neste exemplo o efefef.

Veja o resultado na imagem 9

Imagem 9 - Resultado final

Referências:
http://www.w3.org/MarkUp/
http://terramagazine.terra.com.br/interna/0,,OI3030855-EI6578,00.html
http://movimentoeticaja.blogspot.com/

segunda-feira, 28 de julho de 2008

HTML(formatando o texto)

Então, já vimos que o HTML permite uma estruturação do seu documento. Agora vamos ver que é possível utilizar alguns elementos para fazer a sua formatação.

Existe os elementos Hn, onde n é um número, que permite a criação de títulos e subtítulos no documento. H1 é o maior título de um documento HTML e H6 é o menor subtítulo. Veja um exemplo no código 1:


<html>

<body>

<h1>Título 1</h1>

<h2>Título 2</h2>

<h3>Título 3</h3>

<h4>Título 4</h4>

<h5>Título 5</h5>

<h6>Título 6</h6>

</body>

</html>

Código 1 - Utilizando elementos de título

Outras possibilidade são definir textos em negrito, itálico, sublinhado e fonte. E estes respectivos elementos são:
  • <b> : define um texto em negrito

    <b> texto em negrito</b>


  • <i> : define um texto em itálico

    <i> texto em itálico</i>


  • <u> : define um texto sublinhado

    <u> texto sublinhado</u>


  • <font face="fonte" size="numero1 a 7">

    <font face="arial" size="5"> texto </font>
Veja um exemplo no código 2:

<html>

<body>

<font face="verdana">Este é um <b>texto</b> que <i>utiliza a
<u>formatação de html</u></i>. </font>

</body>

</html>

Código 2 - Formatando o texto HTML

O HTML pode ser formatado de várias maneiras, incluindo estilo, esta são alguns básicas para prosseguirmos no nosso estudo da linguagem.

domingo, 27 de julho de 2008

Conhecendo melhor o HTML

O HTML(HyperText Markup Language) é uma linguagem de marcação que permite descrever informação de um documento em estrutura de texto. É o formato de documento mais comumente utilizado no WWW(World Wide Web) para tráfego de conteúdo.

Através do HTML é possível definir uma série de informações além do texto, como quebra de linha, parágrafos, títulos, hiperlinks, imagens, formulários para requisição de dados e outros.

O HTML têm várias versões padrões, suas versões são controladas pela W3C, existe por exemplo o HTML 4.01 e o XHTML 1.0 e especificações que ainda estão sendo desenvolvidas, como é o caso do HTML 5. Sua sintaxe lembra bastante a sintaxe do XML(eXtensible Markup Language), mas somente o XHTML descende do XML. O HTML 4.01 e posteriores descendem do SGML(Standard Generalized Markup Language), linguagem também ancestral do XML.

Um exemplo básico de HTML é este do código 1, não se preocupe se não entender agora, a idéia é explicarmos os conceitos envolvidos e será possível posteriormente fazer sua leitura.

<html>

<head>

<title></title>

</head>

<body>

<span>TEXTO</span><br />

<form method="post">

</form>

</body>

</html>

Código 1 - Exemplo de HTML

Vamos agora entender os conceitos envolvidos:
  • TAG - Elementos
    Exemplo : <html></html>

  • Attributes - Atributos
    Exemplo: <form method="post">

  • Values - Valores
    Exemplo: <form method="post">

Elementos


Os elementos são rótulos que identificam e estruturam a página Web, são delimitados pelos caracteres menor(<) e maior(>) e em HTML bem escrito todo elemendo deve ser aberto e fechado.

Os elementos podem possuir nenhum ou vários atributos. Outro ponto importante é que o HTML tem uma hierarquia, onde um elemento pode estar dentro do outro. Voltando ao código 1 podemos reparar que o elemento head é elemento filho do html, isto porque o html foi aberto no começo e fechado somente no fim. Então podemos dizer que os elementos podem ter outros elementos e/ou textos, ou serem vazios.

Existem duas formas de fechar os elementos:
  1. <html></html>
  2. <br />
Repare que o elemento é aberto estando dentro dos caracteres maior e menor e é fechado com a barra(/)

Atributos e Valores


Os atributos e valorees definem informações e comportamento do elemento. Ou seja, no código 1 temos a seguinte definição:

<form method="post">

Neste caso o elemento form teve seu atributo method definido para o valor post. É importante ser atentar ao fato que um HTML bem escrito todo valor é delimitado por aspas.

O HTML têm uma série de atributos e valores definidos como enumerados ou livre em sua especificação.

Um bom exemplo de elemento e atributo que possui valores pré determinado é o elemento input. O elemento input é utilizado para definir elementos de formulário, para entrada de dados de usuário, e seu atributo type pode ter vários valores, mas somente os enumerados, exemplos:
  • <input type="checkbox" />
  • <input type="text" />
  • <input type="radio" />
  • <input type="submit" />
O próprio elemento input tem um atributo que pode ser livre que é o value, no código 2 abaixo está definido o texto inicial do controle:


<input type="text" value="texto inicial" />

Código 2 - Definindo um valor livre do atributo value do elemento input

Hierarquia de elementos


Voltando à hierarquia, os elementos podem ser pai, filho e irmão de outros elementos. Veja por exemplo o código 3, que mostra um pedaço de um HTML.


<body>

<span>TEXTO</span>

<div>TEXTO</div>

</body>


Código 3 - Exemplo de hierarquia

Então podemos dizer que o elemento span é filho do elemento body, pois o elemento span fica entre o início(<body>) e o fechamento(</body>) do elemento body. O elemento div também é filho de body. O elemento body é pai do elemento span e do elemento div. E o elemento span e div são irmãos.

Dentro dos elementos podem então haver textos, outros elementos ou nada. Os textos, únicos não falado até aqui, são textos livres escrito respeitando uma codificação especial. Isto é necessário se não um texto que tivesse o caracter menor(<) poderia ser interpretado como o início de um elemento, mesmo quando não fosse. Exemplos: Para escrever no texto o caracter "<" deve-se então usar o "&lt;" Para ver uma lista de vários caracteres de escape acesse este link.

Voltando então a analisar o código 1, veja a imagem 1 que explica cada elemento utilizado:

Imagem 1 - Explicação do HTML do código 1

Caso precise de referências de HTML e dos diferentes elementos, atributos e valores consulte estes links:
http://msdn.microsoft.com/en-us/library/ms533050(vs.85).aspx
http://developer.mozilla.org/en/docs/HTML

Referências
http://www.w3.org/MarkUp/
http://en.wikipedia.org/wiki/HTML

sábado, 26 de julho de 2008

Analisando o HTTP(Firefox)

Outro ponto que não podia deixar de ser citado são as opções de add-ons do Firefox. Add-ons são extensões feitas para o Firefox que podem ser as mais diversas.

Para analisar também as requisição e resposta HTTP e HTTPs existe o Tamper Data. Ele permite a análise e modificação do cabeçalho e parâmetros de post. Além disso é possível rastrear e ver o tempo das requisições e respostas.

Uma segunda opção, menos específica em relação a HTTP, mas uma ferramenta indispensável para o desenvolvedor WEB é o Firebug. Além da sua página de add-on é possível navegar em sua página específica para ter acesso a impressões de telas e mais documentações:
https://addons.mozilla.org/pt-BR/firefox/addon/1843

O Firebug é para mim a ferramenta mais completa para analisar as informações de cliente WEB.

sexta-feira, 25 de julho de 2008

Analisando o HTTP(Fiddler)

Muitas vezes não será necessário depurar o HTTP, talvez alguns desenvolvedores experientes nem conheçam como efetivamente é uma mensagem HTTP de requisição ou resposta. Mas acho importante este conhecimento ou saber que existe meios para analisá-las.

Recentemente a Google fez uma análise de requisições feitas ao se logar no Gmail. Nesta análise eles usaram diversos programa como o Httpwatch, WireShark, Fiddler e outros internos. Com esta análise eles otimizaram bastante o desempenho desta funcionalidade! A idéia aqui é mostrar apenas o Fiddler, que é um HTTP Debugging Proxy, ou em português Proxy para depurar HTTP.

O Fiddler é grátis e pode ser baixado na seção baixar arquivos de seu site. Será necessário a instalação do .NET framework 2.0. Como ele é um proxy, pode ser usado por diversos programas clientes, como os navegadores Internet Explorer e o Firefox.

Existe um vídeo introdutório excelente sobre o Fiddler, que pode ser baixado neste endereço:
http://www.fiddlertool.com/fiddler/help/video/FiddlerQuickStart.wmv

Este vídeo explica desde sua instalação até a utilização de diversos de seus recursos. De qualquer forma continuarei abaixo mostrando algumas de suas funcionalidades.

Depois de instalado o Fiddler poderá ser iniciado através no Internet Explorer, veja na imagem 1


Imagem 1 - Abrindo o Fiddler

Ao acionar o Fiddler da maneira acima é feito duas coisas, o programa é aberto e é configurado no Internet Explorer o proxy. E é assim que o fiddler funciona, como ele virou o proxy de nossa aplicação ele recebe todas as requisições e respostas feitas pelo Internet Explorer. Assim ele faz o log de TUDO que é trafegado. Veja a configuração do proxy na imagem 2:

Imagem 2 - Configuração do proxy no Internet Explorer

Agora vamos usar o Fiddler, ao requisitar um endereço, por exemplo este:
http://clienteweb.blogspot.com/2008/07/arquitetura-webhttp-parte-3.html

O Fiddler irá mostrar em seu painel esquerdo(Web Sessions) as diversas requisições/respostas feitas para recuperar os recursos daquela url. Pode não ser apenas uma única requisição/resposta porque um HTML pode ter internamente várias imagens ou hiperlinks para outros HTMLs e cada hiperlink é necessário fazer outras requisições.

Na imagem 3, estamos analisando a primeira requisição:


Imagem 3 - Analisando uma requisição no Fiddler

Veja que no painel da direita superior é possível ver os cabeçalhos da requisição, onde há informações como:
  • Método e recurso requisitado:
    GET /2008/07/arquitetura-webhttp-parte-3.html HTTP/1.1

  • Cultura e localização(Português Brasil):
    Accept-Language: pt-br

  • Navegador e versão:
    User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
No painel da direita inferior é possível ver os cabeçalhos da resposta, onde há informações como:
  • Protocolo e códigos de status, neste caso 200 é ok:
    HTTP/1.1 200 OK

  • Informaçõe do servidor:
    Server: GFE/1.3
Repare que nesta visão o Fiddler faz um tratamento das mensagens para formata-las, mas podemos também ver as mensagem sem nenhum tratamento, da forma como realmente foram trocadas, basta clicar na guia raw, conforme Imagem 4:

Imagem 4 - Analisando toda a requisição

Desta forma vemos que o cabeçalho de resposta e o HTML é separado apenas por caracteres como a quebra de linha.

O Fiddler então é um excelente programa para conhecer as diversas requisições feitas para requisitar um determinado recurso. Vale a pena fazer diversas requisições para ver como funciona requisições HTTPs, redirecionamentos, requisições de arquivos que estão em cache e por aí vai!

Caso queira, veja também a especificação do HTTP 1.1 e analise cabeçalho códigos de resposta. Isto é uma excelente oportunidade de praticar este tanto de teoria.

Referências:
http://www.fiddlertool.com/fiddler/
http://gmailblog.blogspot.com/2008/05/need-for-speed-path-to-faster-loading.html
http://www.w3.org/Protocols/rfc2616/rfc2616.html

quinta-feira, 24 de julho de 2008

Arquitetura WEB(HTTP) - Parte 3


Vamos agora falar sobre o principal protocolo da arquitetura web. O HTTP que também está na imagem 01:

Imagem 01 - Arquitetura Web

Um protocolo é uma convenção ou padrão que controla ou permite a conexão, comunicação e transferência de dados através de dois pontos computacionais. Eles podem ser implementados por hardware ou software ou a combinação dos dois.

Os protocolos em geral implementam as seguintes funcionalidades:

  • detecção da conexão física subjacente ou a existência de um nó;
    handshaking (aperto de mão);

  • negociação de várias características de uma conexão;

  • como iniciar e finalizar uma mensagem;

  • como formatar uma mensagem;

  • o que fazer com mensagens corrompidas ou mal formatadas;

  • como detectar perda inesperada de conexão e o que fazer em seguida;

  • término de sessão ou conexão
HTTP(HyperText Transfer Protocol) é o protocolo Aplicação, do Modelo OSI, utilizado para transferência de dados na rede mundial de computadores, WWW(World Wide Web), veja na Imagem 2.

Imagem 2 - Modelo OSI

Ou seja, o HTTP é um protocolo em cima de outros protocolos, como por exemplo o TCP, isto é possível observar na Imagem 3.


Imagem 3 - Modelo OSI, algumas implementações

O HTTP, atualmente na versão 1.1, é um protocolo sem estado, ou seja, o cliente não fica sempre conectado ao servidor, faz esta conexão a cada requisição de um determinado recurso. Sua comunicação é feita através de requisições e respostas(Request/Response) e é feita através de uma mensagem que é composta de um cabeçalho e corpo.

As mensagens de requisição e de resposta têm informações diferentes. A mensagem HTTP de requisição é feita por um cliente, na maioria dos casos um navegador, que informa dentre outros dados qual o recurso solicitado e qual o método de requisição, os mais comuns são:
  • GET
  • POST
A mensagem HTTP de resposta é a resposta do servidor à requisição em seu cabeçalho está disponível o código de status e em seu corpo o texto do recurso solicitado, se for um HTML, estará o próprio HTML.

Existe também uma implementação segura, critptografada, do HTTP, chamada HTTPs. O HTTPs é implementado sobre uma camada SSL(Secure Sockets Layer) ou TLS (Transport Layer Security). Com ele é possível trafegar informações seguras entre cliente e servidor, garantindo assim que as mensagens que forem interceptadas sejam praticamente impossíveis de serem descriptografadas sem as chaves.

Para saber quando estamos em um site seguro, que implementa HTTPs, basta se atentar ao navegador. A url deverá estar iniciada com "https://" e um cadeado é comumente exibido, veja isto no internet explorer, na imagem 4 e no firefox na imagem 5.


Imagem 4 - Conexão segura no Internet Explorer


Imagem 5 - Conexão segura no Firefox

Outros personagens muitas vezes encontrados na arquitetura WEB é o Firewall e o Proxy. O Firewall é o responsável por barras requisições não desejáveis a um computador. Proxy é um tipo de servidor que atua nas requisições dos seus clientes executando os pedidos de conexão a outros servidores.

Referências:
http://en.wikipedia.org/wiki/OSI_model
http://www.novell.com/info/primer/prim05.html

quinta-feira, 17 de julho de 2008

Criando um novo site web(Arquivos do Sistema)

Existem diversas maneiras de criar um site web e publicar nossas páginas, mas aqui vamos mostrar uma forma de fazê-lo através do VWD(Visual Web Developer). Abra o VWD e vá no menu File -> New Web Site, conforme imagem 1

Imagem 1 - Criando um novo Web Site no VWD

Clicando neste menu poderemos configurar o novo site web, conforme Imagem 2.


Imagem 2 - Configurando o novo site web

Desta forma podemos selecionar o local do site(File System, HTTP ou FTP), clicando em browser podemos ver uma janela para configuração deste, veja ma Imagem 3.


Imagem 3 - Configurando o local do novo web site

Para simplificar este exemplo iremos criar este site no local File System, no diretório C:\ClienteWeb\CriandoNovoSite. Confirme esta janela e a próxima que pergunta se deseja criar o diretório(mostrada na Imagem 4).

Imagem 4 - Confirmando a criação do novo diretório

Voltando a tela de criação do novo site web, selecione a linguagem de sua preferência, no meu caso C#, e clique em OK.

O site será criado e podemos gerenciar os arquivos através do solution explorer. Exclua o arquivo Default.aspx e crie um arquivo chamado OiSiteWeb.htm. Para este último, clique com o botão direito no site WEB.


Imagem 5 - Adicionando novo item ao site WEB

Configure a nova página HTML conforme Imagem 6.


Imagem 6 - Configurando a nova página HTML

A página será criada e adicionada ao Solution Explorer, edite seu código para que fique igual ao Código 1.




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Oi Site Web</title>

</head>

<body>

<h1>Oi Site Web</h1>

</body>

</html>

Código 1 - HTML do novo arquivo

Defina a nova página criada como a página inicial do site web, conforme Imagem 7.


Imagem 7 - Definindo a página inicial

Execute a aplicação, neste caso o site web, para ver o resultado, veja na Imagem 8


Imagem 8 - Visualizando o site web

Ao fazer isto repare que o VWD criou um servidor web chamado ASP.NET Development Server, este servidor WEB é um servidor somente para desenvolvimento de aplicações WEB feitas no VWD. Ele facilita nossa vida permitindo que sites web possam ser criados sem necessitar toda configuração no IIS, e depois este site pode ser publicado para um servidor de produção como é o caso do IIS. As informações de qual porta ele utiliza e se este servidor está em execução é vista na área de notificação na barra de tarefas, veja na Imagem 9.


Imagem 9 - ASP.NET Development Server no System Tray.

É importante reparar que para acessar este deveremos colocar no endereço o nome do servidor e da porta, já que neste caso não estamos usando a porta padrão(80). Veja na Imagem 10.


Imagem 10 - Acessando o site web criado

No meu caso o servidor WEB foi criado para responder na porta 1491, se atente pois este número varia, para conhecer o número da porta utilizado, clique duas vezes no ASP.NET Development Server no System Tray e veja a janela aberta conforme Imagem 11.


Imagem 11 - Informações do ASP.NET Development Server

Agora podemos adicionar várias páginas, imagens, javascript, css e outros tipos de arquivos a este servidor WEB.

segunda-feira, 14 de julho de 2008

Arquitetura WEB(Servidor WEB) - Parte 2

Sobre a arquitetura WEB, esquematizada na Imagem 1, já escrevemos sobre o Navegador e a URL, também já fizemos um exemplo básico do HTML. Agora vamos conhecer o servidor WEB.


Imagem 1 - Arquitetura Web

O servidor WEB é o responsável por aceitar requisições HTTP(Request) de navegadores e enviar respostas HTTP(Response), que contêm internamente o recurso solicitado, podendo ser páginas HTML, imagens e outros tipos de recursos.

Existem diversos servidores Web, os mais populares hoje em dia são o Apache(Apache HTTP Server) e o IIS(Microsoft Internet Information Services), a Imagem 2 mostra uma lista de servidores com maior quantidade de sites números baseados no mês de junho de 2008, pesquisa esta feita pela Netcraft.

Imagem 2 - Números de sites por servidor WEB.
Fonte Netcraft.

Apesar da diversidade de servidores WEB, muitos deles implementam algumas funcionalidades em comum, como por exemplo:
  • Comunicação através de HTTP
  • Comunicação através de HTTPs(Trafega informações criptografadas, de forma segura)
  • Log das informações de requisições e respostas
  • Autenticação e opcionalmente autorização para ter acesso a determinado recurso
  • Resposta de documentos estáticos(HTML, JPG, GIF, PDF e outros)
  • Resposta de documentos dinâmicos(ASP.NET, CGI, JSP ou outros)
  • Compressão de conteúdos(GZIP)
O Microsoft Internet Information Services 7 também implementa o protocolo FTP(Filte Transfer Protocol), que é um protocolo em cima do TCP/IP usado para transferência de arquivos.

O IIS atualmente na versão 7.0 tem as seguintes versões por versão do Windows:
  • IIS 1.0, Windows NT 3.51
  • IIS 2.0, Windows NT 4.0
  • IIS 3.0, Windows NT 4.0 Service Pack 3
  • IIS 4.0, Windows NT 4.0 Option Pack
  • IIS 5.0, Windows 2000*
  • IIS 5.1, Windows XP Professional*
  • IIS 6.0, Windows Server 2003 e Windows XP* Professional x64 Edition**
  • IIS 7.0, Windows Vista e Windows Server 2008**
* - Suportam o ASP.NET, limite de 10 conexões simultaneas
(Versão aconselhada para utilização em desenvolvimento)
** - Suportam o ASP.NET
(Versão aconselhada para utilização em produção)

Referências:
http://en.wikipedia.org/wiki/Web_server
http://technet.microsoft.com/en-us/library/cc268242(TechNet.10).aspx
http://www.iis.net/
http://blogs.msdn.com/david.wang/archive/2006/04/12/HOWTO-Maximize-the-Number-of-Concurrent-Connections-to-IIS6.aspx

domingo, 13 de julho de 2008

Oi mundo HTML

Este exemplo é somente um Oi mundo HTML, se você conhece ou entende HTML não te acrescentará muita coisa, mas se você nunca escreveu um HTML ou têm dúvidas de seu funcionamento, irá mostrar como é simples entender sua idéia.

Para começar abra algum editor de arquivo texto, pode ser o notepad, alguma versão do Microsoft Visual Studio, como o que estou nesta prática o VWD(Visual Web developer 2008 Express Edition), caso queira ver mais informações sobre o VWD veja este post.

Crie um novo arquivo HTML e salve num diretório, como por exemplo c:\ClienteWeb\OiMundoHTML\OiMundo.htm. As imagens abaixo mostram como isto é feito passo a passo com o VWD:

Imagem 1 - Criando um novo arquivoImagem 2 - Definindo o tipo do novo arquivo como HTML


Imagem 3 - Salvando o arquivo

Imagem 4 - Salvando o arquivo no diretório definido

Por padrão o VWD adiona a declaração de tipo de documento, que é muito importante, pois o HTML tem várias versões e ele quem define qual versão estamos escrevendo, mas para simplificar nossa prática, iremos retirá-lo e deixar o HTML conforme o código 1:
<html>

<head>

<title>ClienteWeb - Oi Mundo</title>

</head>

<body>

<div>
Linha 1
Linha 2
</div>

</body>

</html>

Código 1 - HTML do Oi Mundo

Salve novamente o arquivo e abra nos navegadores, como no passo a passo abaixo onde estamos abrindo o arquivo no FireFox 3:

Imagem 5 - Abrindo o arquivo no Firefox 3

Imagem 6 - Selecionando o Arquivo

Repare que no HTML então definimos informações sobre o documento, como o título e fica visível no título do navegador, conforme imagem 7:

Imagem 7 - Titulo do arquivo criado

O HTML também tem informações sobre seu conteúdo, conforme Imagem 8:

Imagem 8 - Visualizando o arquivo criado

Ainda na imagem 8, repare que no HTML colocamos uma quebra de linha no arquivo criado e esta não foi apresentada no navegador, isto porque o HTML é linguagem de elementos(tags) e existe um para representar a quebra de linha, o elemento <br />. Faça a alteração conforme código 2 e veja o resultado, conforme imagem 9.
<html>

<head>

<title>ClienteWeb - Oi Mundo</title>

</head>

<body>

<div>
Linha 1<br />
Linha 2
</div>

</body>

</html>
Código 2 - Adicionando o elemento de quebra de linha <br />

Imagem 9 - HTML após a alteração de quebra de linha

Assim pudemos ver que o HTML é uma linguagem de elementos, onde têm informações sobre o próprio documento e seu conteúdo. O elemento head possui informações sobre o documento, como por exemplo o título e o conteúdo do HTML fica dentro do elemento body. Existem elementos como o <div> e o <br /> que são utilizados para organizar o conteúdo do HTML. Para conhecer os elementos existem alguns sites úteis como o :
MSDN - Microsoft Develper Network
MDC - Mozilla Developer Center

O próprio VWD possui um editor visual de HTML, que é interessante utilizá-lo para aumentar nossa produtividade. Ainda assim é extremamente importante para um bom desenvolvedor WEB entender como funciona a sintaxe HTML, pois mais tarde, quando estivermos fazendo um uso avançado de funcionalidades WEB, como o AJAX, pode ser necessário escrever um simples HTML.

Referências:
http://www.w3.org/QA/Tips/Doctype
http://www.w3.org/QA/2002/04/valid-dtd-list.html
http://msdn.microsoft.com/en-us/library/ms535240(VS.85).aspx

sábado, 12 de julho de 2008

Arquitetura WEB(Navegador, HTML, URL) - Parte 1

A idéia aqui é explicarmos a arquitetura WEB, pois para se desenvolver aplicações WEB é muito importante conhecer quais conceitos são envolvidos.

A arquitetura web pode ser esquematizada conforme a imagem 01:


Imagem 01 - Arquitetura Web

Neste modelo podemos ver os seguintes conceitos:
  • Navegador
  • URL
  • HTTP(Request/Response)
  • Servidor WEB
  • HTML
O Navegador é o programa onde os usuários da web navegam na internet, requisitando URLs(Uniform Resource Locator) e o responsável por interpretar o conteúdo enviado pelo servidor WEB e montar um resultado gráfico. Esta comunicação entre o navegador e o servidor WEB se dá através do protocolo HTTP, principalmente. Os dois navegadores mais utilizados hoje em dia são o Internet Explorer e o Firefox.

A imagem 02, mostra uma pesquisa feita pela Net Applications sobre a utilização dos navegadores pelos usuários. A imagem foi capturada com os valores baseados em 12 de julho de 2008, mas o link utilizado é http://marketshare.hitslink.com/report.aspx?qprid=0#.


Imagem 02 - Uso de navegadores

URL(Uniform Resource Locator)


A url define o endereço de um recurso na rede, esta é definida conforme o seguinte modelo:
protocolo://servidor[:porta][caminho]

Onde:
  • protocolo define o protoco9lo a ser utilizado, por exemplo HTTP
  • servidor é o endereço/nome do servidor
  • porta é opcional, no caso do HTTP se omitido é assumido a porta 80
  • caminho define algum recurso em específico naquele servidor
Alguns exemplos de URLs por protocolo/esquema:

HTTP
htttp://servidor:porta/caminho?querystring
http://clienteweb.blogspot.com:80
O padrão http é a porta 80, não é necessário digitá-la

http://aplicacoesweb.blogspot.com

FTP
ftp://ftp.site.com/caminho

E-mail
mailto:joao_da_silva@hotmail.com


As URLs ainda podem ser absolutas. Ou seja, tem a informação completa para se acessar um recurso, ou seja, indenpendente da onde o usuário esteja navegando, poderá acessar aquele recurso, desde que tenha acesso, exemplo de url absoluta:
http://clienteweb.blogspot.com/2008/06/introduo.html

As URLs também podem ser relativas, desta forma sua informação é relativa a um determinado local conhecido, estando neste endereço, http://clienteweb.blogspot.com/, Poderíamos acessar o mesmo recurso acima definindo o seguinte endereço relativo:
./2008/06/introduo.html

HTML(HyperText Markup Language)


Um dos formatos de documento entendido pelo navegador e enviado pelo servidor WEB é o HTML. O HTML é uma linguagem de marcação de hipertexto, onde há definido principalmente informações sobre seu conteúdo e algumas outras informações sobre sua formatação. Ela é muito parecida com o XML e existe até o caso do XHTML que é uma especialização de XML. Atualmente estão trabalhando em sua versão 5.0.

Um exemplo básico de sua estrutura é :

<html>
<head>
<title> Titulo do documento </title>
</head>
<body>

conteúdo do documento

</body>
</html>


Referências:
http://marketshare.hitslink.com/report.aspx?qprid=0#
http://www.w3.org/Addressing/URL/url-spec.html
http://www.w3.org/Addressing/URL/4_1_HTTP.html
http://www.w3.org/TR/REC-html40/
http://www.w3.org/MarkUp/Guide/