Desenvolvendo 
para desktop ou para Web ?
Recebo muito emails sobre a questão : Qual a 
melhor linguagem para desenvolver uma aplicação ? . 
A princípio pode até parecer uma pergunta fácil 
de responder , afinal , todos nós temos a nossa linguagem preferida , e, se você 
me faz esta pergunta eu naturalmente vou responder de acordo com minha 
preferência. 
A resposta fica mais difícil de ser dada se 
considerarmos a pergunta sob o ponto de vista estritamente técnico ; sob este 
aspecto as preferências devem ser postas de lado e muitos fatores devem ser 
levados em conta para que se chegue a uma resposta correta , correta não , eu 
diria a uma resposta mais adequada.
Vou elencar uma relação de fatores que podem 
nos ajudar a começar a pensar sobre o assunto :
  - Afinal você quer desenvolver para web ou 
  para desktop ? 
 
  - Sua aplicação é para uma grande corporação 
  ou para um pequena empresa ?
 
  - Qual a complexidade de sua aplicação ?
 
  - Sua aplicação vai atuar em ambiente crítico 
  ?
 
  - Sua aplicação vai rodar em qual ambiente ? 
  (monousuário , Cliente/Servidor, ambiente distribuído,etc.)
 
Quando você vai começar a desenvolver uma nova 
aplicação , você precisa decidir qual tecnologia irá usar. Existe uma grande 
variedade de linguagens que você pode usar ,  vários gerenciadores de banco 
de dados que você pode utilizar , e você precisa decidir também qual o estilo 
que vai usar na interface com o usuário.(se é que vai existir uma interface com 
o usuário).
A decisão sobre a linguagem de programação a 
ser usada deve ser tomada de acordo com as linguagens que você conhece(acho 
difícil você usar uma linguagem que não conhece) e dentre estas linguagens 
aquela que lhe dará o melhor desempenho para realizar a tarefa que sua aplicação 
se propõe. Uma escolha errada pode tornar mais difícil de alcançar o seu 
objetivo. Você pode escolher o C++ para desenvolver uma aplicação comercial de 
controle de estoques mas com certeza usando o Visual Basic a tarefa seria mais 
fácil de ser realizada. Desenvolver uma sistema operacional usando o Visual 
Basic não é impossível mas com certeza o C++ daria conta do recado com mais 
desenvoltura.
A questão do banco de dados a usar também é 
espinhosa ; as vezes você não  tem escolha , tem que usar o database que o 
seu cliente tem a disposição. Você precisa levar em conta a quantidade de dados 
e o tipo de dados que sua aplicação vai tratar e armazenar. A integração do 
banco de dados com outros Engines também é muito importante , pois se o banco de 
dados usado for totalmente proprietário você poderá ficar 'ilhado' e a merce de 
produtos de terceiros muito específicos e caríssimos.
Para escolher a interface com o usuário você 
deve pesar diferentes fatores antes de tomar a decisão final. Vejamos alguns 
cenários :
Tipos de aplicações :
  - Aplicação para E-commerce , 
  Portal
 
  - Site para uma empresa na 
  internet
 
  - Usuários remotos com acesso 
  a internet
 
  - Aplicação distribuída entre 
  usuários remotos
 
- Interface indicada : 
Web
  - Aplicações gráficas
 
  - Processadores de textos
 
  - Planilhas eletrônicas
 
  - Jogos
 
  - Aplicação Cliente/Servidor 
  (duas camadas)
 
  - Aplicações com integração 
  entre vários tipos hardwares (cameras, scanners, etc.)
 
- interface indicada : 
desktop
Assim como você não vai usar uma interface web 
para desenvolver a aplicação de controle de estoques da padaria do seu Manoel , 
também não vai usar uma interface desktop para criar um portal para uma grande 
instituição financeira na web.
Vantagens e Desvantagens
Vejamos quais as vantagens e desvantagens dos 
dois ambientes para melhor embasar nossa decisão.
Web : Vantagens
  - Interface HTML reconhecida por uma grande 
  gama de usuários já acostumados com o funcionamento dos navegadores.
 
  - Desenvolvimento , manutenção e atualização 
  centralizada da aplicação. Você não precisa sair instalando sua aplicação em 
  diversos equipamentos diferentes. Basta colocá-lo no servidor para que os 
  usuários a acessem.(No caso do VB.NET você teria que distribuir o .NET 
  Framework para instalação nas máquinas dos clientes.)
 
  - A exportação de dados entre usuários remotos 
  usando o protocolo HTTP é muito mais fácil do que usar outro protocolo.
 
  - Escalabilidade no processamento. Se houver 
  necessidade de aumentar o poder de processamento , basta fazer isto no 
  servidor.
 
