Silverlight 4 Reference Architecture for LOB apps

3,414 views

Published on

A short introduction to my current Silverlight 4 reference architectuer with elements of CQRS.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,414
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
63
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • MVVM
  • Silverlight 4 Reference Architecture for LOB apps

    1. 1. A Silverlight 4 Reference Architecturefor Line-of-Business Applications<br />Dennis Doomen<br />dennis.doomen@avivasolutions.nl<br />
    2. 2. Dennis Doomen<br />Requirements<br /><ul><li>Testable
    3. 3. Pragmatic
    4. 4. Single ResponsibilityPrinciple
    5. 5. DependencyInjection
    6. 6. Don’t DIY
    7. 7. …whateveryour project requires</li></li></ul><li>The traditional architecture…<br />
    8. 8. <ul><li>Well-known
    9. 9. Rich domain models
    10. 10. Manyframeworks
    11. 11. Very flexibele
    12. 12. Lots of work
    13. 13. Lots of plumbingneeded
    14. 14. Notusing RIA frameworks
    15. 15. DTO conversiontroubles
    16. 16. No eagerloading</li></ul>Views (XAML + C#)<br />Shell<br />View Models<br />Silverlight 4<br />Application Controller<br />Service Agent<br />DTOs<br />Service Interface<br />WCF<br />Workflows<br />Domain Model<br />Service Actions<br />NHibernate(+ Fluent & LINQ)<br />Service Agents<br />Unit-of-Work<br />Repositories<br />Database<br />Backoffice System<br />External Service<br />
    17. 17. Dennis Doomen<br />Model View-ViewModel<br />INotifyPropertyChanged<br />Events<br />XAML (+C#)<br />ViewModel<br />ServiceAgent<br />{Binding}<br />Command<br />Call<br />Model<br />Loads<br />
    18. 18. As Microsoft wants it…<br />
    19. 19. <ul><li>Easy tobuild
    20. 20. Simple domain models
    21. 21. Lessplumbingneeded
    22. 22. No DTO conversionsneeded
    23. 23. Maximizes RIA frameworks
    24. 24. Great for CRUD
    25. 25. Batching
    26. 26. CRUD-based
    27. 27. Domain model notpossible
    28. 28. No dynamicrelationshiploading
    29. 29. No enum support</li></ul>Views (XAML + C#)<br />Shell<br />View Models<br />Silverlight 4<br />Application Controller<br />Domain Context<br />Changesets<br />WCF RIA Services<br />Domain Service<br />Business Actions<br />Entities<br />Service Agents<br />Entity Framework<br />Database<br />Backoffice System<br />External Service<br />
    30. 30. Entity Framework and WCF RIA Services?<br />
    31. 31. Dennis Doomen<br />WCF RIA Services<br /><ul><li>Client-side Validation
    32. 32. Automatic change-tracking
    33. 33. Client-side LINQ
    34. 34. Code Sharing
    35. 35. Great for CRUD i.c.m. Entity Framework
    36. 36. Built-in authorization
    37. 37. OData support
    38. 38. WCF based
    39. 39. No rich domain models
    40. 40. No eagerloading
    41. 41. No enum support
    42. 42. Notpersistency ignorant</li></li></ul><li>Dennis Doomen<br />Entity Framework<br /><ul><li>Great designer environment
    43. 43. Code Sharing
    44. 44. Fluent interface
    45. 45. POCO support
    46. 46. Great integrationwith WCF RIA/Data
    47. 47. Mappingattributes
    48. 48. Mappingattributes
    49. 49. No free support forothervendors
    50. 50. No enum support
    51. 51. No 2nd level caching</li></li></ul><li>Thenwhat?<br />
    52. 52. Views (XAML + C#)<br />Shell<br />View Models<br />Coroutines<br />Caliburn Micro<br />Unity 2 or MEF<br />Silverlight 4<br />Application Controller<br />Service Agent<br />Bootstrapper<br />DTOs<br />Commands<br />Enterprise Library 5<br />WCF Data Services<br />Rest Service<br />Command Service<br />Command Handlers<br />Domain Model<br />Service Actions<br />Policy Injection<br />Logging<br />Unity 2 of MEF<br />Workflows<br />Event Handlers<br />Domain Events<br />NHibernate(+ Fluent & LINQ)<br />Service Agents<br />Unit of Work<br />Repositories<br />Database<br />Backoffice System<br />External Service<br />
    53. 53. Dennis Doomen<br />WCF Data Services<br /><ul><li>Client-side LINQ
    54. 54. Automatic change-tracking
    55. 55. Great forquerying
    56. 56. OData support
    57. 57. Eagerloading
    58. 58. Projections
    59. 59. WCF based
    60. 60. Built-in authorization
    61. 61. Code Sharing
    62. 62. Client-side Validation
    63. 63. Rich domain models</li></li></ul><li>Commanding<br />
    64. 64. Domain Events<br />
    65. 65. Background InformationMVVM, Coroutines, Commanding, Querying, Domain Events, TestableRepositoryPattern<br />Example Code, FrameworksThe CQRS Kitchen, CaliburnMicro, MEF, Unity 2, NHibernate, FluentNHibernate, FluentAssertions<br />
    66. 66. Emaildennis.doomen@avivasolutions.nl<br />Twitter<br />@ddoomen<br />Blogwww.dennisdoomen.net<br />

    ×