And patterns to help you avoid getting killed
Sander Hoogendoorn | Principal Technology Officer | Capgemini | @aahoogendoo...
2HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
Capgemini
Principal technology officer
Global ...
3HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
ARC203 – How frameworks can kill your
projects...
4HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
An short story
about frameworks
How fra...
5HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
An short story
about frameworks
How fra...
It always takes longer than you expect,
even when you take into account Hofstadter’s Law
HOFSTADTER’S LAW
7HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
8HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
Frameworks, like pizzas, come in only two sizes: too big and too small.
LIFE IS NEVER EASY …
10HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
11HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
WHAT’S IT GONNA BE PUNK?
General purpose fram...
12HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
FRAMEWORKS - CODEPLEX
13HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
FRAMEWORKS – WWW.CSHARPOPENSOURCE.COM
14HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
FRAMEWORKS – MICROSOFT ENTERPRISE LIBRARY
15HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
FRAMEWORKS – PROJECT CASTLE
16HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DON’T BELIEVE THE HYPE – IT’S A SQL
17HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CONVINCING THE MANAGEMENT TO APPLY THE FRAMEW...
18HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
UNDERSTANDING THE FRAMEWORK (56.4 %)
19HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CONVINCING OTHER DEVELOPERS TO USE THE FRAMEW...
20HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
TRAINING THE DEVELOPERS (20 %)
21HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
THE EYE OF THE TIGER
22HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
An short story
about frameworks
How fr...
My software never has bugs. It just develops random features
APPLYING FRAMEWORKS
24HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
SO GLAD YOU MADE IT!
What if we require
addit...
25HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MORE THAN ANYTHING, DEPENDENCIES WILL KILL YO...
A short story about framework developers and application developers
KENTUCKY FRIED ARCHITECTURE
27HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
THE CUSTOMER IS NOT ALWAYS RIGHT
28HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
PIGS & CHICKENS
The application
developer
The...
29HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
KFC ARCHITECTURE – ENTITY FRAMEWORK
30HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
KFC ARCHITECTURE – ENTITY FRAMEWORK
31HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
KFC ARCHITECTURE – ENTITY FRAMEWORK
I don’t care if it works on your machine! We are not shipping your machine!
LETTING THE LUNATICS RUN THE ASYLUM
Here’s … b...
33HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
ON THE WRONG TRACK
34HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
HOT OR NOT?
Hot? From hot to not? Not?
HTML5
...
35HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
HERE’S JOHNNY! – ASP.NET MVC
36HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
HERE’S JOHNNY! – ASP.NET MVC
It’s only in theory that practice and theory are the same
NO STRINGS ATTACHED
38HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
39HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CHANGING BASE CLASSES – – NHIBERNATE / LOG4NET
40HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CHANGING BASE CLASSES – NHIBERNATE / LOG4NET
Programming is like sex.
One mistake and you have to support it for the rest of your life
YES, YOUR FRAMEWORKS VERSION TOO
42HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
IT AIN’T OVER TILL IT’S OVER
43HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
44HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
HOW TO AVOID GETTING KILLED
46HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
An short story
about frameworks
How fr...
Architecture starts when you carefully put two bricks together. There it begins.
SOUND ARCHITECTURE
(SOFTWARE.ARCHITECTURE != LIST<FRAMEWORK>)
49HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
A SOFTWARE ARCHITECTURE
50HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
Presentation
Process
Domain
Data / Services
O...
51HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
THE GOOD, THE BAD AND THE UGLY
Dependencies
U...
52HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
An short story
about frameworks
How fr...
From a programmer's point of view the user is a peripheral
that types when you issue a read request.
LAYER SUPERTYPE
54HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE What’s a layer supertype Olli...
55HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – ASP.NET MVC
56HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – ASP.NET MVC
57HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
Presentation
Process
Domain
Data / Services
O...
58HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – USING A LAYER SUPERTYPE
59HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – DEFINE SERVICES ON LAYER SU...
60HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
LAYER SUPERTYPE – EXTENSION METHODS ON LAYER ...
61HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
An short story
about frameworks
How fr...
Always code as if the guy who ends up maintaining your code
will be a violent psychopath who knows where you live.
DESCRIP...
63HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
I KNOW NOTHING. I’M FROM BARCELONA
What is th...
64HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR – THE PROBLEM (1)
65HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR – THE PROBLEM (2)
66HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
ENUM?
67HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
STRING COLLECTION?
68HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
STRING COLLECTION
69HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
I KNOW NOTHING. I’M FROM BARCELONA
Descriptor...
70HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN
71HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN - DEFINITION
72HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – EXTENDED DEFINITION
73HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – USE IN FRAMEWORK
74HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – USE IN APPLICATION
75HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MYFIRSTSURVEY
76HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – USE IN ASP.NET MVC
77HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DESCRIPTOR PATTERN – USE IN ASP.NET MVC
78HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
AGENDA
An short story
about frameworks
How fr...
XML is like violence.
If it doesn’t solve your problems, you are not using enough of it.
DEPENDENCY INJECTION
80HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
A NEW DISEASE?
What do you think it is?
Creat...
81HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DIFFERENT VARIATIONS? Did you know that there...
82HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DEPENDENCY INJECTION – CONSTRUCTOR INJECTION
83HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DEPENDENCY INJECTION – MANUAL INJECTION
c
84HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
DEPENDENCY INJECTION – WHAT TO PLUG IN
Yes, X...
"Teamwork is a lot of people doing what I say“
Marketing executive, Citrix Corporation
MANAGER – PROVIDER
86HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
Definition
Create a simple static facade (man...
87HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MANAGER – VALIDATIONMANAGER
88HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
INTERFACE
89HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MANAGER – INITIALIZATION (USING DEPENDENCY IN...
90HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CONFIGURATION OF IMPLEMENTATION
91HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
MANAGER - EXECUTING METHODS
92HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
CLIENT – CALLING METHODS
93HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
Useful when
Generic services need to be calle...
94HOW FRAMEWORKS CAN KILL YOUR PROJECTS
©2010 Capgemini. All Rights Reserved
THE GOOD, THE BAD AND THE UGLY
Dependencies
U...
www.accelerateddeliveryplatform.com
WWW.SMARTUSECASE.COM
sander.hoogendoorn@capgemini.com
www.sanderhoogendoorn.com | www.smartusecase.com
Twitter: @aahoogendoorn
REFERENCES AND Q...
Upcoming SlideShare
Loading in …5
×

20101109 (tech ed) how frameworks kill projects

2,417 views

Published on

When it comes to Microsoft .NET-connected development, more and more frameworks are entering the market, both from Microsoft and from open source. Think of ASP.NET MVC, Castle, Windows Workflow Foundation (WF), Entity Framework, Unity, Linq2SQL, ADO.NET Data Services, Windows Communication Foundation (WCF), nHibernate, Spring.NET, CSLA, NUnit, Enterprise Library, MEF or ADF.

Once you apply one or more frameworks to a project, the trouble begins. What if you require features that aren’t implemented in the framework? What if you decide that another framework would have been better and want to switch halfway through your project? What if the author of your favorite open source framework suddenly stops developing? What if the framework contains bugs or omissions? And what if a new version of the framework is released that is implemented differently?

These and many more everyday problems can bring your project a halt, or at least require serious refactoring. During this highly interactive talk, Sander Hoogendoorn, chief architect of Capgemini’s agile Accelerated Delivery Platform and member of Microsoft’s Partner Advisory Council .NET, demonstrates pragmatic architectures and patterns that will help your projects avoid framework issues and to keep code independent of framework choices. Sander presents models of layered architectures, and looks at applying bridge patterns, managers-providers, dependency injection, descriptors and layer super-types, accompanied by lots of demos and (bad) code examples using blocks from Microsoft’s Enterprise Library, NHibernate, Log4Net, and the Entity Framework.

Join this interactive discussion to share your experience of improving the structure and quality of your software architecture and code, and to discuss how to avoid common pitfalls of applying frameworks to .NET software development.

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,417
On SlideShare
0
From Embeds
0
Number of Embeds
1,152
Actions
Shares
0
Downloads
52
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

20101109 (tech ed) how frameworks kill projects

  1. 1. And patterns to help you avoid getting killed Sander Hoogendoorn | Principal Technology Officer | Capgemini | @aahoogendoorn ARC203 - HOW FRAMEWORKS CAN KILL YOUR PROJECTS
  2. 2. 2HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved Capgemini Principal technology officer Global agile thought leader Chief architect Accelerated Delivery Platform (ADP) Other Microsoft Partner Advisory Council .NET Author books and articles in international magazines Appreciated speaker at international conferences Columns in several magazines Editorial boards Web www.sanderhoogendoorn.com www.smartusecase.com Twitter: @aahoogendoorn SANDER HOOGENDOORN
  3. 3. 3HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved ARC203 – How frameworks can kill your projects Tuesday 12:00 Hall 3.2 Interactive 2 ARC202 - How frameworks can kill your projects Wednesday 13:20 Hall 7.1b London 2 ARC203 – How frameworks can kill your projects (repeat) Thursday 10:30 Hall 3.2 Interactive 6 ARC205 – How smart use cases drive web development Friday 10:30 Hall 7.3 Berlin 1 SANDER HOOGENDOORN – TECHED 2010 SESSIONS
  4. 4. 4HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider
  5. 5. 5HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider
  6. 6. It always takes longer than you expect, even when you take into account Hofstadter’s Law HOFSTADTER’S LAW
  7. 7. 7HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  8. 8. 8HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  9. 9. Frameworks, like pizzas, come in only two sizes: too big and too small. LIFE IS NEVER EASY …
  10. 10. 10HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  11. 11. 11HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved WHAT’S IT GONNA BE PUNK? General purpose frameworks Enterprise Library, Spring.Net, Castle, NakedObjects, Accelerated Delivery Framework (ADF), SubSonic Single goaled frameworks – verticals Dependency injection: ObjectBuilder, Unity, Castle Windsor Logging: Log4Net, Logging Block, Common.Logging Exception handling: Exception Handling Block Apect orientation: PostSharp, SetPoint Search: Lucene.net, NLucene Portals: DotNetNukeSpatial, Umbraco Single goaled frameworks – architectural User interface: Silverlight, ASP.NET MVC, WPF, ASP.NET Ajax, Spring MVC Process: UI Process Application Block, WF Domain: Entity Framework, Hibernate, NEO Data: Entity Framework, Hibernate, Castle ActiveRecord, CSLA Service s: WCF, WCF RIA
  12. 12. 12HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved FRAMEWORKS - CODEPLEX
  13. 13. 13HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved FRAMEWORKS – WWW.CSHARPOPENSOURCE.COM
  14. 14. 14HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved FRAMEWORKS – MICROSOFT ENTERPRISE LIBRARY
  15. 15. 15HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved FRAMEWORKS – PROJECT CASTLE
  16. 16. 16HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DON’T BELIEVE THE HYPE – IT’S A SQL
  17. 17. 17HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CONVINCING THE MANAGEMENT TO APPLY THE FRAMEWORK (25.5 %)
  18. 18. 18HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved UNDERSTANDING THE FRAMEWORK (56.4 %)
  19. 19. 19HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CONVINCING OTHER DEVELOPERS TO USE THE FRAMEWORK (23.6 %)
  20. 20. 20HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved TRAINING THE DEVELOPERS (20 %)
  21. 21. 21HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved THE EYE OF THE TIGER
  22. 22. 22HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider
  23. 23. My software never has bugs. It just develops random features APPLYING FRAMEWORKS
  24. 24. 24HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved SO GLAD YOU MADE IT! What if we require additional features that aren’t covered by our framework? What if we decide that another framework might be better than the one we’re using now? What if the author of our favorite framework suddenly stops developing it? What if the framework contains bugs? And what if the new version of our framework is implemented totally different?
  25. 25. 25HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MORE THAN ANYTHING, DEPENDENCIES WILL KILL YOUR PROJECT
  26. 26. A short story about framework developers and application developers KENTUCKY FRIED ARCHITECTURE
  27. 27. 27HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved THE CUSTOMER IS NOT ALWAYS RIGHT
  28. 28. 28HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved PIGS & CHICKENS The application developer The framework developer
  29. 29. 29HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved KFC ARCHITECTURE – ENTITY FRAMEWORK
  30. 30. 30HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved KFC ARCHITECTURE – ENTITY FRAMEWORK
  31. 31. 31HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved KFC ARCHITECTURE – ENTITY FRAMEWORK
  32. 32. I don’t care if it works on your machine! We are not shipping your machine! LETTING THE LUNATICS RUN THE ASYLUM Here’s … beta!
  33. 33. 33HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved ON THE WRONG TRACK
  34. 34. 34HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved HOT OR NOT? Hot? From hot to not? Not? HTML5 LightSwitch WCF RIA Services Silverlight 4.0 ASP.NET MVC 2 (3?) ASP.NET Dynamic Data ADO.NET Data Services MEF Azure Services jQuery NService Bus Oslo M MGrammar Expression Blend ASP.NET Ajax REST Dublin BizTalk Surface Duet SketchFlow Entity Framework 2.0 LINQ2SQL LINQ2Entities Entity Data Model WPF Unity DSL’s Silverlight 2.0 F# ASP.NET PopFly
  35. 35. 35HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved HERE’S JOHNNY! – ASP.NET MVC
  36. 36. 36HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved HERE’S JOHNNY! – ASP.NET MVC
  37. 37. It’s only in theory that practice and theory are the same NO STRINGS ATTACHED
  38. 38. 38HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  39. 39. 39HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CHANGING BASE CLASSES – – NHIBERNATE / LOG4NET
  40. 40. 40HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CHANGING BASE CLASSES – NHIBERNATE / LOG4NET
  41. 41. Programming is like sex. One mistake and you have to support it for the rest of your life YES, YOUR FRAMEWORKS VERSION TOO
  42. 42. 42HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved IT AIN’T OVER TILL IT’S OVER
  43. 43. 43HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
  44. 44. 44HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MISSING BASE CLASSES – WORKFLOW FOUNDATION 4.0
  45. 45. HOW TO AVOID GETTING KILLED
  46. 46. 46HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider
  47. 47. Architecture starts when you carefully put two bricks together. There it begins. SOUND ARCHITECTURE
  48. 48. (SOFTWARE.ARCHITECTURE != LIST<FRAMEWORK>)
  49. 49. 49HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved A SOFTWARE ARCHITECTURE
  50. 50. 50HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved Presentation Process Domain Data / Services Outside world Pages UserControls Panels Use cases Workflow Domain objects / Entities Factories / Repositories Enums / Value objects / Smart references [Mapping] Service gateways Service locators [Mapping] Databases Services / ESB Exact SAP BizTalk Java Silverlight XAML Entities (from EF) Domain Services Metadata Entity Framework LINQ Nhibernate? MVVM? MVP?
  51. 51. 51HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved THE GOOD, THE BAD AND THE UGLY Dependencies Using frameworks is simply good, gringo However, being dependant on third parties can put your project at risk How stable are the frameworks you use? How stable is the framework vendor? Minimize dependencies Map frameworks to your software architecture, not vice versa Define your own layer supertypes Wrap framework functionality Apply manager-provider pattern Implement extension methods if all fails
  52. 52. 52HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider
  53. 53. From a programmer's point of view the user is a peripheral that types when you issue a read request. LAYER SUPERTYPE
  54. 54. 54HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE What’s a layer supertype Ollie? Acts as a supertype for all types in its layer All types inherit from the layer supertype Well Stan, it’s characteristics are Name expresses common behaviour Forces common features on all inherited types Ideal starting point for services Initially the layer supertype is empty Reserve layer supertype for future additions Extension methods don’t (always) help, you know
  55. 55. 55HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – ASP.NET MVC
  56. 56. 56HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – ASP.NET MVC
  57. 57. 57HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved Presentation Process Domain Data / Services Outside world Pages UserControls Panels Use cases Workflow Domain objects / Entities Factories / Repositories Enums / Value objects / Smart references [Mapping] Service gateways Service locators [Mapping] Databases Services / ESB Exact SAP BizTalk Java
  58. 58. 58HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – USING A LAYER SUPERTYPE
  59. 59. 59HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – DEFINE SERVICES ON LAYER SUPERTYPES
  60. 60. 60HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved LAYER SUPERTYPE – EXTENSION METHODS ON LAYER SUPERTYPES
  61. 61. 61HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider
  62. 62. Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. DESCRIPTOR
  63. 63. 63HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved I KNOW NOTHING. I’M FROM BARCELONA What is the matter Mister Fawlty? The problem Manual, is that I want to use constants in my application But I want to define them in my framework and extend them in my application Enumeration won’t do – there’s no inheritance
  64. 64. 64HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR – THE PROBLEM (1)
  65. 65. 65HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR – THE PROBLEM (2)
  66. 66. 66HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved ENUM?
  67. 67. 67HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved STRING COLLECTION?
  68. 68. 68HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved STRING COLLECTION
  69. 69. 69HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved I KNOW NOTHING. I’M FROM BARCELONA Descriptor Defines a restricted but application specific extendible list of definitions Useful when Enums can not be inherited Framework defines enumeration types that need to be extended in application code Define layer supertype using reflection Pre-define frequently used instances
  70. 70. 70HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN
  71. 71. 71HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN - DEFINITION
  72. 72. 72HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – EXTENDED DEFINITION
  73. 73. 73HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – USE IN FRAMEWORK
  74. 74. 74HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – USE IN APPLICATION
  75. 75. 75HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MYFIRSTSURVEY
  76. 76. 76HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – USE IN ASP.NET MVC
  77. 77. 77HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DESCRIPTOR PATTERN – USE IN ASP.NET MVC
  78. 78. 78HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved AGENDA An short story about frameworks How frameworks can get you in trouble Software architecture versus frameworks The layer supertype Introducing the descriptor pattern The manager-provider
  79. 79. XML is like violence. If it doesn’t solve your problems, you are not using enough of it. DEPENDENCY INJECTION
  80. 80. 80HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved A NEW DISEASE? What do you think it is? Create true separation between definition and implementation, so that the two can vary independently and can be replaced easily Looks like a typical case of dependency injection to me Call functionality without having to know the actual implementation Implement replaceable services Apply implementations in different contexts Plug-in services at run-time So … Single topic services Single or multiple implemenations need to be handled, which differs dependant on context, like with Windows API, logging or error handling Unit testing
  81. 81. 81HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DIFFERENT VARIATIONS? Did you know that there are different types of this dependency injection? Arggh… Yeah, sure. There’s Constructor injection Property (setter) injection And even manual injection Who cares doc?
  82. 82. 82HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DEPENDENCY INJECTION – CONSTRUCTOR INJECTION
  83. 83. 83HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DEPENDENCY INJECTION – MANUAL INJECTION c
  84. 84. 84HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved DEPENDENCY INJECTION – WHAT TO PLUG IN Yes, XML will hurt you too!
  85. 85. "Teamwork is a lot of people doing what I say“ Marketing executive, Citrix Corporation MANAGER – PROVIDER
  86. 86. 86HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved Definition Create a simple static facade (manager) for a (set of) interfaced implementations (providers) In practice Manager holds one or a collection of providers Provider implement a particular interface Manager has methods to call methods from interface At run-time, using dependency injection, actual providers are injected MANAGER-PROVIDER PATTERN
  87. 87. 87HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MANAGER – VALIDATIONMANAGER
  88. 88. 88HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved INTERFACE
  89. 89. 89HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MANAGER – INITIALIZATION (USING DEPENDENCY INJECTION)
  90. 90. 90HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CONFIGURATION OF IMPLEMENTATION
  91. 91. 91HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved MANAGER - EXECUTING METHODS
  92. 92. 92HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved CLIENT – CALLING METHODS
  93. 93. 93HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved Useful when Generic services need to be called, which may have different implementations Manager prevents having to loop through each of a list of providers Flexibility to add or remove providers without changing application code Providers differ e.g. in development code, test code or deployed code Use for Task Management View Management Binding and Persisting Resource Management State Management Logging Datasource interaction Testing! MANAGER-PROVIDER PATTERN
  94. 94. 94HOW FRAMEWORKS CAN KILL YOUR PROJECTS ©2010 Capgemini. All Rights Reserved THE GOOD, THE BAD AND THE UGLY Dependencies Using frameworks is simply good, gringo However, being dependant on third parties can put your project at risk How stable are the frameworks you use? How stable is the framework vendor? Minimize dependencies Map frameworks to your software architecture, not vice versa Define your own layer supertypes Wrap framework functionality Apply manager-provider pattern Implement extension methods if all fails
  95. 95. www.accelerateddeliveryplatform.com WWW.SMARTUSECASE.COM
  96. 96. sander.hoogendoorn@capgemini.com www.sanderhoogendoorn.com | www.smartusecase.com Twitter: @aahoogendoorn REFERENCES AND QUESTIONS

×