Introduksjon til NServiceBus

2,784 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,784
On SlideShare
0
From Embeds
0
Number of Embeds
1,598
Actions
Shares
0
Downloads
18
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Erfaringer med NServiceBus
  • MÅ ikke bruke Generic Host, men Generic Host gjør det enklere å komme i gang med NServiceBus
  • IBus: Alle metoder har en tilsvarende Expect… metode i testbiblioteket
  • Biztalk kan ha mange ulike roller: Mottaker, avsender, subscriber, publisher
  • Introduksjon til NServiceBus

    1. 1. Introduksjontil NServiceBus<br />NNUG 25.05.2010<br />
    2. 2. Sverre HundeideSeniorkonsulentItera Consulting (tidligere Objectware)Twitter: @sverrehundeideBlog: http://sverrehundeide.blogspot.com<br />Objectware har blitt Itera Consulting<br />
    3. 3. Kort om messagingpatterns<br />NServiceBus egenskaper og konfigurasjon<br />Demo<br />Spørsmål og diskusjon<br />Agenda<br />
    4. 4. UtvikletavUdiDahan<br />Andreas Öhlundogflerebidrarogså<br />Gjortomtil Open Source i 2006<br />Versjon 2.0: Mars 2010<br />Historien til NServiceBus<br />
    5. 5. Hvaeren “service bus”?<br />
    6. 6. "The bus is a lie!"<br />
    7. 7. Bus vs. Broker<br />Broker, "hub and spoke"<br />
    8. 8. Bus vs. Broker<br />
    9. 9. Bus vs. Broker<br />"Busses rule, brokers drool"<br />- Dru Sellers<br />
    10. 10. Oppsummert: En service bus er<br />DISTRIBUERT!<br />
    11. 11. Skalerbarhet<br />Løse koplinger<br />Interoperabilitet<br />Robusthet<br />Generelle messaging fordeler<br />
    12. 12. Asynkronekommunikasjonstyper med messaging:<br />Store and forward (send and forget)<br />Send / Receive (Request / Response) <br />Publish / Subscribe<br />Messaging patterns støttet av NServiceBus<br />
    13. 13. Store and forward<br /><ul><li>Asynkront:
    14. 14. Avsendertråden venter ikke</li></li></ul><li>Store and forward - Eksempel<br />Venter ikke på bekreftelse på at eposten har blitt sendt.<br />
    15. 15. Send / Receive (Request / Response)<br />
    16. 16. Send / Receive - Eksempel<br />Klienten:<br />
    17. 17. Send / Receive - Eksempel<br />Serveren:<br />
    18. 18. Send / Receive - Eksempel<br />Klienten – Håndteresvaret:<br />
    19. 19. Send / Receive <br />Hvorskalsvaretsendes?<br />Informasjonomsvarkøliggerpå MSQM-meldingen (standard MSMQ funksjonalitet).<br />
    20. 20. En tråd ligger og venter på svar og kjører callbackmetoden når svar kommer.<br />Er ikke robust<br />Send / Receive - Asynkonous callbacks<br />
    21. 21. Publish / Subscribe<br />
    22. 22. Publish / Subscribe<br />
    23. 23. Publish / Subscribe - Eksempel<br />Publisher:<br />Subscriptions gjøres til denne køen<br />
    24. 24. Publish / Subscribe - Eksempel<br />Subscriber:<br />
    25. 25. Publish / Subscribe - Eksempel<br />Subscriber:<br />
    26. 26. Publish / Subscribe - Eksempel<br />NServiceBusvilsende en subscription melding vedoppstart:<br />
    27. 27. Ved pub/sub publisereseventer<br />Ikkekommandoer (request meldinger)!<br />Definerer en hendelseifortid<br />Eksempel:<br />OrderStatusChanged<br />Eventer<br />
    28. 28. NServiceBus.dll<br />Alle interface ligger her, ingen implementasjon<br />NServiceBus.Core.dll<br />Implementasjon avrammeverket<br />Generert med ILMerge<br />Inneholder mange eksterneavhengigheter:<br />NHibernate ogFluentNHibernate <br />Spring<br />Unntak: Log4Net, andreIoC-rammeverkenn Spring<br />Forenkler deployment<br />NServiceBus assemblies<br />
    29. 29. NServiceBuskonfigurasjon<br />
    30. 30. Konfigurasjon - Fluent API<br />
    31. 31. Convention over configuration<br />Konfigurasjon<br />
    32. 32. ForenklerbrukenavNServiceBus<br />BasertpåTopShelf<br />Kan enkeltinstalleressom en Windows Service<br />Deployessammen med alletjenestersomskalmotta, sendeellerpubliseremeldinger<br />Kan ogsåbrukeNServiceBusuten Generic Host<br />Håndterer “Profiler”<br />Generic host<br />
    33. 33. Marker interfaces somdefinerer default konfigurasjon:<br />AsA_Client, AsA_Server, AsA_Publisher<br />Konfigurasjonav Generic Host<br /><ul><li>AsA_PublisherarverfraAsA_Server
    34. 34. AsA_Clientkanikkekombineres med AsA_Publisher</li></li></ul><li>Default konfigurasjonsalternativer:<br />Konfigurasjon av Generic Host<br />Transaksjonell<br />Impersonation<br />Sletter meldinger ved oppstart<br />Støtte for sagaer<br />Transport<br />AsA_Client<br />Nei<br />Nei<br />Ja<br />Nei<br />MSMQ<br />AsA_Server<br />Ja<br />Ja<br />Nei<br />Ja<br />MSMQ<br />
    35. 35. In-memory subscription storage:<br />Er default<br />Servere mister abonnementerved restart<br />Kun for egnetvedutvikling/test!<br />Konfigurasjon - Subscription storage<br />
    36. 36. MSMQ subscription storage storage:<br />Abonnementerlagresi en egenkø<br />Konfigurasjon - Subscription storage<br />
    37. 37. DB subscription storage<br />Lagrerabonnementeri en database<br />NHibernate ellerSQLite<br />Automatiskgenereringav schema<br />Børbrukesiproduksjonsmiljøet<br />Konfigurasjon - Subscription storage<br />
    38. 38. DB subscription storage eksempelkonfigurasjon:<br />Konfigurasjon - Subscription storage<br />
    39. 39. For Generic Host<br />De innebygdeprofilene:<br />Lite (default)<br />Integration<br />Production<br />Konfigurasjon - Profiler <br />Logging<br />Subscription<br />Saga persister<br />Scale-out<br />Lite<br />Mye (Console)<br />In-memory<br />In-memory<br />Nei<br />Integration<br />Mindre (Console)<br />MSMQ<br />SQLite<br />Ja<br />Production<br />Lite/Custom (Fil)<br />DB<br />NHibernate<br />Ja<br />
    40. 40. Konfigurasjon - Velge profil<br />
    41. 41. Implementere IProfile<br />Konfigurasjon - Lag din egen profil <br />
    42. 42. Konfigurasjon - Tilpasse en profil<br />
    43. 43. Koordinererulikestegi en langtlevende, distribuertog persistent transaksjon<br />Status lagresi en database<br />Lignerpå workflow<br />Men erikkedetsamme<br />Erpå et høyerenivå<br />Kan inneholde workflow og state machines<br />Sagaer<br />
    44. 44. Definisjon av en saga:<br />Sagaer - Eksempel<br />
    45. 45. Håndtering av en melding:<br />Sagaer - Eksempel (forts)<br />
    46. 46. Kjøressom en egen service<br />Har sin egenkø<br />Brukestil å vekketil live sagaersomventerpå en melding for å forsette<br />Eksempel:<br />En ordresomaldriblirgodkjent<br />Kan fekssendepåminnelseetter en uke<br />Sagaer - Timeout Manager<br />
    47. 47. NServiceBus.Testing.Dll<br />BrukerRhino.Mocks<br />Enhetstesting<br />
    48. 48. Generic host<br />Timeout manager<br />Distibutor<br />Gateway<br />Proxy<br />NServiceBus prosesser<br />
    49. 49. Distributor - Load balancing<br />http://nservicebus.com<br />
    50. 50. Gateway<br />
    51. 51. Proxy<br />http://nservicebus.com<br />
    52. 52. Proxy<br />http://nservicebus.com<br />
    53. 53. NServiceBusleggerpåegendefinertmeldingshode<br />Kan skapeproblemer for eksternekonsumenterav MSMQ-køen<br />Interoperabilitet<br />
    54. 54. Selvemeldingener en standard MSMQ melding<br />Interoperabilitet<br />
    55. 55. Integrasjon via:<br />EgenNServiceBus service på BizTalk serveren<br />Tar imotmeldingenog sender den videretil BizTalk<br />MSMQ<br />Custom BizTalk Adapter for NServiceBus<br />BizTalk og NServiceBus<br />
    56. 56. NServiceBushar:<br />Pub/sub støtte<br />Innebygdstøtte for transaksjonerogfeilhåndtering<br />Kombinere WCF med NServiceBus<br />Bruksynkronogasynkronkommunikasjon alt etterhvasom passer<br />WCF og NServiceBus<br />
    57. 57. BlirstøttetinesteversjonavNServiceBus<br />KjøreNServiceBusinnenfori en Azure Worker Role<br />Azuere queues<br />Max 8KB meldingsstørrelse<br />Kombinere med Azure Blob Storage for størremeldinger<br />Håndteringavtransaksjoner<br />For integrasjon mot eksterneapplikasjonerogpartnere<br />Azure og NServiceBus<br />
    58. 58. NServiceBus 2.1<br />Fokuspåpluggbarhet<br />Støtte for Azure (fortsattpå et tidlig stadium)<br />Målsetningom å slippe en nyversjonhver 6. måned<br />Neste versjon<br />
    59. 59. Deployment <br />Myesommåkonfigureres<br />Feilsøkingavtransaksjoner<br />DTCPing<br />NH Prof<br />Oppfølgingavfeiliproduksjonsmiljøet<br />Lageegneverktøyellerkjøpe?<br />Kreverforståelse for messaging ogeventerhosutviklerene<br />Ikkeundervurderkompleksiteten<br />Vurderbehovet for skalerbarhet<br />Antallsamtidigebrukere<br />Tilgjengelighet, responstider<br />Ingen golden hammer!<br />Les kildekoden!<br />Tips og erfaringer<br />
    60. 60. Publish/subscribe demo<br />
    61. 61. http://nservicebus.com<br />UdiDahan sin blog: http://www.udidahan.com/<br />NServiceBus SVN trunk<br />Sagas vs. workflows<br />SOA vs. EAI vs. ESB<br />Integrating BizTalk Server and nServiceBus<br />FormellbeskrivelseavSagaerfra 1987<br />Hanselminutes Podcast 176 - NServiceBus with UdiDahan<br />Deep Fried Bytes Episode 49: Getting the Right Message about NServiceBus with UdiDahan<br />Referanser<br />
    62. 62. NServiceBus tutorials<br />Eksempelprosjekter:<br />ElegantCode Starbucks spike<br />NYC Alt.Net demo application<br />Azure integrasjon<br />Stockholm Alt.Neteksempelav Andreas Öhlund<br />NServiceBus diskusjonsgruppehos Yahoo Groups<br />Ressurser<br />
    63. 63. Spørsmål?<br />

    ×