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