SlideShare uma empresa Scribd logo
1 de 24
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

Mais conteúdo relacionado

Mais procurados

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 BusSean 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 NServiceBusParticular Software
 
Anypoint connector dev kit
Anypoint connector dev kitAnypoint connector dev kit
Anypoint connector dev kitSon Nguyen
 
Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016Microservices with .Net - NDC Sydney, 2016
Microservices with .Net - NDC Sydney, 2016Richard Banks
 
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 systemsMarkus 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 technologieshimajareddys
 
Introduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric ApplicationsIntroduction to Windows Azure AppFabric Applications
Introduction to Windows Azure AppFabric ApplicationsNeil Mackenzie
 
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 BusJosh Lane
 
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 CompositionWSO2
 
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 ServicesRobin Howlett
 
WCF tutorial
WCF tutorialWCF tutorial
WCF tutorialAbhi Arya
 

Mais procurados (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
 

Semelhante a 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 SteeltoeVMware Tanzu
 
Google Web Toolkits
Google Web ToolkitsGoogle Web Toolkits
Google Web ToolkitsYiguang Hu
 
Academy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyAcademy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyBinary Studio
 
JS Fest 2018. Илья Иванов. Введение в React-Native
JS Fest 2018. Илья Иванов. Введение в React-NativeJS Fest 2018. Илья Иванов. Введение в React-Native
JS Fest 2018. Илья Иванов. Введение в React-NativeJSFestUA
 
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 depthNicolas 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 JugoNCCOMMS
 
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 EngineInphina Technologies
 
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 EngineIndicThreads
 
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 RecoveryNitin 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 EERodrigo 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
 
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 FoundryJoshua Long
 

Semelhante a 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
 

Mais de 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.pptxSean 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 LondonSean 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. PetersburgSean 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 2018Sean Farmar
 
Monitoring microservices lightning ddd north 20171014
Monitoring microservices lightning ddd north 20171014Monitoring microservices lightning ddd north 20171014
Monitoring microservices lightning ddd north 20171014Sean 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 20151024Sean 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 onSean 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 20130718Sean Farmar
 

Mais de 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
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

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