Ola um analista aqui da empresa onde eu trabalho disse que deve evitar usar atributos staticos e singletons em aplicações web pois elas atrapalham a performace da aplicação… isto esta certo?
Performace da aplicação
3 Respostas
Como um aplicação web trabalha com varios threads, cada atributo estatico ou singleton teria que ser syncronized para evitar problemas de concorrência entre requests.
Agora imagine 50 usuarios acessando seu site ao mesmo tempo e cada um deles precisando esperar o outro terminar a requisição para poder dar um set na sua classe. Acho que é um bom tempo a considerar, né?
Atributos estáticos ou singletons só poderiam ser usados, sem sincronização, se eles fossem read-only, o que nem sempre é possível.
Você pode ter algo que é estático para a thread (usando ThreadLocal), como é o caso de formatos SimpleDateFormat ou DecimalFormat usados na sua aplicação e que você não quer ficar recriando a toda hora. (SimpleDateFormat, DecimalFormat não são thread-safe, como aprendi a duras penas, e exigem o uso de ThreadLocal para serem usados corretamente.)
Então patterns como Delegate, Facede e DAOs nao devem ser usados em aplicações web?