SlideShare ist ein Scribd-Unternehmen logo
© Logica 2010. All rights reserved
AOP mit PostSharp
Referent: Thomas Mentzel
Agenda
• AOP
• Alternative Frameworks (MS PIAB, Spring.NET)
• PostSharp
• Beispiele
– Logging
– Validation
– Security
– Windows Forms
AOP
Aspektorientierte Programmierung (AOP) ist ein
Programmierparadigma, […] das anstrebt, verschiedene logische
Aspekte eines Anwendungsprogramms […] getrennt voneinander zu
entwerfen, zu entwickeln und zu testen.
Die getrennt entwickelten Aspekte werden
dann zur endgültigen Anwendung zusammengefügt
Aus Wikipedia
http://de.wikipedia.org/wiki/Aspektorientierte_Programmierung
Policy Injection Application Block - Microsoft
• http://msdn.microsoft.com/en-us/library/cc511729.aspx
• Lizenz: Microsoft Library
• Aktuelle Version: Enterprise Library 4.0
• Bestandteil der Microsoft Enterprise Library 4.0
• Prinzip: Proxy
• Beispiel:
TargetClass theTarget =
PolicyInjection.Create<TargetClass>(parameter1, parameter2);
Framework: Spring.NET
• http://www.springframework.net/
• Lizenz: Apache License, Version 2.0
• Aktuelle Version: Spring.NET 1.3.0 RC1
• AOP ist ein Aspekt ;) des Spring.NET Frameworks
• Prinzip: Proxy
• Beispiel:
ProxyFactory factory = new ProxyFactory(new ServiceCommand());
factory.AddAdvice(new ConsoleLoggingAroundAdvice());
ICommand command = (ICommand) factory.GetProxy();
command.Execute("This is the argument");
PostSharp
• http://www.postsharp.org/
• Lizenz: commercial/GPL-LGPL dual license
• Version: 1.0 SP2 bzw. 1.5 RTM
• Prinzip: Attribute & Post-Compiler
Beispiele
• Demo
– Logging
– Validation
– Caching
• Live Projekt
– Security
Post Compiler Magic
Post Compiler Magic
Beispiele
• Windows Forms Demo
– Logik in Aspekten
– Controller als „MessageBus“
Fragen
Es gibt keine dummen Fragen,
es gibt nur dumme Antworten!
E-Mail/MSN: thomas.mentzel@logica.com
Blog: http://thomas.mentzel.name
Twitter: http://twitter.com/ThomasMentzel

Weitere ähnliche Inhalte

Ähnlich wie AOP mit PostSharp

FMK2015: The Power of JavaScript by Marcel Moré
FMK2015: The Power of JavaScript by Marcel MoréFMK2015: The Power of JavaScript by Marcel Moré
FMK2015: The Power of JavaScript by Marcel Moré
Verein FM Konferenz
 
Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"
joergreichert
 
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Bjoern Reinhold
 
Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungen
gedoplan
 
TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)
die.agilen GmbH
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of Life
Kremer Consulting
 
Freelance Cakephp Programmierer
Freelance Cakephp ProgrammiererFreelance Cakephp Programmierer
Freelance Cakephp Programmierer
heliossolutionsde
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
Andreas Schulte
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
Dennis Wilson
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigen
FotiosKaramitsos
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
AboutYouGmbH
 
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
Ingo Renner
 
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
FotiosKaramitsos
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Andreas Jung
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
Wolfgang Weigend
 
Tools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
Tools zur Diagnose von Weblogic Performanceengpässen und FehlerzuständenTools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
Tools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
OPITZ CONSULTING Deutschland
 
10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks 10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks
Ralf Eggert
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web Applications
Günther Haslbeck
 
Java für eingebettete Systeme
Java für eingebettete SystemeJava für eingebettete Systeme
Java für eingebettete Systeme
rdmeyer
 

Ähnlich wie AOP mit PostSharp (20)

FMK2015: The Power of JavaScript by Marcel Moré
FMK2015: The Power of JavaScript by Marcel MoréFMK2015: The Power of JavaScript by Marcel Moré
FMK2015: The Power of JavaScript by Marcel Moré
 
Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"Using openArchitectureWare 4.0 in domain "registration"
Using openArchitectureWare 4.0 in domain "registration"
 
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
2008 - Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 
Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungen
 
TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)TYPO3 Neos - Next Generation CMS (IPC 2014)
TYPO3 Neos - Next Generation CMS (IPC 2014)
 
Continuous Delivery as a Way of Life
Continuous Delivery as a Way of LifeContinuous Delivery as a Way of Life
Continuous Delivery as a Way of Life
 
Freelance Cakephp Programmierer
Freelance Cakephp ProgrammiererFreelance Cakephp Programmierer
Freelance Cakephp Programmierer
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigen
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
 
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01Apache Solr und TYPO3 @  Frankfurt PHP usergroup 2011-01
Apache Solr und TYPO3 @ Frankfurt PHP usergroup 2011-01
 
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
2023-08_RPA-ChapterEvent_Überprüfung-der-Codequalität
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
 
fn project serverless computing
fn project serverless computingfn project serverless computing
fn project serverless computing
 
Tools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
Tools zur Diagnose von Weblogic Performanceengpässen und FehlerzuständenTools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
Tools zur Diagnose von Weblogic Performanceengpässen und Fehlerzuständen
 
10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks 10 Auswahlkriterien für PHP Frameworks
10 Auswahlkriterien für PHP Frameworks
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web Applications
 
Java für eingebettete Systeme
Java für eingebettete SystemeJava für eingebettete Systeme
Java für eingebettete Systeme
 

Mehr von Thomas Mentzel

Sitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - KurzpräsentationSitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - Kurzpräsentation
Thomas Mentzel
 
An Introduction to Clean Code Developer
An Introduction to Clean Code DeveloperAn Introduction to Clean Code Developer
An Introduction to Clean Code Developer
Thomas Mentzel
 
O/R Mapping Einführung
O/R Mapping EinführungO/R Mapping Einführung
O/R Mapping Einführung
Thomas Mentzel
 
Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04
Thomas Mentzel
 
Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03
Thomas Mentzel
 
Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02
Thomas Mentzel
 
Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1
Thomas Mentzel
 
Word 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - AgendaWord 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - Agenda
Thomas Mentzel
 
Productivity- and Self Management
Productivity- and Self ManagementProductivity- and Self Management
Productivity- and Self Management
Thomas Mentzel
 
Logging mit log4net
Logging mit log4netLogging mit log4net
Logging mit log4net
Thomas Mentzel
 
Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010
Thomas Mentzel
 
Varianten des "Observer Pattern"
Varianten des "Observer Pattern"Varianten des "Observer Pattern"
Varianten des "Observer Pattern"
Thomas Mentzel
 
10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter
Thomas Mentzel
 

Mehr von Thomas Mentzel (13)

Sitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - KurzpräsentationSitzen ist das neue Rauchen - Kurzpräsentation
Sitzen ist das neue Rauchen - Kurzpräsentation
 
An Introduction to Clean Code Developer
An Introduction to Clean Code DeveloperAn Introduction to Clean Code Developer
An Introduction to Clean Code Developer
 
O/R Mapping Einführung
O/R Mapping EinführungO/R Mapping Einführung
O/R Mapping Einführung
 
Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04Word 2007 Einführung - Tag 04
Word 2007 Einführung - Tag 04
 
Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03Word 2007 Einführung 03 - Tag 03
Word 2007 Einführung 03 - Tag 03
 
Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02Word 2007 Einführung 02 - Tag 02
Word 2007 Einführung 02 - Tag 02
 
Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1Word 2007 Einführung 01 - Tag 1
Word 2007 Einführung 01 - Tag 1
 
Word 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - AgendaWord 2007 Einführung 00 - Agenda
Word 2007 Einführung 00 - Agenda
 
Productivity- and Self Management
Productivity- and Self ManagementProductivity- and Self Management
Productivity- and Self Management
 
Logging mit log4net
Logging mit log4netLogging mit log4net
Logging mit log4net
 
Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010Einführung Team Foundation Server 2010
Einführung Team Foundation Server 2010
 
Varianten des "Observer Pattern"
Varianten des "Observer Pattern"Varianten des "Observer Pattern"
Varianten des "Observer Pattern"
 
10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter10000 Schritte - Was steckt dahinter
10000 Schritte - Was steckt dahinter
 

AOP mit PostSharp

  • 1. © Logica 2010. All rights reserved AOP mit PostSharp Referent: Thomas Mentzel
  • 2. Agenda • AOP • Alternative Frameworks (MS PIAB, Spring.NET) • PostSharp • Beispiele – Logging – Validation – Security – Windows Forms
  • 3. AOP Aspektorientierte Programmierung (AOP) ist ein Programmierparadigma, […] das anstrebt, verschiedene logische Aspekte eines Anwendungsprogramms […] getrennt voneinander zu entwerfen, zu entwickeln und zu testen. Die getrennt entwickelten Aspekte werden dann zur endgültigen Anwendung zusammengefügt Aus Wikipedia http://de.wikipedia.org/wiki/Aspektorientierte_Programmierung
  • 4. Policy Injection Application Block - Microsoft • http://msdn.microsoft.com/en-us/library/cc511729.aspx • Lizenz: Microsoft Library • Aktuelle Version: Enterprise Library 4.0 • Bestandteil der Microsoft Enterprise Library 4.0 • Prinzip: Proxy • Beispiel: TargetClass theTarget = PolicyInjection.Create<TargetClass>(parameter1, parameter2);
  • 5. Framework: Spring.NET • http://www.springframework.net/ • Lizenz: Apache License, Version 2.0 • Aktuelle Version: Spring.NET 1.3.0 RC1 • AOP ist ein Aspekt ;) des Spring.NET Frameworks • Prinzip: Proxy • Beispiel: ProxyFactory factory = new ProxyFactory(new ServiceCommand()); factory.AddAdvice(new ConsoleLoggingAroundAdvice()); ICommand command = (ICommand) factory.GetProxy(); command.Execute("This is the argument");
  • 6. PostSharp • http://www.postsharp.org/ • Lizenz: commercial/GPL-LGPL dual license • Version: 1.0 SP2 bzw. 1.5 RTM • Prinzip: Attribute & Post-Compiler
  • 7. Beispiele • Demo – Logging – Validation – Caching • Live Projekt – Security
  • 10. Beispiele • Windows Forms Demo – Logik in Aspekten – Controller als „MessageBus“
  • 11. Fragen Es gibt keine dummen Fragen, es gibt nur dumme Antworten! E-Mail/MSN: thomas.mentzel@logica.com Blog: http://thomas.mentzel.name Twitter: http://twitter.com/ThomasMentzel