SlideShare a Scribd company logo
1 of 15
Introducing the Silverlight Cookbook
                         Why, what, how and when




                           Dennis Doomen


© 2011 Aviva Solutions        dennis.doomen@avivasolutions.nl   25 februari 2012
About Me
   • Principal Consultant
   • 14 years IT experience
   • C++ origins but C# since 2001
   • Specialties
      • .NET Architecture
      • Scrum/XP
      • ALM
   • Speaker
   • Public initiatives
      • Silverlight Cookbook
      • C# Coding Guidelines
      • Fluent Assertions
   • Internet
      • www.dennisdoomen.net
      • DZone MVB
      • @ddoomen
© 2011 Aviva Solutions               Dennis Doomen   25 februari 2012
Defining an architecture
     1.      Collect non-functionals
     2.      Determine deployment environment
     3.      Determine usage
     4.      Select engineering principles
     5.      Read between the lines
     6.      Select technology
     7.      Define reference architecture
     8.      Build & adapt




© 2011 Aviva Solutions                 Dennis Doomen   25 februari 2012
Design Decisions
     •     Tiers vs. Layers
     •     Integration
     •     Distribution
     •     Scalability
     •     Security
     •     Deployment
     •     Diagnostics
     •     Reliability




© 2011 Aviva Solutions        Dennis Doomen   25 februari 2012
The Silverlight Cookbook
                         •   Silverlight 5
                         •   Fully automated testing (almost )
                         •   Complex domain logic
                         •   Task Based
                         •   Scalable
                         •   Responsive
                         •   Any relational DB
                         •   Overkill for most applications, so pick & choose




© 2011 Aviva Solutions           Dennis Doomen                        25 februari 2012
The traditional
                         architecture…




