Artigo da .net Magazine 39 - Desenvolvendo um Cliente FTP

Artigo publicado na .net Magazine 39.

Clique aqui para ler esse artigo em PDF.

Clique aqui para ler todos os artigos desta edição

Conectividade

Desenvolvendo um Cliente FTP

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·Protocolo de Transferência de Arquivos (FTP);

·Arquitetura em camadas;

·Aplicação FTP client.

Visual Studio 2005, Visual Basic .NET, Windows Forms e .NET Framework 2.0

O proprietário de uma pequena loja de discos especializada em Rock Progressivo e Beatles, amigo de muitos anos, procurou-me querendo saber se poderia ter um site com venda de CDs, camisetas e outros produtos, fórum de discussões e agendas de eventos.

De imediato pensei o quão eloquente seria concorrer com os grandes sites de comércio eletrônico. Depois percebi que estaríamos lidando com um público especializado composto de colecionadores e aficionados, ou seja, uma tribo fiel. O meu “cliente”, o proprietário da lojinha, colocou ainda duas premissas que deveriam ser consideradas no projeto do site:

·A administração do site deverá ser de operação muito simples e a mais automática possível, sabendo-se que o usuário do sistema será um especialista em “raridades” e não em tecnologia;

·“Não tenho como te pagar em dinheiro e nem ao menos posso gastar muito para manter o site funcionando”. Essa premissa deverá nortear muitas das decisões a serem adotadas durante o desenvolvimento.

A lojinha de discos já utilizava um antigo sistema desktop para controlar o caixa e o estoque dos produtos comercializados. O projeto do site deveria prever a integração com o sistema legado (reescrever o sistema, oneraria o custo do projeto de forma proibitiva). Um dos problemas a enfrentar seria a atualização periódica do catálogo de produtos a venda.

Optou-se então por desenvolver uma aplicação Windows para extrair os dados do sistema legado, gerar e transferir arquivos via FTP para o servidor onde o site estivesse hospedado. Um Web Service poderia ser uma alternativa mais elegante e moderna para essa transferência de dados, mas, muitos estudos apontam para uma significativa perda de performance dos Web Services quando lidamos com grandes volumes de dados.

Projetar sistemas de computador é, na maior parte do tempo, decidir qual a solução mais adequada para resolver determinado problema ou necessidade que o sistema em construção deverá satisfazer. A solução deverá estar absolutamente alinhada aos requisitos do sistema. O problema é que muitas vezes subestimamos os requisitos não funcionais, que envolvem elementos como performance, custo e facilidade de operação.

Neste artigo discutiremos a criação de um software cliente de um servidor FTP (File Transfer Protocolo), onde utilizaremos algumas das muitas facilidades disponíveis no .NET 2.0. Nosso pequeno projeto de software estará organizado em duas camadas: uma biblioteca de classe com as funcionalidades do cliente FTP, representando a camada de dados e um sistema aplicativo para teste da biblioteca, responsável pela interface com o usuário, representando a camada de apresentação.

O Protocolo de Transferência de Arquivos (FTP)

FTP é o acrônimo de File Transfer Protocol (Protocolo de Transferência de Arquivos), um protocolo de comunicação especificado para atuar em ambientes distribuídos (arquitetura cliente/servidor), objetivando o compartilhamento de arquivos de dados entre usuários de ambientes híbridos.

O mecanismo do FTP teve sua primeira proposta impetrada em 1971, passou por várias melhorias e correções ao longo dos anos, até a publicação da versão atual em outubro/1985 na RFC959 (veja link nas referências bibliográficas).

O protocolo tem como principais objetivos:

1.A promoção do compartilhamento de arquivos;

2.O encorajamento indireta e implicitamente à utilização de computadores remotos;

3.A proteção dos usuários das variações entre os sistemas de armazenamento de arquivos;

4.A transferência confiável e eficiente de dados.

A Figura 1 apresenta o modelo de transações do FTP.

 

 

Figura 1. Modelo de transações do FTP

O cliente inicializa uma sessão com o servidor FTP solicitando uma conexão TCP na porta 21, a porta usualmente atribuída aos servidores FTP. Essa comunicação é conhecida como “Canal de Controle de Conexão”.

O interpretador do protocolo do cliente envia comandos FTP padrões ao servidor e aguarda o retorno de respostas, compostas de um código e um texto explicativo. O código é direcionado para uso por sistema de computador, enquanto que o texto está direcionado ao usuário final que pode estar utilizando o protocolo diretamente através de um software emulador de terminal (Telnet, por exemplo).

Dessa forma, podemos observar que o controle de transações do FTP está baseado na troca de comandos e respostas entre o lado cliente e o servidor remoto. Os comandos FTP são geralmente compostos de quatro caracteres, um espaço em branco, um argumento opcional e um código de fim de linha (CRLF).

A transferência de dados entre a estação cliente e o servidor FTP, necessário em vários procedimentos, como, por exemplo, o upload e download de arquivos, requerem a alocação de uma segunda porta de comunicação que será utilizada na troca de dados. Essa comunicação é conhecida como “Canal de Dados”.

A Tabela 1 apresenta a relação dos principais comandos FTP especificados na RFC959. Alguns fabricantes de servidores FTP implementam um conjunto adicional de comandos, agregando novas funcionalidades que, apesar de vantajosas, não são padrões e, portanto, podem não ser tratadas por todos os utilitários.

 

Comando FTP

Descrição

USER

Identificação do código de usuário para logon no servidor.

PASS

Senha de acesso do usuário para logon no servidor. Deve ser usado logo após o comando USER quando o código de usuário requerer.

QUIT

Encerra a sessão FTP em uso, desconectando o usuário.

SYST

Retorna o tipo do sistema operacional do servidor remoto.

HELP

Ajuda a respeito dos comandos FTP do servidor remoto.

NOOP

Faz com que o servidor responda com a mensagem 200 (Command okay). Esse comando não afeta nenhum parâmetro ou comando anterior. É utilizado apenas para evitar que a sessão seja encerrada pelo servidor remoto por expiração de tempo sem comunicação (time out).

PWD

Retorna o nome do diretório corrente do servidor remoto.

CWD

Troca o diretório corrente do servidor remoto.

RMD

Remove um diretório ou subdiretório do servidor remoto.

MKD

Cria um diretório ou subdiretório no servidor remoto.

DELE

Exclui um arquivo do servidor remoto.

TYPE

Especifica o tipo de dado que deverá ser utilizado em uma sessão de transferência e armazenamento de dados.

PASV

Configura o FTP passivo, requerendo que o processo de transferência de dados do servidor (server DTP) aguarde uma conexão de dados a partir de uma porta TCP específica. O servidor responderá ao comando informando o IP e a porta da conexão de dados.

RETR

Faz com que o servidor envie para a estação cliente a cópia de um arquivo, especificado no argumento do comando, através de uma conexão de dados associada (download).

STOR

Faz com que o servidor aceite a recepção de dados a partir de uma conexão de dados associada e armazenando-os em um arquivo especificado no argumento do comando (upload"

[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados