8. Coupling: Solutions
Platform:
•XML on the wire.
•XSD (schema) describing XML structure
•Use standards based transfer protocol like http
•Standards based description of message flow
•WSDL (only supports request/response)
•SSDL(supports richer semantics)
17. Subscribe to
Customer Status Updated
Publish
Customer Status Updated
Save status locally
Subscribe to Product PricingProduct Pricing
UpdatedUpdated
Publish
Product Pricing Updated
Save pricing locally
Place Order
Publish Order Accepted
Sales
MarketingCustomer
Care
19. Learn to build better systems
from Udi Dahan
Advanced Distributed Systems Design
2 days (out of 5) for FREE
Join us at the Particular booth
for more information
I’ve been hacking code for a living in the last 20 years
In 2009 I’ve made a move to Service Oriented Architecture using NServiceBus, it was a paradigm shift that changed the way I do software
We all probably been there
Start with a green field, small monolith, clean design
Then the business succeeds, we add features and our clean code gets littered with more code to cater for more features
We soon find ourselves dreading change anything…
You know I went trough this a couple of times, each trying a different approach
But the result was always the same…
Insanity: doing the same thing over and over again and expecting different results.
So I went to my master…
YODA! What am I doing wrong?
I’m doing everything by the book,
n-tier, layers and tiers.
I even tried web services…
Nothing seams to work!
1: Boundaries are explicit
2: Services are autonomous
3: Services share schema & contract, not class
4: Service compatibility is based upon policy
#1: Platform
Also known as “Interoperability”
Using protocols only available on one platform
Remoting, Enterprise Services, Datasets over Web Services
One of the famous 4 Tenets: “Share contract and schema, not class or type”
1: Boundaries are explicit
2: Services are autonomous
3: Services share schema & contract, not class
4: Service compatibility is based upon policy
Transactions & Temporal Coupling
Asynchronous messaging makes it difficult to have transactions cross boundaries
Don’t let transactions flow between services
Autonomy means not letting any one lock or modify something that’s yours
1: Boundaries are explicit
2: Services are autonomous
3: Services share schema & contract, not class
4: Service compatibility is based upon policy