© 2011 Aviva Solutions                 25 februari 2012
Shell               Views (XAML + C#)                             Well-known
                                                                                                                 Rich domain models
                       Silverlight 5



                                                             View Models
                                                                                                                 Many frameworks
                                                         Application Controller
                                                                                                                 Very flexibele
                                                             Service Agent                                    ×   Lots of work
                                                                                                              ×   Lots of plumbing needed
                                                                                                              ×   Not using RIA frameworks
                                                                         DTOs
                                                                                                              ×   DTO conversion troubles
                                                                                                              ×   No eager loading
             WCF




                                                           Service Interface

                                       Service Actions     Domain Model            Workflows
      Nhibernate 3.x
          (+ Fluent)




                                        Repositories        Unit-of-Work          Service Agents




                                                                     Backoffice                    External
                                         Database                     System                       Service




© 2011 Aviva Solutions                                                                                                              25 februari 2012
As Microsoft wants it…


© 2011 Aviva Solutions                            25 februari 2012
Shell                Views (XAML + C#)                             Easy to build
                                                                                                             
                         Silverlight 5




                                                            View Models
                                                                                                                 Simple domain models
                                                                                                                Less plumbing needed
                                                        Application Controller
                                                                                                                No DTO conversions needed
                                                          Domain Context                                        Maximizes RIA frameworks
                                                                                                             
      WCF RIA Services




                                                                                                                 Great for CRUD
                                                                                                                Batching
                                                                        Changesets
                                                                                                             ×   CRUD-based
                                                                                                             ×   Domain model not possible
                                                           Domain Service
                                                                                                             ×   No dynamic relationship
                                             Entities                     Business Actions                       loading
                                                                                                             ×   Almost enum support
                                             Entity Framework                    Service Agents
                                                                                                             ×   No 2nd level caching

                                                                    Backoffice                    External
                                         Database                    System                       Service




© 2011 Aviva Solutions                                                                                                             25 februari 2012
Then what?




© 2011 Aviva Solutions                25 februari 2012
Shell                Views (XAML + C#)




                                                                                                         Caliburn Micro
                                   Silverlight 5




                                                                                                                          AutoFac
                                                    Coroutines                View Models

                                                                 Application Controller

                                                         Service Agent              Bootstrapper
                                WCF Data Services


                                                              DTOs                             Commands


                                                       Query Services                   Command Service

                                                       Event Handlers                Command Handlers




                                                                                                                                               AutoFac
                                                                                                                                     Logging
                         Nhibernate 3.x
                             (+ Fluent)




                                                       Domain Events                      Domain Model

                                                    Repositories         Unit of Work        Service Agents




                                                                                  Backoffice                                        External
                                                     Database                      System                                           Service




© 2011 Aviva Solutions                                                                                                                                   25 februari 2012
Commanding
                                                 Concurrency
                                                                 Validation
                                      Querying
         Testability                                     Business Rules

                                      Recipes
           Data Access
                                                          Deployment
                 Exception Handling         IoC
                                                         Composition
                  Logging              Asynchronity



© 2011 Aviva Solutions                                                    25 februari 2012
What’s Next?
                                         •   Nicer Design
                                         •   WinRT? HTML5?
                                         •   Query Optimization
                                         •   Key-Based Commanding
                                         •   More CQRS
                                         •   Authentication
                                         •   Authorization
                                         •   Globalization
                                         •   Fluent Migration




© 2011 Aviva Solutions   Dennis Doomen                       25 februari 2012
Background Information
     MVVM, Coroutines, Commanding, Querying, Domain Events,
     Testable Repository Pattern

     Example Code, Frameworks
     Silverlight Cookbook, Caliburn Micro, AutoFac, NHibernate,
     Fluent NHibernate, Fluent Assertions




© 2011 Aviva Solutions                                        25 februari 2012
Email
     dennis.doomen@avivasolutions.nl

     Twitter
     @ddoomen

     Blog
     www.dennisdoomen.net




© 2011 Aviva Solutions                 25 februari 2012

More Related Content

What's hot

Oracle tech db-04-cost-effective-neum-16.04.2010
Oracle tech db-04-cost-effective-neum-16.04.2010Oracle tech db-04-cost-effective-neum-16.04.2010
Oracle tech db-04-cost-effective-neum-16.04.2010Oracle BH
 
Unified FlexPod Management and Automation
Unified FlexPod Management and AutomationUnified FlexPod Management and Automation
Unified FlexPod Management and Automationsubtitle
 
Macleans - NZ Business taking on the world with a world class IT infrastructu...
Macleans - NZ Business taking on the world with a world class IT infrastructu...Macleans - NZ Business taking on the world with a world class IT infrastructu...
Macleans - NZ Business taking on the world with a world class IT infrastructu...Vincent Kwon
 
Presentaties seminar de virtuele realiteit
Presentaties seminar de virtuele realiteitPresentaties seminar de virtuele realiteit
Presentaties seminar de virtuele realiteitJoan Tuls
 
5 Cloud Commandments - Why Cloud Management Makes Sense
5 Cloud Commandments - Why Cloud Management Makes Sense5 Cloud Commandments - Why Cloud Management Makes Sense
5 Cloud Commandments - Why Cloud Management Makes SenseRightScale
 
14h00 aws deck-summit2012_sap_on_aws_s_jones_final
14h00   aws deck-summit2012_sap_on_aws_s_jones_final14h00   aws deck-summit2012_sap_on_aws_s_jones_final
14h00 aws deck-summit2012_sap_on_aws_s_jones_finalLuiz Gustavo Santos
 
Vision dt solutions vmug leeds
Vision dt solutions vmug leedsVision dt solutions vmug leeds
Vision dt solutions vmug leedssubtitle
 
Perspectives and Case Studies on Effective Theatre Base Service Management
Perspectives and Case Studies on Effective Theatre Base Service ManagementPerspectives and Case Studies on Effective Theatre Base Service Management
Perspectives and Case Studies on Effective Theatre Base Service ManagementIBMGovernmentCA
 
IBM Cloud Burst postavená na platforme IBM System x
IBM Cloud Burst postavená na platforme IBM System xIBM Cloud Burst postavená na platforme IBM System x
IBM Cloud Burst postavená na platforme IBM System xASBIS SK
 
Stairway to heaven webinar
Stairway to heaven webinarStairway to heaven webinar
Stairway to heaven webinarCloudBees
 
Cloud Computing and System z
Cloud Computing and System zCloud Computing and System z
Cloud Computing and System zdkang
 
2011 04-dsi-javaee-in-the-cloud-andreadis
2011 04-dsi-javaee-in-the-cloud-andreadis2011 04-dsi-javaee-in-the-cloud-andreadis
2011 04-dsi-javaee-in-the-cloud-andreadisdandre
 
ITCamp 2012 - Paul Roman - Hybrid solutions in Office 365
ITCamp 2012 - Paul Roman - Hybrid solutions in Office 365ITCamp 2012 - Paul Roman - Hybrid solutions in Office 365
ITCamp 2012 - Paul Roman - Hybrid solutions in Office 365ITCamp
 
Do More with Oracle Environment with Open and Best of breed Technologies
Do More with Oracle Environment with Open and Best of breed TechnologiesDo More with Oracle Environment with Open and Best of breed Technologies
Do More with Oracle Environment with Open and Best of breed TechnologiesEMC Forum India
 
Comprehensive, converged integration platform: IBM Starter Kit for Cloud x86 ...
Comprehensive, converged integration platform: IBM Starter Kit for Cloud x86 ...Comprehensive, converged integration platform: IBM Starter Kit for Cloud x86 ...
Comprehensive, converged integration platform: IBM Starter Kit for Cloud x86 ...IBM India Smarter Computing
 
Windows azure uk universities overview march 2012
Windows azure uk universities overview march 2012Windows azure uk universities overview march 2012
Windows azure uk universities overview march 2012Lee Stott
 
Architecting a Private Cloud - Cloud Expo
Architecting a Private Cloud - Cloud ExpoArchitecting a Private Cloud - Cloud Expo
Architecting a Private Cloud - Cloud Exposmw355
 

What's hot (20)

Oracle tech db-04-cost-effective-neum-16.04.2010
Oracle tech db-04-cost-effective-neum-16.04.2010Oracle tech db-04-cost-effective-neum-16.04.2010
Oracle tech db-04-cost-effective-neum-16.04.2010
 
Unified FlexPod Management and Automation
Unified FlexPod Management and AutomationUnified FlexPod Management and Automation
Unified FlexPod Management and Automation
 
Macleans - NZ Business taking on the world with a world class IT infrastructu...
Macleans - NZ Business taking on the world with a world class IT infrastructu...Macleans - NZ Business taking on the world with a world class IT infrastructu...
Macleans - NZ Business taking on the world with a world class IT infrastructu...
 
Presentaties seminar de virtuele realiteit
Presentaties seminar de virtuele realiteitPresentaties seminar de virtuele realiteit
Presentaties seminar de virtuele realiteit
 
5 Cloud Commandments - Why Cloud Management Makes Sense
5 Cloud Commandments - Why Cloud Management Makes Sense5 Cloud Commandments - Why Cloud Management Makes Sense
5 Cloud Commandments - Why Cloud Management Makes Sense
 
14h00 aws deck-summit2012_sap_on_aws_s_jones_final
14h00   aws deck-summit2012_sap_on_aws_s_jones_final14h00   aws deck-summit2012_sap_on_aws_s_jones_final
14h00 aws deck-summit2012_sap_on_aws_s_jones_final
 
Vision dt solutions vmug leeds
Vision dt solutions vmug leedsVision dt solutions vmug leeds
Vision dt solutions vmug leeds
 
Perspectives and Case Studies on Effective Theatre Base Service Management
Perspectives and Case Studies on Effective Theatre Base Service ManagementPerspectives and Case Studies on Effective Theatre Base Service Management
Perspectives and Case Studies on Effective Theatre Base Service Management
 
IBM Cloud Burst postavená na platforme IBM System x
IBM Cloud Burst postavená na platforme IBM System xIBM Cloud Burst postavená na platforme IBM System x
IBM Cloud Burst postavená na platforme IBM System x
 
Stairway to heaven webinar
Stairway to heaven webinarStairway to heaven webinar
Stairway to heaven webinar
 
Cloud Computing and System z
Cloud Computing and System zCloud Computing and System z
Cloud Computing and System z
 
2011 04-dsi-javaee-in-the-cloud-andreadis
2011 04-dsi-javaee-in-the-cloud-andreadis2011 04-dsi-javaee-in-the-cloud-andreadis
2011 04-dsi-javaee-in-the-cloud-andreadis
 
Adobe Salon Linux
Adobe Salon LinuxAdobe Salon Linux
Adobe Salon Linux
 
ITCamp 2012 - Paul Roman - Hybrid solutions in Office 365
ITCamp 2012 - Paul Roman - Hybrid solutions in Office 365ITCamp 2012 - Paul Roman - Hybrid solutions in Office 365
ITCamp 2012 - Paul Roman - Hybrid solutions in Office 365
 
Do More with Oracle Environment with Open and Best of breed Technologies
Do More with Oracle Environment with Open and Best of breed TechnologiesDo More with Oracle Environment with Open and Best of breed Technologies
Do More with Oracle Environment with Open and Best of breed Technologies
 
Comprehensive, converged integration platform: IBM Starter Kit for Cloud x86 ...
Comprehensive, converged integration platform: IBM Starter Kit for Cloud x86 ...Comprehensive, converged integration platform: IBM Starter Kit for Cloud x86 ...
Comprehensive, converged integration platform: IBM Starter Kit for Cloud x86 ...
 
Was ist neu in Exchange 2013?
Was ist neu in Exchange 2013?Was ist neu in Exchange 2013?
Was ist neu in Exchange 2013?
 
Windows azure uk universities overview march 2012
Windows azure uk universities overview march 2012Windows azure uk universities overview march 2012
Windows azure uk universities overview march 2012
 
Architecting a Private Cloud - Cloud Expo
Architecting a Private Cloud - Cloud ExpoArchitecting a Private Cloud - Cloud Expo
Architecting a Private Cloud - Cloud Expo
 
Tim Cramer, Eucaday
Tim Cramer, EucadayTim Cramer, Eucaday
Tim Cramer, Eucaday
 

Viewers also liked

Building autonomous components with OWIN, PSake, NuGet, GitVersion and Swagger
Building autonomous components with OWIN, PSake, NuGet, GitVersion and SwaggerBuilding autonomous components with OWIN, PSake, NuGet, GitVersion and Swagger
Building autonomous components with OWIN, PSake, NuGet, GitVersion and SwaggerDennis Doomen
 
The Good, The Bad and The Ugly of Event Sourcing
The Good, The Bad and The Ugly of Event SourcingThe Good, The Bad and The Ugly of Event Sourcing
The Good, The Bad and The Ugly of Event SourcingDennis Doomen
 
Why we ditched TFS and embraced Git, Github, TeamCity and Myget
Why we ditched TFS and embraced Git, Github, TeamCity and MygetWhy we ditched TFS and embraced Git, Github, TeamCity and Myget
Why we ditched TFS and embraced Git, Github, TeamCity and MygetDennis Doomen
 
How to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the footHow to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the footDennis Doomen
 
Building occasionally connected applications using event sourcing
Building occasionally connected applications using event sourcingBuilding occasionally connected applications using event sourcing
Building occasionally connected applications using event sourcingDennis Doomen
 
Little productivity tools every developer should use
Little productivity tools every developer should useLittle productivity tools every developer should use
Little productivity tools every developer should useDennis Doomen
 
Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)Dennis Doomen
 

Viewers also liked (7)

Building autonomous components with OWIN, PSake, NuGet, GitVersion and Swagger
Building autonomous components with OWIN, PSake, NuGet, GitVersion and SwaggerBuilding autonomous components with OWIN, PSake, NuGet, GitVersion and Swagger
Building autonomous components with OWIN, PSake, NuGet, GitVersion and Swagger
 
The Good, The Bad and The Ugly of Event Sourcing
The Good, The Bad and The Ugly of Event SourcingThe Good, The Bad and The Ugly of Event Sourcing
The Good, The Bad and The Ugly of Event Sourcing
 
Why we ditched TFS and embraced Git, Github, TeamCity and Myget
Why we ditched TFS and embraced Git, Github, TeamCity and MygetWhy we ditched TFS and embraced Git, Github, TeamCity and Myget
Why we ditched TFS and embraced Git, Github, TeamCity and Myget
 
How to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the footHow to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the foot
 
Building occasionally connected applications using event sourcing
Building occasionally connected applications using event sourcingBuilding occasionally connected applications using event sourcing
Building occasionally connected applications using event sourcing
 
Little productivity tools every developer should use
Little productivity tools every developer should useLittle productivity tools every developer should use
Little productivity tools every developer should use
 
Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)Git like a Pro (How to use it as it was meant to)
Git like a Pro (How to use it as it was meant to)
 

Similar to Introducing the silverlight cookbook

Dell and OpenStack
Dell and OpenStackDell and OpenStack
Dell and OpenStackeNovance
 
Monitoring thecloud openstackdaysturkey
Monitoring thecloud openstackdaysturkeyMonitoring thecloud openstackdaysturkey
Monitoring thecloud openstackdaysturkeyMohamed ELMesseiry
 
Cloud Computing: Making IT Simple
Cloud Computing: Making IT SimpleCloud Computing: Making IT Simple
Cloud Computing: Making IT SimpleBob Rhubart
 
Cloud platform technical sales presentation
Cloud platform technical sales presentationCloud platform technical sales presentation
Cloud platform technical sales presentationNuno Alves
 
Cloud Computing - Making IT Simple
 Cloud Computing - Making IT Simple Cloud Computing - Making IT Simple
Cloud Computing - Making IT SimpleBob Rhubart
 
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...Eucalyptus Systems, Inc.
 
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...Eucalyptus Systems, Inc.
 
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...Eucalyptus Systems, Inc.
 
Cloud Computing at UTM Shillong
Cloud Computing at UTM ShillongCloud Computing at UTM Shillong
Cloud Computing at UTM ShillongCapgemini
 
Christian ferber cloud platform_cloudportal
Christian ferber cloud platform_cloudportalChristian ferber cloud platform_cloudportal
Christian ferber cloud platform_cloudportalDigicomp Academy AG
 
Comparing Ruby on Rails Public vs. Private Cloud Options
Comparing Ruby on Rails Public vs. Private Cloud OptionsComparing Ruby on Rails Public vs. Private Cloud Options
Comparing Ruby on Rails Public vs. Private Cloud OptionsAltoros
 
Agile 2012 Conference briefing deck for Analyst and Press
Agile 2012 Conference briefing deck for Analyst and Press Agile 2012 Conference briefing deck for Analyst and Press
Agile 2012 Conference briefing deck for Analyst and Press Laszlo Szalvay
 
Aspects of Modern APM Solutions
Aspects of Modern APM SolutionsAspects of Modern APM Solutions
Aspects of Modern APM Solutionsnlwebperf
 
Cloud Computing - Making IT Simple
Cloud Computing - Making IT SimpleCloud Computing - Making IT Simple
Cloud Computing - Making IT SimpleBob Rhubart
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012Arun Gupta
 
Oracle Cloud Reference Architecture
Oracle Cloud Reference ArchitectureOracle Cloud Reference Architecture
Oracle Cloud Reference ArchitectureBob Rhubart
 
M3 Modernization Case Study
M3 Modernization Case StudyM3 Modernization Case Study
M3 Modernization Case StudyADC Austin Tech
 
Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)
Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)
Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)RightScale
 

