aspect-oriented programming (aop) com postsharp
TRANSCRIPT
![Page 1: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/1.jpg)
AOP - PostsharpVítor Paulino
http://netponto.org29ª Reunião Lisboa - 26/05/2012
![Page 3: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/3.jpg)
Patrocinadores “Silver”
![Page 4: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/4.jpg)
Vítor PaulinoConsultor Novabase
.NET Developer Senior developer IBT
.NET Developer
![Page 5: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/5.jpg)
Agenda
• AOP • Caracteristicas Postsharp• Demo - Taking a tour• Aspectos• Lifetime & scope• Demos
![Page 6: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/7.jpg)
AOP Conceitos
![Page 8: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/8.jpg)
PostSharp - Aspectos
• Aspectos Base• Aspectos Multicast• Aspectos Providers
![Page 9: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/11.jpg)
Aspectos Providers
• IAspectProvider–Aplicação de aspectos
programaticamente• CustomAttributeIntroductionAspect
![Page 12: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/12.jpg)
• Demo 1 Postsharp – Taking a tour
![Page 13: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/16.jpg)
• DemoLifetime & Scope
![Page 17: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/18.jpg)
ReferênciasSite do Postsharp– http://www.sharpcrafters.com/postsharp/documentation
![Page 20: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/20.jpg)
Patrocinadores “Silver”
![Page 21: Aspect-oriented Programming (AOP) com PostSharp](https://reader033.vdocuments.net/reader033/viewer/2022052900/5560b339d8b42af43b8b47b8/html5/thumbnails/21.jpg)
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! :)