Upload
dennis-doomen
View
1.625
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
© 2011 Aviva Solutions 10 april 2023
Introducing the Silverlight CookbookWhy, what, how and when
Dennis Doomen
© 2011 Aviva Solutions 10 april 2023Dennis Doomen
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 10 april 2023Dennis Doomen
Defining an architecture1. Collect non-functionals2. Determine deployment environment3. Determine usage4. Select engineering principles5. Read between the lines6. Select technology7. Define reference architecture8. Build & adapt
© 2011 Aviva Solutions 10 april 2023Dennis Doomen
Design Decisions• Tiers vs. Layers• Integration• Distribution• Scalability• Security• Deployment• Diagnostics• Reliability
© 2011 Aviva Solutions 10 april 2023
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
Dennis Doomen
© 2011 Aviva Solutions 10 april 2023
The traditional architecture…
© 2011 Aviva Solutions 10 april 2023
Service Agent
DTOs
View Models
Views (XAML + C#)
Domain Model
Repositories
Database
Nhibe
rnate 3.x
(+ Fluen
t)WCF
Silverlight 5
Unit-of-Work Service Agents
Shell
Backoffice System
Application Controller
Service Interface
Workflows
External Service
Service Actions
Well-known Rich domain models Many frameworks Very flexibele× Lots of work× Lots of plumbing needed× Not using RIA frameworks× DTO conversion troubles× No eager loading
© 2011 Aviva Solutions 10 april 2023
As Microsoft wants it…
© 2011 Aviva Solutions 10 april 2023
Domain Context
Changesets
View Models
Views (XAML + C#)
Entities
Database
WCF RIA Services
Silverlight 5
Entity Framework Service Agents
Shell
Backoffice System
Application Controller
Domain Service
External Service
Easy to build Simple domain models Less plumbing needed No DTO conversions needed Maximizes RIA frameworks Great for CRUD Batching× CRUD-based× Domain model not possible× No dynamic relationship
loading× Almost enum support× No 2nd level caching
Business Actions
© 2011 Aviva Solutions 10 april 2023
Then what?
© 2011 Aviva Solutions 10 april 2023
Service Agent
DTOs
View Models
Views (XAML + C#)
Domain Model
Repositories
Command Handlers
Database
Nhibe
rnate 3.x
(+ Fluen
t)WCF Data Services
Silverlight 5
Unit of Work Service Agents
Domain Events
Logging
Shell
Bootstrapper
Caliburn Micro
AutoFac
AutoFac
Coroutines
Backoffice System
Application Controller
Command Service
Commands
Event Handlers
Query Services
External Service
© 2011 Aviva Solutions 10 april 2023
Recipes
Commanding
Querying
Deployment
Composition
IoC
Data Access
Concurrency
Asynchronity
Testability
Validation
Business Rules
Exception Handling
Logging
© 2011 Aviva Solutions 10 april 2023Dennis Doomen
What’s Next?• Nicer Design• WinRT? HTML5?• Query Optimization• Key-Based Commanding• More CQRS• Authentication• Authorization• Globalization• Fluent Migration
© 2011 Aviva Solutions 10 april 2023
Background InformationMVVM, Coroutines, Commanding, Querying, Domain Events, Testable Repository Pattern
Example Code, FrameworksSilverlight Cookbook, Caliburn Micro, AutoFac, NHibernate, Fluent NHibernate, Fluent Assertions