Similar to Introducing the silverlight cookbook (20)

Dell and OpenStack
Dell and OpenStackDell and OpenStack
Dell and OpenStack
 
Monitoring thecloud openstackdaysturkey
Monitoring thecloud openstackdaysturkeyMonitoring thecloud openstackdaysturkey
Monitoring thecloud openstackdaysturkey
 
Cloud Computing: Making IT Simple
Cloud Computing: Making IT SimpleCloud Computing: Making IT Simple
Cloud Computing: Making IT Simple
 
Cloud platform technical sales presentation
Cloud platform technical sales presentationCloud platform technical sales presentation
Cloud platform technical sales presentation
 
Cloud Computing - Making IT Simple
 Cloud Computing - Making IT Simple Cloud Computing - Making IT Simple
Cloud Computing - Making IT Simple
 
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
 
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
 
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
How to Transform Enterprise Applications to On-premise Clouds with Wipro and ...
 
Cloud Computing at UTM Shillong
Cloud Computing at UTM ShillongCloud Computing at UTM Shillong
Cloud Computing at UTM Shillong
 
Christian ferber cloud platform_cloudportal
Christian ferber cloud platform_cloudportalChristian ferber cloud platform_cloudportal
Christian ferber cloud platform_cloudportal
 
Comparing Ruby on Rails Public vs. Private Cloud Options
Comparing Ruby on Rails Public vs. Private Cloud OptionsComparing Ruby on Rails Public vs. Private Cloud Options
Comparing Ruby on Rails Public vs. Private Cloud Options
 
