1 / 32

How to Swing a Service Bus Like You Mean It

How to Swing a Service Bus Like You Mean It. SOA with NServiceBus. Jim Pelletier @pjimmy mail@thejimmyp.com. What is NServiceBus?. Asynchronous Messaging Framework Durable messaging with MSMQ Moderately Opinionated Event Driven Autonomous Services as opposed to RPC Web Services.

darius
Download Presentation

How to Swing a Service Bus Like You Mean It

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. How to Swing a Service Bus Like You Mean It SOA with NServiceBus Jim Pelletier @pjimmy mail@thejimmyp.com

  2. What is NServiceBus? • Asynchronous Messaging Framework • Durable messaging with MSMQ • Moderately Opinionated • Event Driven Autonomous Services as opposed to RPC Web Services

  3. Yeah? So… What about it? SOA Provides: • Freedom of design and implementation • Unprecedented flexibility for growth & change • Waste nearly no code on pure technical concerns SOA with Messaging VS. N-Tier with RPC

  4. Outline & Disclaimer • Just presenting a different possibility • Mainly talking and pictures, with a little code: • Intro to Messaging with NServiceBus • Messaging Patterns • Modeling using Messages • Autonomous Services, Boundaries and Decoupling via Messaging • Architecture Overview • SOA Composite Application Demo

  5. Messaging with Queues Send Receive Queue Queue App App Makes for inherently asynchronous systems able to deal with spikes in load

  6. Messaging with Transactional Queues Tx Tx Send Receive Queue Queue Save or Update App App Rollback Rollback Makes robust applications simple to implement

  7. Messaging with Durable Queues = Store & Forward Tx Tx Send Receive Queue Queue App App Provides an alternative and elegant solution to availability & data loss

  8. Durable Transactional Queues = Fire & Forget Tx Tx Send Receive Queue Queue App App Which we leverage thru NServiceBus to build much simpler, more flexible and scalable solutions

  9. Subscriber Publisher Subscribe Subscriber Subscriber Subscriber Subscriber

  10. Subscriber Publisher abcdefgh abcdefgh abcdefgh abcdefgh abcdefgh Subscriber Subscriber Subscriber Subscriber

  11. Decisions Based on Past Events Order Service Place Order Order Placed Billing Service Current Debt > Max Debt Customer Billed Customer ID Max Debt Current Balance Set Max Debit For Customer

  12. Code Demo: Stock Trading Website Ordering Service Web UI Web UI UI Place Order IBM +7.56 APPL -2.3 GOOG +0.34 Order Accepted INTC +0.34 MSFT -5.6 Billing Service Stock Ticker Service Customer Billed

  13. Modeling with Messages Service Command Events Service Service Service Events

  14. Modeling with commands & events Customer Service Update Customer Customer Updated Address Service Validation Service Transaction Service

  15. Modeling with commands & events Order Service Place Order Order Placed Shipping Service Order Shipped Billing Service Order Billed Customer Care Service Customer Notified of Order Placed

  16. Polymorphism, BC’s and DDD oh my! Orders Service Handle Place Order Place Order Order Accepted Order Accepted Handle Place Order Handle First Order Sales Service Place Customers First Order Send Customer Catalogue & Order Forms New Lead Identified

  17. What is a service? Some codewhich exists exclusively as part of a service providing the sole source of a given business capability to an organization

  18. What is a service? It is made up of: An Autonomous Service MVC Controllers & Views XAML & Presenters • No “Orchestration” code • No“Management” code • No Transformation code • NoData Access code • NoData “Munging” code • NoError Handling • No Unreachable code • Nounintended or unused code paths • No code except business abstractions Business Logic Message Handlers Some Persistent Store

  19. What else is a service? • Services are autonomous

  20. Decoupling with a Message Schema Mgs Schema A Mgs Schema B Service A Service B Bus

  21. Composed application User Application Executable Layout & Branding Service Product Catalogue Service Pricing Service Order Service Billing Service NSB Host Exec(s). NSB Host Exec(s). NSB Host Exec(s). NSB Host Exec(s). Bus

  22. Code Demo – CrazyJimsSOA • Composing a UI from many logically distinct components

  23. Layout & Branding Service MVC Controllers HTML + JavaScript Pricing Service Catalogue Service Ordering Service MVC Controllers MVC Controllers MVC Controllers

  24. Layout & Branding Service MVC Controllers HTML + JavaScript {JSON} + <jTemplate \> {JSON} + <jTemplate \> {JSON} + <jTemplate \> Pricing Service Catalogue Service Ordering Service MVC Controllers MVC Controllers MVC Controllers

  25. #WIN like this… • Freedom of design and implementation • Unprecedented flexibility for growth & change • Waste nearly no code on pure technical concerns

  26. Thanks & Resources • Thanks to @UdiDahan checkout his ADSD course! - http://www.udidahan.com/training/#Advanced_Distributed_System_Design • NServiceBus Website (Documentation & Community Sections are great) – http://www.nservicebus.com/ • Distributed Podcast - http://distributedpodcast.com/ • NServiceBus Mailing List - http://tech.groups.yahoo.com/group/nservicebus/ • Other Mailing Lists – • http://groups.google.com/group/dddcqrs?pli=1 • http://tech.groups.yahoo.com/group/service-orientated-architecture/ • http://tech.groups.yahoo.com/group/domaindrivendesign/messages

  27. Questions?

  28. How to Swing a Service Bus Like You Mean It SOA with NServiceBus Jim Pelletier @pjimmy mail@thejimmyp.com

  29. AC’s, BC’s and DDD oh my! Order Service Order Placement UI running in a web site Order Processing running in NServiceBus.Host.exe

  30. What is CQRS? AC -Persistent View Model Store UI Queries View Model Updaters Events AC – Business Logic Command Handlers Commands

  31. Where does CQRS fit in the picture? User Application Executable Layout & Branding Service Product Service Pricing Service Order Service Billing Service Commands Commands Events NSB Host Exec(s). NSB Host Exec(s). NSB Host Exec(s). NSB Host Exec(s). Bus

More Related