Considerações de Design da Aplicação
Existem certos aspectos que tornam uma aplicação Web uniGUI diferente de uma aplicação desktop. Uma aplicação desktop é projetada para rodar como uma única instância na área de trabalho e pode usar todos os recursos do sistema disponíveis. Na maioria das vezes, isso resulta em um design de aplicação ruim, pois os desenvolvedores não veem necessidade de otimizar o uso de recursos. Com os avanços na tecnologia de computadores, novos sistemas têm mais recursos a cada novo modelo. Há alguns anos, PCs com 128 MB de RAM eram considerados de entrada, enquanto hoje esse limite foi elevado para pelo menos 2 GB de memória. Ter tantos recursos pode levar os desenvolvedores a adotar práticas ineficientes ao projetar aplicações e desperdiçar recursos do sistema. Diferente de uma aplicação desktop onde uma única sessão de usuário roda dentro de um único processo, uma aplicação Web hospeda várias sessões de usuário que rodam na mesma instância de processo. Nesse caso, o gerenciamento de recursos se torna uma tarefa vital que requer análise cuidadosa.
Outra diferença está relacionada a recursos compartilhados. Em uma aplicação desktop, todos os recursos são dedicados a um usuário, enquanto em uma aplicação Web uniGUI, os recursos são compartilhados entre várias sessões de usuário. Qualquer má gestão de recursos pode afetar a saúde do servidor da aplicação Web, o que pode levar à instabilidade do servidor. Um exemplo de má gestão de recursos são vazamentos de memória. Em um app desktop, vazamentos de memória podem ser um problema sério se ele rodar por períodos prolongados. Como apps desktop são tipicamente usados por algumas horas por dia, principalmente durante o horário de trabalho, esses vazamentos de memória não costumam causar problemas graves. Porém, em uma aplicação Web, vazamentos de memória podem afetar seriamente a estabilidade do servidor em curto espaço de tempo. Se uma aplicação desktop falhar, o usuário afetado pode reiniciá-la e continuar seu trabalho. Se uma aplicação Web falhar, todos os usuários conectados serão afetados.
Servidores de aplicações Web são projetados para trabalhar 24/7, então qualquer problema relacionado ao gerenciamento de recursos pode se acumular ao longo do tempo e fazer o servidor ficar sem recursos. Tais condições podem levar à instabilidade do servidor de aplicação e, eventualmente, a uma queda do servidor. Ao discutir recursos compartilhados, vale mencionar problemas de corrupção de memória. Em uma aplicação desktop, problemas de corrupção de memória podem permanecer sem detecção por muito tempo porque tais corrupções podem não produzir efeitos colaterais perigosos. Em uma aplicação Web, a memória é alocada e liberada em uma taxa muito alta em múltiplas threads, e qualquer corrupção de memória pode levar a severa instabilidade do servidor e comportamento errático da aplicação.
Finalmente, uma aplicação Web uniGUI é fortemente multithreaded, e múltiplas sessões são executadas em threads diferentes. Como resultado, os componentes usados no uniGUI devem estar cientes de multithreading. Componentes que não são multithread-aware causarão problemas sérios que levarão à instabilidade do servidor Web.