Agile 2012 Conference briefing deck for Analyst and Press
Agile 2012 Conference briefing deck for Analyst and Press Agile 2012 Conference briefing deck for Analyst and Press
Agile 2012 Conference briefing deck for Analyst and Press
 
Aspects of Modern APM Solutions
Aspects of Modern APM SolutionsAspects of Modern APM Solutions
Aspects of Modern APM Solutions
 
Cloud Computing - Making IT Simple
Cloud Computing - Making IT SimpleCloud Computing - Making IT Simple
Cloud Computing - Making IT Simple
 
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
WebLogic 12c Developer Deep Dive at Oracle Develop India 2012
 
Demystifying System Center 2012
Demystifying System Center 2012Demystifying System Center 2012
Demystifying System Center 2012
 
Oracle Cloud Reference Architecture
Oracle Cloud Reference ArchitectureOracle Cloud Reference Architecture
Oracle Cloud Reference Architecture
 
Private cloud in a box
Private cloud in a boxPrivate cloud in a box
Private cloud in a box
 
M3 Modernization Case Study
M3 Modernization Case StudyM3 Modernization Case Study
M3 Modernization Case Study
 
Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)
Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)
Rightscale Webinar: Designing Private & Hybrid Clouds (Hosted by Citrix)
 

More from Dennis Doomen

