Camadas com elementos Web?

Julho 5, 2007 at 3:36 am 2 comentários

Recentemente tive que expor as funcionalidades de um projeto Web em serviços (Web Services e WCF). Este projeto tem uma arquitetura em 5 camadas, tendo como apresentação páginas ASPX.

Em todas as execuções, logo no início através de httpHandlers, são criados contextos de usuários, produtos, etc. Estes contextos são baseados em elementos web, como HttpContext, utilizam cookies, etc.

O problema está em onde utilizar este contexto de forma correta, para que, quando utilizado em algum sistema que não fornece este contexto, o mesmo código funcione.

Neste projeto, muitos recursos web, como HttpContext, Session, etc, eram utilizandos em camadas auxiliares (Helpers) e de regras de negócio (BusinessObject). Quando as funcionalidade, através de um Façade/ESB, foram expostas para os serviços, várias exceções foram lançadas, pois os contextos estavam nulos.

Moral da história: Refactoring! Temos que saber definir corretamente o limite entre Web e a aplicação. Até onde posso associar componentes web na minha arquitetura? Eis a questão! 🙂 

Anúncios

Entry filed under: Arquitetura.

Arquitetando o impossível… Project Astoria

2 comentários Add your own

  • 1. Eduardo Miranda  |  Julho 5, 2007 às 10:16 am

    André,

    Para mim a resposta é simples: Até lugar nenhum! Estes objetos não deveriam sair da camada de interface. Se você precisa destes objetos em algum outro lugar você fazer o seguinte: Você REALMENTE tem certeza de que o você está tentando implementar pertence a esta camada? Se sim, a minoria dos casos, você deve isolar o objeto que você precisa em uma interface/classe sua, para que a camada de negócios, ou qq outra camada, não tenha nem que referenciar o System.Web.

    O simples fato de você referenciar este namespace em uma outra camada que não seja a de UI é um grande smell.

    Abraço

    Responder
  • 2. taij  |  Julho 25, 2007 às 3:58 pm

    André,

    O melhor seria usar apenas 3 camadas separadas por Firewall e colocadas en diferentes VLAN:
    1. Frontal : servidor web, aprsentação
    2. Private : aplicativos
    3. Secrure : banco de dados

    Mis uma camada transversal de administração.

    Abraço,

    Responder

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Calendário

Julho 2007
S T Q Q S S D
« Jun   Ago »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Most Recent Posts


%d bloggers like this: