SlideShare a Scribd company logo
SOA
With NServiceBus
     Sean Farmar
What is the problem
   we are trying to solve?

• Scale
• Growth
• Stability and Durability
Why SOA?
• SOA's tenets are about reducing coupling.
Why SOA? [cont.]
• Coupling:
 • Afferent, efferent
 • Temporal
 • Spatial
 • Platform
n-tier architecture
In practice
In practice

• Domain decomposition
• Definition of components boundaries
• Using messaging and pub/sub
Publish Subscribe
    [pub/sub]
Publish Subscribe
    [pub/sub]
In practice [cont.]
•   Following principles (best thinking):
    •   Explicit intentions [naming, context]
    •   Single Responsibility
    •   Command Query Separation
    •   Drive your design and decision making to
        address all aspects of coupling
    •   Backwards compatibility
Why NServiceBus?

• .Net Solution
• Distributed bus (not a broker)
• Messaging pub/sub (asynchronous)
• Durable and Transactional (if you want)
• Sagas
Why NServiceBus? [cont.]
• A Message
 [Serializable]
 public class EventMessage : IMyEvent
 {
        public Guid EventId { get; set; }
        public DateTime? Time { get; set; }
 }

 public interface IMyEvent
 {
        Guid EventId { get; set; }
        DateTime? Time { get; set; }
        TimeSpan Duration { get; set; }
 }

 var m = new EventMessage();
 // Or:
 var m = Bus.CreateInstance<IMyEvent>();
Why NServiceBus? [cont.]
    • Handler
public IBus Bus { get; set; }

public class EventMessageHandler : IHandleMessages<EventMessage>
       {
             public void Handle(EventMessage message)
             {
                    // do stuff...
                    IMyEvent anotherEventMessage;

                    anotherEventMessage = Bus.CreateInstance<IMyEvent>();

                    anotherEventMessage = Guid.NewGuid();

                    anotherEventMessage = DateTime.Now.Second;

                    anotherEventMessage = TimeSpan.FromSeconds(99999D);

                    Bus.Publish(anotherEventMessage);
             }
      }
Service Examples
                                                          Place Order

                                  Sales
 Save status locally                                Save pricing locally


                                                     Subscribe to Product Pricing
Subscribe to Customer Status                            Updated
   Updated

                            Publish
                            Product Pricing Updated
                       Publish
   Customer            Customer Status Updated                          Marketing
     Care                        Publish Order Accepted
Why NServiceBus? [cont.]
         • Config
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig,
NServiceBus.Core"/>
    <section name="MessageForwardingInCaseOfFaultConfig"
type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
  </configSections>
  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/>
  <UnicastBusConfig ForwardReceivedMessagesTo="audit">
    <MessageEndpointMappings>
      <add Messages="MyMessages" Endpoint="MyServer"/>
    </MessageEndpointMappings>
  </UnicastBusConfig>
</configuration>
Why NServiceBus? [cont.]
• Integration
• Scalable
• Elegant programming model
• Developer productivity
• Used in the industry
A story about
performance
A story about
       performance
• The evolution
A story about
        performance
• Turning the lights on
A story about
       performance

• Performance and Load testing
• Fixing it
• How did NServiceBus make it better?
Summary

• SOA
• NServiceBus
• You can do it
Q&A
Thank You!
nservicebus.com
udidahan.com/blog
Sean Farmar
twitter: @farmar

More Related Content

What's hot

Messaging in the cloud - Azure Service Bus
Messaging in the cloud - Azure Service BusMessaging in the cloud - Azure Service Bus
Messaging in the cloud - Azure Service Bus
Sean Feldman
 
Making communications across boundaries simple with NServiceBus
Making communications across boundaries simple with NServiceBusMaking communications across boundaries simple with NServiceBus
Making communications across boundaries simple with NServiceBus
Particular Software
 
Anypoint connector dev kit
Anypoint connector dev kitAnypoint connector dev kit
Anypoint connector dev kit
Son Nguyen
 
Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016
Richard Banks
 
Top Legacy Sins
Top Legacy SinsTop Legacy Sins
Top Legacy Sins
Eberhard Wolff
 
Windows Azure Service Bus
Windows Azure Service BusWindows Azure Service Bus
Windows Azure Service Bus
Return on Intelligence
 
Productivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA TestersProductivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA TestersWSO2
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systems
Markus Eisele
 
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Tomasz Kopacz
 
Lightweight Orchestration with WSO2 ESB
Lightweight Orchestration with WSO2 ESBLightweight Orchestration with WSO2 ESB
Lightweight Orchestration with WSO2 ESBWSO2
 
Mule compatible technologies
Mule compatible technologiesMule compatible technologies
Mule compatible technologies
himajareddys
 
Mule technologies
Mule technologiesMule technologies
Mule technologies
D.Rajesh Kumar
 
Introduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric ApplicationsIntroduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric Applications
Neil Mackenzie
 
Weblogic - clustering failover, and load balancing
Weblogic - clustering failover, and load balancingWeblogic - clustering failover, and load balancing
Weblogic - clustering failover, and load balancing
Vibrant Technologies & Computers
 
Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1WSO2
 
Azure Service Bus
Azure Service BusAzure Service Bus
Azure Service Bus
Josh Lane
 
Camel Based Development Application
Camel Based Development ApplicationCamel Based Development Application
Camel Based Development Application
Return on Intelligence
 
WSO2Con USA 2015: Building Web Apps with Reusable UI Components and Composition
WSO2Con USA 2015: Building Web Apps with Reusable UI Components and CompositionWSO2Con USA 2015: Building Web Apps with Reusable UI Components and Composition
WSO2Con USA 2015: Building Web Apps with Reusable UI Components and Composition
WSO2
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web Services
Robin Howlett
 
WCF tutorial
WCF tutorialWCF tutorial
WCF tutorial
Abhi Arya
 

What's hot (20)

Messaging in the cloud - Azure Service Bus
Messaging in the cloud - Azure Service BusMessaging in the cloud - Azure Service Bus
Messaging in the cloud - Azure Service Bus
 
Making communications across boundaries simple with NServiceBus
Making communications across boundaries simple with NServiceBusMaking communications across boundaries simple with NServiceBus
Making communications across boundaries simple with NServiceBus
 
Anypoint connector dev kit
Anypoint connector dev kitAnypoint connector dev kit
Anypoint connector dev kit
 
Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016
 
Top Legacy Sins
Top Legacy SinsTop Legacy Sins
Top Legacy Sins
 
Windows Azure Service Bus
Windows Azure Service BusWindows Azure Service Bus
Windows Azure Service Bus
 
Productivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA TestersProductivity Acceleration Tools for SOA Testers
Productivity Acceleration Tools for SOA Testers
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systems
 
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
Azure paa s v2 – microservices, microsoft (azure) service fabric, .apps and o...
 
Lightweight Orchestration with WSO2 ESB
Lightweight Orchestration with WSO2 ESBLightweight Orchestration with WSO2 ESB
Lightweight Orchestration with WSO2 ESB
 
Mule compatible technologies
Mule compatible technologiesMule compatible technologies
Mule compatible technologies
 
Mule technologies
Mule technologiesMule technologies
Mule technologies
 
Introduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric ApplicationsIntroduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric Applications
 
Weblogic - clustering failover, and load balancing
Weblogic - clustering failover, and load balancingWeblogic - clustering failover, and load balancing
Weblogic - clustering failover, and load balancing
 
Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1
 
Azure Service Bus
Azure Service BusAzure Service Bus
Azure Service Bus
 
Camel Based Development Application
Camel Based Development ApplicationCamel Based Development Application
Camel Based Development Application
 
WSO2Con USA 2015: Building Web Apps with Reusable UI Components and Composition
WSO2Con USA 2015: Building Web Apps with Reusable UI Components and CompositionWSO2Con USA 2015: Building Web Apps with Reusable UI Components and Composition
WSO2Con USA 2015: Building Web Apps with Reusable UI Components and Composition
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web Services
 
WCF tutorial
WCF tutorialWCF tutorial
WCF tutorial
 

Similar to SOA with NServiceBus 20130124

Learn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
Learn Cloud-Native .NET: Core Configuration Fundamentals with SteeltoeLearn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
Learn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
VMware Tanzu
 
Making WCF Simple
Making WCF SimpleMaking WCF Simple
Making WCF Simple
Jesus Rodriguez
 
GWT MVP Case Study
GWT MVP Case StudyGWT MVP Case Study
GWT MVP Case Study
David Chandler
 
Google Web Toolkits
Google Web ToolkitsGoogle Web Toolkits
Google Web Toolkits
Yiguang Hu
 
Academy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyAcademy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis Beketsky
Binary Studio
 
JS Fest 2018. Илья Иванов. Введение в React-Native
JS Fest 2018. Илья Иванов. Введение в React-NativeJS Fest 2018. Илья Иванов. Введение в React-Native
JS Fest 2018. Илья Иванов. Введение в React-Native
JSFestUA
 
Beyond simple benchmarks—a practical guide to optimizing code
Beyond simple benchmarks—a practical guide to optimizing code Beyond simple benchmarks—a practical guide to optimizing code
Beyond simple benchmarks—a practical guide to optimizing code
Particular Software
 
Xamarin & MvvmCross in depth
Xamarin & MvvmCross in depthXamarin & MvvmCross in depth
Xamarin & MvvmCross in depth
Nicolas Milcoff
 
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis JugoO365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
NCCOMMS
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Mahmoud Hamed Mahmoud
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App Engine
IndicThreads
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App Engine
Inphina Technologies
 
Disaster Recovery Planning using Azure Site Recovery
Disaster Recovery Planning using Azure Site RecoveryDisaster Recovery Planning using Azure Site Recovery
Disaster Recovery Planning using Azure Site Recovery
Nitin Agarwal
 
Jasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casJasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casellentuck
 
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EEConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
Rodrigo Cândido da Silva
 
Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features WSO2
 
Clean Architecture @ Taxibeat
Clean Architecture @ TaxibeatClean Architecture @ Taxibeat
Clean Architecture @ Taxibeat
Michael Bakogiannis
 
Automating the Entire PostgreSQL Lifecycle
Automating the Entire PostgreSQL Lifecycle Automating the Entire PostgreSQL Lifecycle
Automating the Entire PostgreSQL Lifecycle
anynines GmbH
 
Spring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud FoundrySpring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud Foundry
Joshua Long
 
Firebase overview
Firebase overviewFirebase overview
Firebase overview
Maksym Davydov
 

Similar to SOA with NServiceBus 20130124 (20)

Learn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
Learn Cloud-Native .NET: Core Configuration Fundamentals with SteeltoeLearn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
Learn Cloud-Native .NET: Core Configuration Fundamentals with Steeltoe
 
Making WCF Simple
Making WCF SimpleMaking WCF Simple
Making WCF Simple
 
GWT MVP Case Study
GWT MVP Case StudyGWT MVP Case Study
GWT MVP Case Study
 
Google Web Toolkits
Google Web ToolkitsGoogle Web Toolkits
Google Web Toolkits
 
Academy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyAcademy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis Beketsky
 
JS Fest 2018. Илья Иванов. Введение в React-Native
JS Fest 2018. Илья Иванов. Введение в React-NativeJS Fest 2018. Илья Иванов. Введение в React-Native
JS Fest 2018. Илья Иванов. Введение в React-Native
 
Beyond simple benchmarks—a practical guide to optimizing code
Beyond simple benchmarks—a practical guide to optimizing code Beyond simple benchmarks—a practical guide to optimizing code
Beyond simple benchmarks—a practical guide to optimizing code
 
Xamarin & MvvmCross in depth
Xamarin & MvvmCross in depthXamarin & MvvmCross in depth
Xamarin & MvvmCross in depth
 
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis JugoO365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Testing Your Application On Google App Engine
Testing Your Application On Google App EngineTesting Your Application On Google App Engine
Testing Your Application On Google App Engine
 
Testing your application on Google App Engine
Testing your application on Google App EngineTesting your application on Google App Engine
Testing your application on Google App Engine
 
Disaster Recovery Planning using Azure Site Recovery
Disaster Recovery Planning using Azure Site RecoveryDisaster Recovery Planning using Azure Site Recovery
Disaster Recovery Planning using Azure Site Recovery
 
Jasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casJasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-cas
 
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EEConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
 
Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features Complex Event Processor 3.0.0 - An overview of upcoming features
Complex Event Processor 3.0.0 - An overview of upcoming features
 
Clean Architecture @ Taxibeat
Clean Architecture @ TaxibeatClean Architecture @ Taxibeat
Clean Architecture @ Taxibeat
 
Automating the Entire PostgreSQL Lifecycle
Automating the Entire PostgreSQL Lifecycle Automating the Entire PostgreSQL Lifecycle
Automating the Entire PostgreSQL Lifecycle
 
Spring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud FoundrySpring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud Foundry
 
Firebase overview
Firebase overviewFirebase overview
Firebase overview
 

More from Sean Farmar

Sean Farmar SOA Lessons Learnt DDD North 20221203-pub.pptx
Sean Farmar SOA Lessons Learnt DDD North 20221203-pub.pptxSean Farmar SOA Lessons Learnt DDD North 20221203-pub.pptx
Sean Farmar SOA Lessons Learnt DDD North 20221203-pub.pptx
Sean Farmar
 
DevOps and Microservices Better Together 20190117 DevOps Underground London
DevOps and Microservices Better Together 20190117 DevOps Underground LondonDevOps and Microservices Better Together 20190117 DevOps Underground London
DevOps and Microservices Better Together 20190117 DevOps Underground London
Sean Farmar
 
Successfully Decomposing Your Monolith 20190515 DotNext St. Petersburg
Successfully Decomposing Your Monolith 20190515 DotNext St. PetersburgSuccessfully Decomposing Your Monolith 20190515 DotNext St. Petersburg
Successfully Decomposing Your Monolith 20190515 DotNext St. Petersburg
Sean Farmar
 
How Can Monitoring Save Your Bacon - build stuff 2018
How Can Monitoring Save Your Bacon - build stuff 2018How Can Monitoring Save Your Bacon - build stuff 2018
How Can Monitoring Save Your Bacon - build stuff 2018
Sean Farmar
 
Monitoring microservices lightning ddd north 20171014
Monitoring microservices lightning ddd north 20171014Monitoring microservices lightning ddd north 20171014
Monitoring microservices lightning ddd north 20171014
Sean Farmar
 
Why Service Oriented Architecture DDD North 20151024
Why Service Oriented Architecture DDD North 20151024Why Service Oriented Architecture DDD North 20151024
Why Service Oriented Architecture DDD North 20151024
Sean Farmar
 
Why soa DDD South West 6
Why soa DDD South West 6Why soa DDD South West 6
Why soa DDD South West 6Sean Farmar
 
Why SOA Web Summit Dublin 2014
Why SOA Web Summit Dublin 2014 Why SOA Web Summit Dublin 2014
Why SOA Web Summit Dublin 2014
Sean Farmar
 
Turning the light on
Turning the light onTurning the light on
Turning the light on
Sean Farmar
 
What's new in NServiceBus 4.0 20130718
What's new in NServiceBus 4.0 20130718What's new in NServiceBus 4.0 20130718
What's new in NServiceBus 4.0 20130718
Sean Farmar
 

More from Sean Farmar (10)

Sean Farmar SOA Lessons Learnt DDD North 20221203-pub.pptx
Sean Farmar SOA Lessons Learnt DDD North 20221203-pub.pptxSean Farmar SOA Lessons Learnt DDD North 20221203-pub.pptx
Sean Farmar SOA Lessons Learnt DDD North 20221203-pub.pptx
 
DevOps and Microservices Better Together 20190117 DevOps Underground London
DevOps and Microservices Better Together 20190117 DevOps Underground LondonDevOps and Microservices Better Together 20190117 DevOps Underground London
DevOps and Microservices Better Together 20190117 DevOps Underground London
 
Successfully Decomposing Your Monolith 20190515 DotNext St. Petersburg
Successfully Decomposing Your Monolith 20190515 DotNext St. PetersburgSuccessfully Decomposing Your Monolith 20190515 DotNext St. Petersburg
Successfully Decomposing Your Monolith 20190515 DotNext St. Petersburg
 