Getting a grip on your code dependencies (2023-10)
Getting a grip on your code dependencies (2023-10)Getting a grip on your code dependencies (2023-10)
Getting a grip on your code dependencies (2023-10)Dennis Doomen
 
Tools and practices to help you deal with legacy code
Tools and practices to help you deal with legacy codeTools and practices to help you deal with legacy code
Tools and practices to help you deal with legacy codeDennis Doomen
 
What you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloadsWhat you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloadsDennis Doomen
 
Getting a grip on your code dependencies
Getting a grip on your code dependenciesGetting a grip on your code dependencies
Getting a grip on your code dependenciesDennis Doomen
 
My Laws of Test Driven Development (2023)
My Laws of Test Driven Development (2023)My Laws of Test Driven Development (2023)
My Laws of Test Driven Development (2023)Dennis Doomen
 
Design patterns for Event Sourcing in .NET
Design patterns for Event Sourcing in .NETDesign patterns for Event Sourcing in .NET
Design patterns for Event Sourcing in .NETDennis Doomen
 
Automate Infrastructure with Pulumi and C#
Automate Infrastructure with Pulumi and C#Automate Infrastructure with Pulumi and C#
Automate Infrastructure with Pulumi and C#Dennis Doomen
 
What is the right unit in unit testing (UpdateConf 2022)
What is the right unit in unit testing (UpdateConf 2022)What is the right unit in unit testing (UpdateConf 2022)
What is the right unit in unit testing (UpdateConf 2022)Dennis Doomen
 
