NServiceBus-Devsum10
Upcoming SlideShare
Loading in...5
×
 

NServiceBus-Devsum10

on

  • 1,069 views

 

Statistics

Views

Total Views
1,069
Views on SlideShare
1,069
Embed Views
0

Actions

Likes
0
Downloads
17
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    NServiceBus-Devsum10 NServiceBus-Devsum10 Presentation Transcript

    • Building enterprise applications with NServiceBus Andreas Öhlund twitter: @andreasohlund blog: andreasohlund.blogspot.com tisdag den 15 juni 2010
    • What is a distributed system? “A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable” -Leslie Lamport tisdag den 15 juni 2010
    • The first rule of NServiceBus tisdag den 15 juni 2010
    • There is NO Service Bus! The first rule of NServiceBus tisdag den 15 juni 2010
    • Well, at least no physical one tisdag den 15 juni 2010
    • The key to robust communication tisdag den 15 juni 2010
    • Store and forward tisdag den 15 juni 2010
    • Request/Response the NServiceBus way Fire and forget X 2 tisdag den 15 juni 2010
    • The effects of tight coupling Temporal Behavioral tisdag den 15 juni 2010
    • Communication and coupling Low command - oriented event - oriented Temporal distributed 3-layer Emergency services High High Low Behavioural tisdag den 15 juni 2010
    • Coupling NServiceBus style Low Command - oriented Event - oriented Temporal High Distributed 3-layer Emergency services High Behavioural Low tisdag den 15 juni 2010
    • Command oriented communication CompleteSaleCommand OnlineSales OrderService tisdag den 15 juni 2010
    • Sending Messages IBus.Send() bus.Send(new CompleteSaleCommand CreateOrderCommand { ProductId = 123, OnlineSales Quantity = 10 .... }); tisdag den 15 juni 2010
    • Receiving and processing of messages public class CompleteSaleMessageHandler: CreateOrderCommand IHandleMessages<CompleteSaleCommand> { OrderService public void Handle(CompleteSaleCommand c) { ... } } tisdag den 15 juni 2010
    • Throttling the load • Manage traffic peaks • Consumer controls the pace • <MsmqTransportConfig NumberOfWorkerThreads="3" /> tisdag den 15 juni 2010
    • What happens when the load becomes to heavy for one server? tisdag den 15 juni 2010
    • Scaling with the Distributor tisdag den 15 juni 2010
    • Building consistent systems • Do we produce predictable results even under failure conditions? • What about non transactional sources? tisdag den 15 juni 2010
    • Isolate non transactional sources as separate endpoints public void Handle(CompleteSaleCommand cmd) { var order = .... orderRepository.Save(order) smtpClient.Send(new MailMessage{...}) } tisdag den 15 juni 2010
    • Isolate non transactional sources as separate endpoints public void Handle(CompleteSaleCommand cmd) { public void Handle(CompleteSaleCommand cmd) { var order = .... orderRepository.Save(order) var order = .... orderRepository.Save(order) bus.Send(new NotifyCustomerRequest { smtpClient.Send(new MailMessage{...}) } EmailAddress = customer.Email, Body = “Order confirmation” }); } tisdag den 15 juni 2010
    • When things go wrong tisdag den 15 juni 2010
    • Messaging gives you a chance to do better • No more showing the users a WSOD • Messages are replayable • Async communication opens up a crucial windows of time for corrections tisdag den 15 juni 2010
    • Coupling NServiceBus style Low Command - oriented Event - oriented Temporal High Distributed 3-layer Emergency services High Low Behavioural tisdag den 15 juni 2010
    • Publish and subscribe tisdag den 15 juni 2010
    • Billing BillingService OrderAcceptedEvent Shipping SalesService ShippingService Sales Business events tisdag den 15 juni 2010
    • Finally a chance to discuss non functional requirements that business people understand tisdag den 15 juni 2010
    • The mechanics of pub/sub tisdag den 15 juni 2010
    • The mechanics of pub/sub tisdag den 15 juni 2010
    • Becoming a subscriber bus.Subcribe<IOrderAcceptedEvent>(); tisdag den 15 juni 2010
    • Publishing bus.Publish<IOrderAcceptedEvent>(x=> { ProductId = 123, Quantity = 10 .... }); tisdag den 15 juni 2010
    • It’s hard to get it right the first time around tisdag den 15 juni 2010
    • Versioning events using interfaces public interface IOrderAcceptedEvent2 : IOrderAcceptedEvent { string SomeNewProperty{ get;set; } } tisdag den 15 juni 2010
    • Configuration Developers: use code Administrators: use config files tisdag den 15 juni 2010
    • Getting your stuff to production tisdag den 15 juni 2010
    • The generic host to the rescue tisdag den 15 juni 2010
    • The generic host to the rescue public class EndpointConfig: IConfigureThisEndpoint, AsA_Publisher { } tisdag den 15 juni 2010
    • Using profiles to adapt to different environments tisdag den 15 juni 2010
    • NServiceBus is opinionated tisdag den 15 juni 2010
    • Why all these opinions? tisdag den 15 juni 2010
    • The end • www.nservicebus.com • www.udidahan.com/blog • andreasohlund.blogspot.com tisdag den 15 juni 2010