AOP com Spring.NET

Publicado por Fabio A. Falavinha
19/11/2010
Categoria:
Tags: ,

Não é fácil abstrair um modelo de objetos capaz de mapear suas operações através de conceitos como: herança, polimorfismo, condições por contrato, mas mesmo assim a orientação a objetos ajuda a expressar melhor o problema a ser resolvido. Existe apenas um ponto que não pode ser mapeado de uma forma simples e fácil com OO, é a modelagem do comportamento dos objetos.

Para modelar o comportamento de objetos utilizamos sempre um padrão de projeto, como Strategy, Command, Factory, enfim, uma série de alternativas nas quais não se consegue extrair a essência a partir de um modelo mais simples. Neste caso, podemos utilizar um complemento ao paradigma de objetos, que é o paradigma Orientado a Aspectos (AOP).

AOP foca na modularização de uma aplicação em aspectos. Isto é, aspectos ficam observando o ciclo de vida e interações entre os objetos de um sistema via troca de mensagens, até que possam agir. A seguir vamos entender melhor o que é um aspecto.

O uso do paradigma Orientado a Aspecto (AOP) complementa implementações no modelo orientado a objeto facilitando o desenvolvimento das aplicações, separando a implementação de regras de negócio de infra-estrutura. AOP traz mecanismos que interagem e controlam objetos em tempo de execução e compilação, abstraindo qualquer implementação que afetará o uso da aplicação horizontalmente. O corte horizontal na aplicação é feito quando funcionalidades genéricas que interagem diversas vezes no ciclo de vida dos objetos são candidatas a esta abstração por parte de um aspecto.

Artigo publicado na revista .NET Magazine (edição 78), para visualizá-lo clique aqui!

3 Comentários

  • Reply

    Por Marcio Duran em 28 de November de 2012 às 23:30

    Segundo a Matéria

    “Não é fácil abstrair um modelo de objetos capaz de mapear suas operações através de conceitos
    como: herança, polimorfismo, condições por contrato, mas mesmo assim a orientação a objetos ajuda a
    expressar melhor o problema a ser resolvido. Existe apenas um ponto que não pode ser mapeado de uma
    forma simples e fácil com OO, é a modelagem do comportamento dos objetos. ”

    Seria uma modelagem do comportamento do objeto, ou a introdução de fragmentos de código ao objeto na forma de atender responsabilidades especificas de infra-estrutura.

    Por Wikipédia.
    A programação orientada a aspecto difere muito do conceito da programação orientada a objeto e tem funcionalidade similar aos protocolos de meta-objeto. Os aspectos são próximos de conceitos de programação como subjects, mixins e delegação. Outros modos de se utilizar a programação orientada a aspecto incluem: composition filters e abordagem por hyperslices.

  • Reply

    Por Fabio A. Falavinha em 29 de November de 2012 às 9:41

    Oi Marcio, muitos desenvolvedores utilizam AOP apenas para recursos de infra-estrutura da arquitetura como: Log, Exception Handling. Porém, AOP deve ser utilizado para abstrair modelos de negócio, juntamente com a Orientação a Objetos. Com a orientação a objetos podemos abstrair comportamentos através de herança e polimorfismo, porém comportamentos mais específicos que aparecem ao implementar uma regra de negócio, como o exemplo: Ordem de Pagamento e Cliente. Um cliente tem um conjunto de ordens de pagamento abertas. Porém ao tentar remover um cliente, o serviço de Cliente deve verificar se há ordens de pagamento abertas para o cliente informado. De forma simples, podemos colocar um conjunto de condições (IFs) dentro do método do serviço. Dessa forma estamos resolvendo a regra de negócio por implementação e não por modelo. Com AOP, podemos resolver este exemplo criando um aspecto para abstrair o comportamento: OrdemPagamentoBehavior. Este elemento é aplicado ao serviço de cliente e entra em ação quando o serviço de Cliente for acionado para remover um cliente. Portanto, faz parte do modelo termos o comportamento entre dois elementos do modelo sendo garantidos por um terceiro elemento, isto é, a resolução da regra de negócio está sendo mantida em modelo por conta do AOP e não por implementação.
    Entendo que há casos e casos, mas em mais da metade desses casos, ao pensarmos em resolver um regra de negócio que mantém um comportamento podemos utilizar AOP para nos ajudar.
    É isso aí! Um grande abs.

  • Reply

    Por Marcio Duran em 29 de November de 2012 às 12:14

    Muito bem explicado com colocações objetivas e diretas.

    Obrigado,

    Abraços





Desenvolvido por hacklab/ com WordPress