Slow Event Sourcing (re)projections - Just make them faster!
Slow Event Sourcing (re)projections - Just make them faster!Slow Event Sourcing (re)projections - Just make them faster!
Slow Event Sourcing (re)projections - Just make them faster!Dennis Doomen
 
50 things software teams should not do.pptx
50 things software teams should not do.pptx50 things software teams should not do.pptx
50 things software teams should not do.pptxDennis Doomen
 
What is the right "unit" in unit testing and why it is not a class?
What is the right "unit" in unit testing and why it is not a class?What is the right "unit" in unit testing and why it is not a class?
What is the right "unit" in unit testing and why it is not a class?Dennis Doomen
 
A lab around the principles and practices for writing maintainable code
A lab around the principles and practices for writing maintainable codeA lab around the principles and practices for writing maintainable code
A lab around the principles and practices for writing maintainable codeDennis Doomen
 
How to Practice TDD Without Shooting Yourself in the Foot
How to Practice TDD Without Shooting Yourself in the FootHow to Practice TDD Without Shooting Yourself in the Foot
How to Practice TDD Without Shooting Yourself in the FootDennis Doomen
 
Decomposing the Monolith using modern-day .NET and a touch of microservices
Decomposing the Monolith using modern-day .NET and a touch of microservicesDecomposing the Monolith using modern-day .NET and a touch of microservices
Decomposing the Monolith using modern-day .NET and a touch of microservicesDennis Doomen
 
Event Sourcing from the Trenches (DDD Europe 2020)
Event Sourcing from the Trenches (DDD Europe 2020)Event Sourcing from the Trenches (DDD Europe 2020)
Event Sourcing from the Trenches (DDD Europe 2020)Dennis Doomen
 
Practical introduction to DDD, CQRS and Event Sourcing
Practical introduction to DDD, CQRS and Event SourcingPractical introduction to DDD, CQRS and Event Sourcing
Practical introduction to DDD, CQRS and Event SourcingDennis Doomen
 
How to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the footHow to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the footDennis Doomen
 
Decomposing the Monolith (Riga Dev Days 2019)
Decomposing the Monolith (Riga Dev Days 2019)Decomposing the Monolith (Riga Dev Days 2019)
Decomposing the Monolith (Riga Dev Days 2019)Dennis Doomen
 
