Upload
comunidade-netponto
View
736
Download
1
Tags:
Embed Size (px)
Citation preview
AOP - PostsharpVítor Paulino
http://netponto.org29ª Reunião Lisboa - 26/05/2012
Patrocinador “GOLD”
Patrocinadores “Silver”
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”
Patrocinadores “Silver”
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! :)