Aspect-oriented Programming (AOP) com PostSharp

Post on 24-May-2015

734 views 1 download

Tags:

Transcript of Aspect-oriented Programming (AOP) com PostSharp

AOP - PostsharpVítor Paulino

http://netponto.org29ª Reunião Lisboa - 26/05/2012

Patrocinador “GOLD”

Vítor PaulinoConsultor Novabase

.NET Developer Senior developer IBT

.NET Developer

Agenda

• AOP • Caracteristicas Postsharp• Demo - Taking a tour• Aspectos• Lifetime & scope• Demos

AOP

“ In computing, aspect-oriented programming (AOP) is a programming paradigm which aims to increase modularity by allowing the separation of cross-cutting concerns. “

wikipedia

AOP Conceitos

PostSharp - Aspectos

• Aspectos Base• Aspectos Multicast• Aspectos Providers

Aspectos Base• AssemblyLevelAspect – classe base para todos os aspectos aplicados a assemblies

• TypeLevelAspect – classe base para todos os aspectos aplicados a tipos

• MethodLevelAspect – classe base para todos os aspectos aplicados a métodos

• LocationLevelAspect – Classe base de todos os aspectos aplicados a campos ou

parâmetros de métodos• EventLevelAspect – classe base para todos os aspectos aplicados a eventos

Aspectos Multicast– MulticastAttributes:

• visibility, • virtuality, • implementation, • scope.

– AttributeTargetTypes: • Nome Completo• Wildmask• RegularExpressions

– AttributePriority : Valor da prioridade de aplicação do aspecto, quanto mais baixo o valor mais prioritário

Aspectos Providers

• IAspectProvider–Aplicação de aspectos

programaticamente• CustomAttributeIntroductionAspect

• Demo 1 Postsharp – Taking a tour

Pós-Compilação

CompileTimeInitialize

CompileTimeValidate

RunTimeInitialize

MSIL Injection

Inicialização em compile time

Inicialização em runtime

Pós-Compilação

1. Obter a metadata do módulo.2. Traduzir as instruções IL para um formato

relevante para o processo de weave conseguir interpretar.

3. Detectar os Joinpoints ( code weaver task ).4. Tratamento explicito para os Aspectos associados

ao tratamento de excepções.5. Injectar as instruções IL dos advices.6. Voltar a compilar de novo o modulo.

Tempo de vida

Static Scoped Aspect

At Compile Time

Instance Scoped Aspect

At runtime

Tempo de vida igual ao da aplicaçãoPor Default !

Tempo de vida igual ao da instância alvo• IInstanceScopedAspect •InstanceLevelAspect

• DemoLifetime & Scope

Conclusões

• Agnostico à linguagem de programação• MSIL Injection • Facil utilização • Aplicação a todos os tipos de join

points do .NET• Codigo gerado – dificil leitura

ReferênciasSite do Postsharp– http://www.sharpcrafters.com/postsharp/documentation

Patrocinador “GOLD”

Próximas reuniões presenciais

• 26-05-2012 – Maio• 02-06-2012 – Junho (Coimbra)• 16-06-2012 – Junho• 21-07-2012 – Julho

Reserva estes dias na agenda! :)

Obrigado!

Vítor Paulinovmlepaulino@gmail.com