A lab around the principles and practices for writing maintainable code (2019)
A lab around the principles and practices for writing maintainable code (2019)A lab around the principles and practices for writing maintainable code (2019)
A lab around the principles and practices for writing maintainable code (2019)Dennis Doomen
 
Lessons learned from two decades of professional software development
Lessons learned from two decades of professional software developmentLessons learned from two decades of professional software development
Lessons learned from two decades of professional software developmentDennis Doomen
 

More from Dennis Doomen (20)

Getting a grip on your code dependencies (2023-10)
Getting a grip on your code dependencies (2023-10)Getting a grip on your code dependencies (2023-10)
Getting a grip on your code dependencies (2023-10)
 
Tools and practices to help you deal with legacy code
Tools and practices to help you deal with legacy codeTools and practices to help you deal with legacy code
Tools and practices to help you deal with legacy code
 
What you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloadsWhat you can learn from an open-source project with 250 million downloads
What you can learn from an open-source project with 250 million downloads
 
Getting a grip on your code dependencies
Getting a grip on your code dependenciesGetting a grip on your code dependencies
Getting a grip on your code dependencies
 
My Laws of Test Driven Development (2023)
My Laws of Test Driven Development (2023)My Laws of Test Driven Development (2023)
My Laws of Test Driven Development (2023)
 
Design patterns for Event Sourcing in .NET
Design patterns for Event Sourcing in .NETDesign patterns for Event Sourcing in .NET
Design patterns for Event Sourcing in .NET
 
Automate Infrastructure with Pulumi and C#
Automate Infrastructure with Pulumi and C#Automate Infrastructure with Pulumi and C#
Automate Infrastructure with Pulumi and C#
 
What is the right unit in unit testing (UpdateConf 2022)
What is the right unit in unit testing (UpdateConf 2022)What is the right unit in unit testing (UpdateConf 2022)
What is the right unit in unit testing (UpdateConf 2022)
 
Slow Event Sourcing (re)projections - Just make them faster!
Slow Event Sourcing (re)projections - Just make them faster!Slow Event Sourcing (re)projections - Just make them faster!
Slow Event Sourcing (re)projections - Just make them faster!
 
50 things software teams should not do.pptx
50 things software teams should not do.pptx50 things software teams should not do.pptx
50 things software teams should not do.pptx
 
What is the right "unit" in unit testing and why it is not a class?
What is the right "unit" in unit testing and why it is not a class?What is the right "unit" in unit testing and why it is not a class?
What is the right "unit" in unit testing and why it is not a class?
 
A lab around the principles and practices for writing maintainable code
A lab around the principles and practices for writing maintainable codeA lab around the principles and practices for writing maintainable code
A lab around the principles and practices for writing maintainable code
 
How to Practice TDD Without Shooting Yourself in the Foot
How to Practice TDD Without Shooting Yourself in the FootHow to Practice TDD Without Shooting Yourself in the Foot
How to Practice TDD Without Shooting Yourself in the Foot
 
Decomposing the Monolith using modern-day .NET and a touch of microservices
Decomposing the Monolith using modern-day .NET and a touch of microservicesDecomposing the Monolith using modern-day .NET and a touch of microservices
Decomposing the Monolith using modern-day .NET and a touch of microservices
 
Event Sourcing from the Trenches (DDD Europe 2020)
Event Sourcing from the Trenches (DDD Europe 2020)Event Sourcing from the Trenches (DDD Europe 2020)
Event Sourcing from the Trenches (DDD Europe 2020)
 
Practical introduction to DDD, CQRS and Event Sourcing
Practical introduction to DDD, CQRS and Event SourcingPractical introduction to DDD, CQRS and Event Sourcing
Practical introduction to DDD, CQRS and Event Sourcing
 
How to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the footHow to practice TDD without shooting yourself in the foot
How to practice TDD without shooting yourself in the foot
 
Decomposing the Monolith (Riga Dev Days 2019)
Decomposing the Monolith (Riga Dev Days 2019)Decomposing the Monolith (Riga Dev Days 2019)
Decomposing the Monolith (Riga Dev Days 2019)
 
A lab around the principles and practices for writing maintainable code (2019)
A lab around the principles and practices for writing maintainable code (2019)A lab around the principles and practices for writing maintainable code (2019)
A lab around the principles and practices for writing maintainable code (2019)
 
