Aspect-oriented Programming (AOP) com PostSharp

22
AOP - Postsharp Vítor Paulino http://netpont o.org 29ª Reunião Lisboa - 26/05/2012

Transcript of Aspect-oriented Programming (AOP) com PostSharp

Page 1: Aspect-oriented Programming (AOP) com PostSharp

AOP - PostsharpVítor Paulino

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

Page 2: Aspect-oriented Programming (AOP) com PostSharp

Patrocinador “GOLD”

Page 4: Aspect-oriented Programming (AOP) com PostSharp

Vítor PaulinoConsultor Novabase

.NET Developer Senior developer IBT

.NET Developer

Page 5: Aspect-oriented Programming (AOP) com PostSharp

Agenda

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

Page 6: Aspect-oriented Programming (AOP) com PostSharp

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

Page 7: Aspect-oriented Programming (AOP) com PostSharp

AOP Conceitos

Page 8: Aspect-oriented Programming (AOP) com PostSharp

PostSharp - Aspectos

• Aspectos Base• Aspectos Multicast• Aspectos Providers

Page 9: Aspect-oriented Programming (AOP) com PostSharp

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

Page 10: Aspect-oriented Programming (AOP) com PostSharp

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

Page 11: Aspect-oriented Programming (AOP) com PostSharp

Aspectos Providers

• IAspectProvider–Aplicação de aspectos

programaticamente• CustomAttributeIntroductionAspect

Page 12: Aspect-oriented Programming (AOP) com PostSharp

• Demo 1 Postsharp – Taking a tour

Page 13: Aspect-oriented Programming (AOP) com PostSharp

Pós-Compilação

CompileTimeInitialize

CompileTimeValidate

RunTimeInitialize

MSIL Injection

Inicialização em compile time

Inicialização em runtime

Page 14: Aspect-oriented Programming (AOP) com PostSharp

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.

Page 15: Aspect-oriented Programming (AOP) com PostSharp

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

Page 16: Aspect-oriented Programming (AOP) com PostSharp

• DemoLifetime & Scope

Page 17: Aspect-oriented Programming (AOP) com PostSharp

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

Page 18: Aspect-oriented Programming (AOP) com PostSharp

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

Page 19: Aspect-oriented Programming (AOP) com PostSharp

Patrocinador “GOLD”

Page 21: Aspect-oriented Programming (AOP) com PostSharp

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! :)