How Can Monitoring Save Your Bacon - build stuff 2018
How Can Monitoring Save Your Bacon - build stuff 2018How Can Monitoring Save Your Bacon - build stuff 2018
How Can Monitoring Save Your Bacon - build stuff 2018
 
Monitoring microservices lightning ddd north 20171014
Monitoring microservices lightning ddd north 20171014Monitoring microservices lightning ddd north 20171014
Monitoring microservices lightning ddd north 20171014
 
Why Service Oriented Architecture DDD North 20151024
Why Service Oriented Architecture DDD North 20151024Why Service Oriented Architecture DDD North 20151024
Why Service Oriented Architecture DDD North 20151024
 
Why soa DDD South West 6
Why soa DDD South West 6Why soa DDD South West 6
Why soa DDD South West 6
 
Why SOA Web Summit Dublin 2014
Why SOA Web Summit Dublin 2014 Why SOA Web Summit Dublin 2014
Why SOA Web Summit Dublin 2014
 
Turning the light on
Turning the light onTurning the light on
Turning the light on
 
What's new in NServiceBus 4.0 20130718
What's new in NServiceBus 4.0 20130718What's new in NServiceBus 4.0 20130718
What's new in NServiceBus 4.0 20130718
 

Recently uploaded

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 

Recently uploaded (20)

Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 

SOA with NServiceBus 20130124

  • 1. SOA With NServiceBus Sean Farmar
  • 2. What is the problem we are trying to solve? • Scale • Growth • Stability and Durability
  • 3. Why SOA? • SOA's tenets are about reducing coupling.
  • 4. Why SOA? [cont.] • Coupling: • Afferent, efferent • Temporal • Spatial • Platform
  • 7. In practice • Domain decomposition • Definition of components boundaries • Using messaging and pub/sub
  • 8. Publish Subscribe [pub/sub]
  • 9. Publish Subscribe [pub/sub]
  • 10. In practice [cont.] • Following principles (best thinking): • Explicit intentions [naming, context] • Single Responsibility • Command Query Separation • Drive your design and decision making to address all aspects of coupling • Backwards compatibility
  • 11. Why NServiceBus? • .Net Solution • Distributed bus (not a broker) • Messaging pub/sub (asynchronous) • Durable and Transactional (if you want) • Sagas
  • 12. Why NServiceBus? [cont.] • A Message [Serializable] public class EventMessage : IMyEvent { public Guid EventId { get; set; } public DateTime? Time { get; set; } } public interface IMyEvent { Guid EventId { get; set; } DateTime? Time { get; set; } TimeSpan Duration { get; set; } } var m = new EventMessage(); // Or: var m = Bus.CreateInstance<IMyEvent>();
  • 13. Why NServiceBus? [cont.] • Handler public IBus Bus { get; set; } public class EventMessageHandler : IHandleMessages<EventMessage> { public void Handle(EventMessage message) { // do stuff... IMyEvent anotherEventMessage; anotherEventMessage = Bus.CreateInstance<IMyEvent>(); anotherEventMessage = Guid.NewGuid(); anotherEventMessage = DateTime.Now.Second; anotherEventMessage = TimeSpan.FromSeconds(99999D); Bus.Publish(anotherEventMessage); } }
  • 14. Service Examples Place Order Sales Save status locally Save pricing locally Subscribe to Product Pricing Subscribe to Customer Status Updated Updated Publish Product Pricing Updated Publish Customer Customer Status Updated Marketing Care Publish Order Accepted
  • 15. Why NServiceBus? [cont.] • Config <?xml version="1.0"?> <configuration> <configSections> <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/> <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" /> </configSections> <MessageForwardingInCaseOfFaultConfig ErrorQueue="error"/> <UnicastBusConfig ForwardReceivedMessagesTo="audit"> <MessageEndpointMappings> <add Messages="MyMessages" Endpoint="MyServer"/> </MessageEndpointMappings> </UnicastBusConfig> </configuration>
  • 16. Why NServiceBus? [cont.] • Integration • Scalable • Elegant programming model • Developer productivity • Used in the industry
  • 17.
  • 19. A story about performance • The evolution
  • 20. A story about performance • Turning the lights on
  • 21. A story about performance • Performance and Load testing • Fixing it • How did NServiceBus make it better?
  • 23. Q&A