Lessons learned from two decades of professional software development
Lessons learned from two decades of professional software developmentLessons learned from two decades of professional software development
Lessons learned from two decades of professional software development
 

Recently uploaded

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 

Recently uploaded (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 

Introducing the silverlight cookbook

  • 1. Introducing the Silverlight Cookbook Why, what, how and when Dennis Doomen © 2011 Aviva Solutions dennis.doomen@avivasolutions.nl 25 februari 2012
  • 2. About Me • Principal Consultant • 14 years IT experience • C++ origins but C# since 2001 • Specialties • .NET Architecture • Scrum/XP • ALM • Speaker • Public initiatives • Silverlight Cookbook • C# Coding Guidelines • Fluent Assertions • Internet • www.dennisdoomen.net • DZone MVB • @ddoomen © 2011 Aviva Solutions Dennis Doomen 25 februari 2012
  • 3. Defining an architecture 1. Collect non-functionals 2. Determine deployment environment 3. Determine usage 4. Select engineering principles 5. Read between the lines 6. Select technology 7. Define reference architecture 8. Build & adapt © 2011 Aviva Solutions Dennis Doomen 25 februari 2012
  • 4. Design Decisions • Tiers vs. Layers • Integration • Distribution • Scalability • Security • Deployment • Diagnostics • Reliability © 2011 Aviva Solutions Dennis Doomen 25 februari 2012
  • 5. The Silverlight Cookbook • Silverlight 5 • Fully automated testing (almost ) • Complex domain logic • Task Based • Scalable • Responsive • Any relational DB • Overkill for most applications, so pick & choose © 2011 Aviva Solutions Dennis Doomen 25 februari 2012
  • 6. The traditional architecture… © 2011 Aviva Solutions 25 februari 2012
  • 7. Shell Views (XAML + C#)  Well-known  Rich domain models Silverlight 5 View Models  Many frameworks Application Controller  Very flexibele Service Agent × Lots of work × Lots of plumbing needed × Not using RIA frameworks DTOs × DTO conversion troubles × No eager loading WCF Service Interface Service Actions Domain Model Workflows Nhibernate 3.x (+ Fluent) Repositories Unit-of-Work Service Agents Backoffice External Database System Service © 2011 Aviva Solutions 25 februari 2012
  • 8. As Microsoft wants it… © 2011 Aviva Solutions 25 februari 2012
  • 9. Shell Views (XAML + C#)  Easy to build  Silverlight 5 View Models Simple domain models  Less plumbing needed Application Controller  No DTO conversions needed Domain Context  Maximizes RIA frameworks  WCF RIA Services Great for CRUD  Batching Changesets × CRUD-based × Domain model not possible Domain Service × No dynamic relationship Entities Business Actions loading × Almost enum support Entity Framework Service Agents × No 2nd level caching Backoffice External Database System Service © 2011 Aviva Solutions 25 februari 2012
  • 10. Then what? © 2011 Aviva Solutions 25 februari 2012
  • 11. Shell Views (XAML + C#) Caliburn Micro Silverlight 5 AutoFac Coroutines View Models Application Controller Service Agent Bootstrapper WCF Data Services DTOs Commands Query Services Command Service Event Handlers Command Handlers AutoFac Logging Nhibernate 3.x (+ Fluent) Domain Events Domain Model Repositories Unit of Work Service Agents Backoffice External Database System Service © 2011 Aviva Solutions 25 februari 2012
  • 12. Commanding Concurrency Validation Querying Testability Business Rules Recipes Data Access Deployment Exception Handling IoC Composition Logging Asynchronity © 2011 Aviva Solutions 25 februari 2012
  • 13. What’s Next? • Nicer Design • WinRT? HTML5? • Query Optimization • Key-Based Commanding • More CQRS • Authentication • Authorization • Globalization • Fluent Migration © 2011 Aviva Solutions Dennis Doomen 25 februari 2012
  • 14. Background Information MVVM, Coroutines, Commanding, Querying, Domain Events, Testable Repository Pattern Example Code, Frameworks Silverlight Cookbook, Caliburn Micro, AutoFac, NHibernate, Fluent NHibernate, Fluent Assertions © 2011 Aviva Solutions 25 februari 2012
  • 15. Email dennis.doomen@avivasolutions.nl Twitter @ddoomen Blog www.dennisdoomen.net © 2011 Aviva Solutions 25 februari 2012