Web Analytics
We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Revista do Linux
Revista Do Linux  
EDIÇÃO DO MÊS
  Atualidades
  Beowulf
  CAPA
  Corporativo
  Divirta-se
  Entrevista
  Estudo de Caso
  Interfaces Gráficas
  Mercado
  Programação
  Segurança
  Servidores
  WEB

Nos Correios também
A implementação do protocolo em Linux é uma base sólida para desenvolvimentos posteriores em Unix/Posix.

Nossa empresa, Equação Informática, é especializada em endereçamento - produzimos um Guia Postal Eletrônico e prestamos serviços de Auditoria de Endereços em cadastros já montados. No início de 1999 publicamos um documento especificando o acesso ao Guia Postal Brasileiro (GPB) na forma de um serviço de rede, batizado como Protocolo de Endereçamento Postal Brasileiro (PEP/Br). Suas principais características são mostradas no próximo parágrafo. A especificação completa pode ser consultada em www.equacao.com.br.

Um cliente cria um canal de comunicação com o servidor, que gerencia os arquivos do GPB. Cada comando enviado gera uma resposta, que pode ter uma ou mais linhas. O servidor é responsável por analisar o comando e executá-lo, acessando o GPB quando necessário. Cada linha da resposta é composta de uma porção numérica de três dígitos, seguida do texto correspondente. O servidor deve controlar vários clientes simultaneamente, e cada cliente é estanque, não interferindo nas atividades dos outros clientes.

Após publicar a especificação, iniciamos o trabalho de implementação do servidor do protocolo. TCP/IP foi o canal de transporte escolhido, por sua popularidade. A primeira plataforma implementada foi Windows, com Visual Studio 6, C++ e MFC. Em seguida, partimos para Linux, usando GNU C.

Decidimos a implementação nestas duas plataformas pelas seguintes razões: o ambiente Windows é usado na maioria das empresas no País e o servidor pode ser instalado em qualquer uma das máquinas da rede, oferecendo o serviço para as outras máquinas Linux, o que tem se mostrado uma alternativa interessante quanto a estabilidade, confiabilidade e custo/benefício.

Embora tivéssemos mais de dez anos de experiência em programação C/C++, os ambientes de desenvolvimento eram novidade para nós (como usuários dos compiladores Borland, quase nunca usamos Visual C++, e no Linux precisávamos de algo para sair do estágio de curiosidade em nossa empresa). A oportunidade era excelente para nos lançarmos nestes novos caminhos. A implementação do protocolo em Linux deixaria uma base sólida para desenvolvimentos posteriores em Unix/Posix.

O primeiro passo para ambas as plataformas foi procurar exemplos de como codificar um programa servidor usando sockets TCP/IP. Encontramos o exemplo Windows no CD da Microsoft Developer's Network (MSDN). Para Linux, os fontes de um servidor ftpd foram encontrados numa rápida pesquisa na Internet (Yahoo). A estrutura de arquivos do GPB foi a mesma em ambas as implementações, ou seja, arquivos ASCII com registros de comprimento fixo. O mesmo algoritmo de pesquisa foi usado.

Então começamos a perceber as diferenças entre os ambientes. A leitura seqüencial de registros foi mais rápida em Linux do que em Windows - tão mais rápida que pensamos ter errado em alguma coisa. A diferença foi comprovada por um pequeno programa que lia um arquivo cem vezes, registro a registro. Num Pentium 233 MMX com 96 MB RAM, HD 10 GB e Windows 95, o programa compilado em Borland C++ 5.0 foi executado em 27 segundos, e em Visual C++ 6 em 6 segundos. O mesmo programa, num Pentium 166 com 64 MB RAM, HDs totalizando 10 GB e Conectiva Linux 2.0.36, foi executado em 4 segundos. Nada mal para uma máquina com um terço a menos de capacidade computacional e memória.

A estrutura geral do código também foi mais simples em Linux. Um servidor TCP/IP em Windows deve manter um socket em estado de espera. Quando uma conexão é requisitada, um novo socket é criado, e um thread é lançado para gerenciar esta conexão. Em Linux, uma única conexão é gerenciada, pois múltiplas instâncias do programa podem ser lançadas pelo daemon inetd.

O ambiente de desenvolvimento é um ponto forte a favor do Windows. O IDE do Visual Studio foi melhor do que qualquer outro que tivemos a oportunidade de pôr as mãos até o momento. Em Linux, acabamos por usar o ambiente gráfico KDE, com uma janela aberta para a execução de MAKE, outra para a execução do programa recém-compilado, e janelas com os editores de texto em cada arquivo fonte aberto. Como o programa envolveu poucos arquivos fonte, e as janelas puderam ser espalhadas por áreas de trabalho diferentes, o trabalho acabou fluindo agradavelmente, embora não com a mesma simplicidade e coerência do Visual Studio.

Ambos os resultados não comprometeram o tamanho total da aplicação (64 KB em Linux, 303 KB em Windows, para aproximadamente 180 MB em dados). O desempenho de ambos os programas ficou dentro do esperado, com tempos de resposta aceitáveis. Como os tempos de resposta eram pequenos demais para uma medição caseira, fizemos a cronometragem da execução do comando de apresentação de todos os logradouros da localidade de São Paulo, SP. Seria algo como selecionar 60.000 registros, construir 60.000 linhas de resposta, empilhá-las e remetê-las pelo socket. Em Linux foram necessários aproximadamente 43 segundos para iniciar a listagem dos logradouros, enquanto, em Windows, 160 segundos foram gastos na mesma tarefa - para nós, reflexo direto da melhor manipulação de arquivos. É importante lembrar que a máquina Linux era menos potente do que a máquina Windows.

As conclusões tiradas desta experiência são as seguintes:

  • É inacreditável a quantidade de documentação disponível para consultas na Internet, tanto para Windows quanto para Linux.
  • A manipulação de arquivos sob Linux é mais rápida do que sob Windows.
  • Linux é a opção a ser seguida para desenvolvimentos de servidores TCP/IP, principalmente se seu servidor deve ser projetado para suportar muitos clientes simultaneamente.
  • Windows oferece os melhores ambientes para desenvolvimento com mais conforto e facilidade de uso.


IMPLEMENTAÇÃO EM LINUX(Pentium 166, 64MB RAM)
Comando Executado Tempo Médio de Resposta(ms)
1 Cliente 2 Clientes 4 Clientes
Iniciar Pesquisa 2,36 3,72 6,00
Valorizar CEP 2,21 3,31 5,72
Valorizar Cidade 2,29 3,26 5,12
Encontrar endereço 12,45 17,76 37,20

Sidney Passos
spassos@ruralsp.com.br

 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
 

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com