Domain Driven Design Using.NET Dave Rael. What’s wrong with this code? Public void CallMethodThatMightThrowScaryException(int carelessInputWithoutValidation)

Slides:



Advertisements
Similar presentations
The Business of Recombinant Data Eric Miller
Advertisements

DCMI Architecture: Metadata Entities and Relationships Dublin Core 8 Workshop National Library of Canada, Ottawa Eric Miller,
Introduction RIMResistance is Futile, you Will be Assimilated!
1 An Approach for Repeatable Sensor Web Construction WGISS – 25 Sanya, Hainan Island, China February 25, 2008.
Rethink your architecture with CQRS Pieter Joost van de Sande Passionated software developer, Atos pjvds.
Behavior-Driven Development
IT Requirements Capture Process. Motivation for this seminar Discovering system requirements is hard. Formally testing use case conformance is hard. We.
Sitefinity 4.0 Fluent API.
Not all of a large system will be well designed..
Craig Berntson
Key takeaway Go beyond Domain Model and move towards CQRS (related session B313)
L4-1-S1 UML Overview © M.E. Fayad SJSU -- CmpE Software Architectures Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I.
Understanding Metamodels. Outline Understanding metamodels Applying reference models Fundamental metamodel for describing software components Content.
Basic Concepts Chapter 1 Objectives
Introduction to AppInventor Dr. José M. Reyes Álamo.
Nathaniel Neitzke Lighthouse1, LLC
Entity Framework, a quickstart Florin−Tudor Cristea, Microsoft Student Partner.
Domain-Driven Design using the ADO.NET Entity Framework Tim McCarthy Principal Engineer, InterKnowlogy
Domain Driven Design Agile SIG Talk Richard Walls.
Domain-Driven Design Tim McCarthy Principal Engineer, InterKnowlogy
Building an Offline Smart Client using Domain-Driven Design Principles Tim McCarthy.
Domain Driven Design Ryan Riley Catapult Systems, Inc.
Database Management System Prepared by Dr. Ahmed El-Ragal Reviewed & Presented By Mr. Mahmoud Rafeek Alfarra College Of Science & Technology Khan younis.
Chapter 6: Structured Vs. Object Oriented Analysis and Design.
Creational Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
Odyssey A Reuse Environment based on Domain Models Prepared By: Mahmud Gabareen Eliad Cohen.
Patterns and Reuse. Patterns Reuse of Analysis and Design.
Domain Driven Design With the Particular Platform NServiceBus Dave Rael.
Lecture 3 Uses Cases Topics UML Use Cases pop quiz Readings: Chapter 3 January 24, 2008 CSCE 492 Software Engineering.
Workshop Information Models in Software Projects
© 2009 Pearson Education, Inc. Publishing as Prentice Hall 1 Chapter 15: Object-Oriented Data Modeling Modern Database Management 9 h Edition Jeffrey A.
GRASP: Designing Objects with Responsibilities
Domain and Persistence Patterns. Fundamental Pattern Types Design Patterns Business Logic Patterns.
Applying Domain-Driven Design Jimmy Nilsson Webcast with UML China
L6-S1 UML Overview 2003 SJSU -- CmpE Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College.
Automated Acceptance Testing and Continuous Delivery Larry Apke Agile Expert
CS 772: Global Knowledge Networks V. “Juggy” Jagannathan CSEE, West Virginia University.
Telerik Software Academy Software Quality Assurance Binding business requirements to.NET code.
Introducing… Apache Isis
Copyright ©2004 Virtusa Corporation | CONFIDENTIAL Requirement Engineering Virtusa Training Group 2004 Trainer: Ojitha Kumanayaka Duration : 1 hour.
Clinical Research Platform Center for Biomedical Informatics (CBMI)
Conceptual design Tells the customer what the system will do Tells the customer what the system will do Answers: Answers: Where will the data come from?
Domain-Driven Design for the Database-Driven Mind
consultant/mentor Microsoft MVP, INETA Speaker, ASPInsider, MCP, VTdotNET Leadercontact twitter theDataFarm.com/blog.
ICIST 2011 Mar , Nanjing, China Visualization in Software Architecture Helen Wu 1 Let’s Enforce a Simple Rule in Software Architecture Helen.
EF + DDD = true? by Jimmy Nilsson. About Jimmy Nilsson Primarily a developer and architect, but also a trainer and author Blog: JimmyNilsson.com/blog/
Introducing… Apache Isis. Ubiquitous Language With a conscious effort by the team, the domain model can provide the backbone for that common language.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Breaking Up Is Hard To Do From Monolith to Microservices.
Thank you to our sponsors!. Domain Driven Design Using.NET Dave Rael.
DOMAIN DRIVEN DESIGN Dave 12 May WHAT IS DDD? Set of principles to aid in building complex systems Enables us to focus on core problem domain NOT.
Domain Driven Design Day 2. DDD | Supple Design Inviting to change Reveals a deep model But … has no formula “… when complexity is holding back progress,
Models of the OASIS SOA Reference Architecture Foundation Ken Laskey Chair, SOA Reference Model Technical Committee 20 March 2013.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
7.5 Using Stored-Procedure and Triggers NAME MATRIC NUM GROUP Muhammad Azwan Bin Khairul Anwar CS2305A Muhammad Faiz Bin Badrol Shah CS2305B.
Lecture 5 Page 1 CS 111 Summer 2013 Bounded Buffers A higher level abstraction than shared domains or simple messages But not quite as high level as RPC.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Design Patterns CSCE 315 – Programming Studio Spring 2013.
FESA Overview Leandro Fernandez On behalf of the FESA Team 6/22/2010FESA Overview1.
User Stories > Big and Small
Object-oriented and Structured System Models
Gang of Four’s Design Patterns for Microservices
Introduction to Design Patterns
Chapter 6: Structured Vs. Object Oriented Analysis and Design.
MVC and Design Patterns
Pragmatic Event-Driven Microservices
Patterns.
Chapter 6: Structured Vs. Object Oriented Analysis and Design.
Introduction to BDD. Introduction to BDD “BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation,
From Use Cases to Implementation
Presentation transcript:

Domain Driven Design Using.NET Dave Rael

What’s wrong with this code? Public void CallMethodThatMightThrowScaryException(int carelessInputWithoutValidation) { MethodThatMightThrowScaryException(carelessInputWithoutValidation); } catch (Exception exception) { HandleException(exception); }

“There is no try.”

Why Domain-Driven? Collaboration Ubiquitous Language Using Composition to address complexity in large systems “Not all of a large system will be well-designed.” –Eric Evans “Is BDD the same as TDD? Yes. If you’re a programmer, and your entire team is programmers, and all your stakeholders are programmers…” –Dan North

The alternative – One database schema to rule them all

Pain!

Bounded Contexts

Bounded Contexts (or Services) (or Silos)

Domain-Driven Design Ubiquitous Language Bounded Contexts Domain Events Top-Level System Architecture

Domain Driven Design Ubiquitous Language Aggregates CQRS Architecture/Implementation Within a Bounded Context

Fitting It Together public interface IDomainDrivenDesign { } public abstract class ServiceOrientedArchitecture : IDomainDrivenDesign { } public class YourDomain : ServiceOrientedArchitecture { }

Commands Sent rather than Published Imperative Issued with authority to command (within a bounded context) DestroyPlanetCommand LaunchProtonTorpedoesCommand

Events Published rather than Sent Past-tense Describe an event that has already happened “Look what I have done!” PlanetDestroyedEvent ProtonTorpedoesLaunchedEvent UrineDepositedInToiletEvent

Commands And Events Bus.Send (); Bus.Reply (); Bus.Publish ();

Stuff to Clone Loans Fines

You will use a Domain-Driven Design Approach