Web : Desvantagens
  - A interface HTML pode ser um problema pois 
  não há uma padronização entre os diversos navegadores e sua aplicação poderia 
  ser exibida de uma maneira diferente dependendo do navegador
 
  - A entrada de uma grande massa de dados é 
  prejudicada na interface HTML pois não existe uma maneira padrão de criar 
  máscaras de entrada de dados.
 
  - A inteface HTML não é rica em controles 
  gráficos e peca no quesito posicionamento. O visual da sua aplicação pode não 
  ficar tão elegante como você imagina.
 
  - A integração com outros componentes não é 
  tão fácil com HTML.
 
Desktop : Vantagens
  - Uma rica variedade de controles para 
  interface com o usuário
 
  - Um total controle sobre o posicionamento dos 
  controles na aplicação
 
  - O desempenho para uma interface gráfica é 
  mais rápido em uma aplicação desktop que usa o processamento local.
 
  - Uma interface com integração para com vários 
  hardwares é muito mais fácil.
 
Desktop : desvantagens
  - Uma interface gráfica muito carregada deixa 
  a aplicação mais pesada
 
  - A integração com usuários
  remotos é mais sofrida
 
  - A distribuição da aplicação é critica. Você 
  tem que instalar sua aplicação em diferentes tipos de máquinas , com 
  diferentes tipos de sistemas , drivers e periféricos.
 
  - A manutenção e atualização de sua aplicação 
  requer um esforço extra.
 
Deu para chegar a alguma conclusão ? Não !!! 
então eu vou relacionar alguns fatores que podem ajudar sua decisão. 
  - Seus clientes estão 
  familiarizados e usam com naturalidade um Web Browser .(Netscape , IExplorer) 
  ?
 
  - Seus clientes estão 
  distribuídos remotamente na web ?
 
  - Sua aplicação é do tipo : 
  B2B - Business to Business ?
 
  - A quantidade de dados a 
  ser informada é pequena ?
 
  - A quantidade de dados a 
  exibir é pequena ?
 
  - A quantidade de campos a 
  exibir na tela é grande ?
 
  - A interface gráfica da 
  aplicação é pesada ?
 
  - Sua aplicação vai ser 
  usada somente um  local (departamento , estabelecimento,etc.) ?
 
  - Sua aplicação vai ser 
  atualizada com frequência ?
 
  - Você tem mão de obra para 
  o desenvolvimento web ?
 
  - O desempenho da aplicação 
  é uma questão secundária ?
 
  - Seus clientes irão 
  acessar sua aplicação de lugares diferentes ?
 
  - O processamento envolve 
  uma grande quantidade de dados ?
 
  - Como sua aplicação deverá 
  ser atualizada ? Distribuição de CD ou no servidor ?
 
  - Você precisa usar muitos 
  controles gráficos para criar a interface com o usuário ?
 
Creio que se responder com sinceridade estas 
questões a resposta já deverá estar na ponta da língua.
Afinal qual é o modelo de programação para Web 
? Na verdade o termo é usado para descrever como você pode projetar e 
desenvolver um programa que usa páginas Web em um Navegador . Geralmente você 
usa HTML. Acredite , embora a internet esteja em um estágio avançado de 
utilização e desenvolvimento existem poucas ferramentas para o desenvolvimento 
Web. Dentre elas vou citar a ASP.NET que é uma versão muito melhorada da ASP.(A 
ASP.NET trouxe muitos controles para formulários que são fáceis de usar e 
configurar.)
Ao desenvolver para web você deve ter em mente 
a diferença que existe em desenvolver para o desktop. Algumas diferenças básicas 
são :
  - Os aplicativos para Web dependem dos 
  recursos do Navegador usado para visualizar a aplicação. Como eles possuem 
  recursos diferentes , você não pode prever como sua aplicação vai se 
  comportar.
 
  - A quantidade de código no servidor é maior 
  em aplicações web pois a visualização vem do navegador mas os demais recursos 
  estão no servidor.
 
  - Uma aplicação web deve levar em conta a 
  instabilidade da WEB. O protocolo TCP/IP apenas manda o pacote se ele não 
  chegar ele manda novamente , se não chegar o cliente tem que pedir novamente.
  
 
  - Criar páginas dinâmicas e formulários para 
  entrada de dados é mais trabalhoso que em aplicações desktop.
 
Descobriu o seu nicho de mercado ? Afinal você 
vai desenvolver para web ou para desktop ?
Seja qual for sua escolha você tem duas 
ferramentas poderosas a sua disposição :  
Web ->  ASP.NET      Desktop ->  VB.NET.
Até mais ...

José Carlos Macoratti