SlideShare a Scribd company logo
Utvikling av distribuerte systemer på .NET-platformen Distribuert utvikling på .NET-plattformen Page 1  , 12.10.2010
Forståelse av tilgjengelige arkitekturer og teknologier Diskutere for å bedre felles forståelse Skrive kode for å senke inngangsterskelen Distribuert utvikling på .NET-plattformen Page 2  , 12.10.2010 Formålet med sesjonen
Del 1 Mennesker, miljø og omkringliggene krav Kommunikasjonsformer Vanlige arkitekturer Del 2 Teknologier Distribuert utvikling på .NET-plattformen Page 3  , 12.10.2010 Agenda
Din og andre utvikleres erfaring Hva med kunden? Leverandører, produkter og penger Distribuert utvikling på .NET-plattformen Page 4  , 12.10.2010 Ikke-tekniske elementer som spiller inn
The network is reliable Latency is zero Bandwidth is infinite The network is secure Topology doesn't change There is one administrator Transport cost is zero The network is homogeneous Peter Deutsch & James Gosling, Sun Microsystems Distribuert utvikling på .NET-plattformen Page 5  , 12.10.2010 Fallacies of distributed computing
Reliability, Availability, Scalability, Extensibility, Securability, Interoperability, +++ Viktig del avutformingenavenhverarkitektur Løsningerblirlaget kun basertpåikke-funksjonellekrav Extensibility: Workflow/BPM engine, DSL, plug-ins Scalability: Message/Service bus, Database, NoSql Essensielt å forståforretningsproblemene i tillegg! Distribuert utvikling på .NET-plattformen Page 6  , 12.10.2010 Ikke-funksjonelle krav => «-ility»-ene
Synkron RPC Asynkron RPC m/callback Meldingsbasert Distribuert utvikling på .NET-plattformen Page 7  , 12.10.2010 Hovedformer for kommunikasjon
Den «vanlige» måten å utvikle på  Koden lik som vanlige ressurser i minne Tråden blokkeres mens klient venter på at server svarer Koden blir lesbar og sekvensiell, lett å få oversikt Fungerer når Hente mindre mengder data Kalle operasjoner som tar lite tid Distribuert utvikling på .NET-plattformen Page 8  , 12.10.2010 Synkron RPC
Ulemper Tette koblinger, i tid og rom (Stadig økende) ventetid for bruker eller tjenester Husk krasj, nettverksproblemer, vedlikehold Vanskeligere å gjøre systemet robust Last-problemer på server Reduserer mulighetene for skalering  Distribuert utvikling på .NET-plattformen Page 9  , 12.10.2010 Synkron RPC
Vanligst i web Mye tydeligere i koden at noe vil bruke tid  Fordeler i forhold til synkron RPC Tråden kan fortsette arbeidet Mindre sårbart for krasj og nettverksproblemer Men fortsatt ikke ideelt Kobling i rom Last-problemer på server Oppstykket kode Distribuert utvikling på .NET-plattformen Page 10  , 12.10.2010 Asynkron RPC m/callback
Handler om å kommunisere via meldinger To hovedformer for å administrere flyten Message Broker Message Bus Meldingsstrategi Store & Forward Request / Response Publish / Subscribe Distribuert utvikling på .NET-plattformen Page 11  , 12.10.2010 Meldingsbasert arkitektur
«Decouplethe destination of a message from the sender and maintain central control over the flow of messages» Distribuert utvikling på .NET-plattformen Page 12  , 12.10.2010 Messsage broker
«Enableseparate applications to work together but in a decoupled fashion such that applications can be easily added or removed without affecting the others» Distribuert utvikling på .NET-plattformen Page 13  , 12.10.2010 Message bus Distribuert!
Distribuert utvikling på .NET-plattformen Page 14  , 12.10.2010 Store and forward (Send and forget)
Distribuert utvikling på .NET-plattformen Page 15  , 12.10.2010 Request / Response (Send / Recieve)
Distribuert utvikling på .NET-plattformen Page 16  , 12.10.2010 Publish / Subscribe
Vanligvis er dette ting som har hendt Ordre kansellert, Produkt utsolgt, Kunde opprettet Publiserer vet ikke ved designtid hvem som vil motta meldingen Vanskeligere å få full oversikt over hvordan systemet henger sammen Oppnår løs kobling Distribuert utvikling på .NET-plattformen Page 17  , 12.10.2010 Publish / Subscribe
Kode sender/publiserer melding Melding legges på lokal kø Kø(/meldings)-infrastrukturen tar over ansvaret Koden fortsetter å kjøre Distribuert utvikling på .NET-plattformen Page 18  , 12.10.2010 Implementasjon void SendCustomerDeleted() { Customer customer = GetDeletedCustomer(); var msg = new CustomerDeletedMessage (customer.CustomerNumber);   ServiceBus.SendMessage(msg); }
Køsystemer innebygget i operativsystem siden 80-tallet MSMQ i Windows siden 1997 Køen persisterer meldingen på disk Hvis maskinen krasjer vil den fortsatt kunne sende Når mottaker har mottatt beskjeden vil den persisteres på disk der. Da vil sender slette meldingen.  Meldingen vil ligge i mottakerkøen inntil mottaker fjerner den derfra Distribuert utvikling på .NET-plattformen Page 19  , 12.10.2010 Hva skjer når meldingen er lagt på køen?
Løs kobling mellom tjenester Håndtere og skalere enkelttjenester. Mindre avhengigheter, mindre bindinger, større individuell frihet => mer robuste systemer Køer  Pluggbarhet Distribuert utvikling på .NET-plattformen Page 20  , 12.10.2010 Fordeler ved meldingsbasert arkitektur
Ny hverdag Utviklere Driftere Forrestningssiden Nødvendig med nye verktøy Forstå hele flyten i systemet. Distribuert utvikling på .NET-plattformen Page 21  , 12.10.2010 Ulemper ved meldingsbasert arkitektur
Design for tjenestefeil Kombiner tjenester på klienten, ikke i tjenestene Ikke distribuerte transaksjoner mellom tjenester Distribuert utvikling på .NET-plattformen Page 22  , 12.10.2010 Designprinsipper
Distribuert utvikling på .NET-plattformen Page 23  , 12.10.2010 Vår verden - vanlige applikasjonsformer ,[object Object]
CRUD med mye logikk på serveren
Mer komplisert applikasjon med mye koblinger. SOA?
Command Query Responsibility Segregation (CQRS)
SVÆRT forenklet!SOA CQRS
Hva slags kommunikasjonsform bruker man når?  Og hvilke teknologier finnes? Distribuert utvikling på .NET-plattformen Page 24  , 12.10.2010 Vår verden - vanlige applikasjonsformer
WCF RIA Services Standard WCF CQRS (WCF Data Services) Distribuert utvikling på .NET-plattformen Page 25  , 12.10.2010 CRUD (Create, Read, Update, Delete) med ingen/begrenset logikk på server
Standard WCF Asynkrone kall/meldingshåndtering CQRS Distribuert utvikling på .NET-plattformen Page 26  , 12.10.2010 CRUD med mye logikk på serveren
WCF Data Services Distribuert utvikling på .NET-plattformen Page 27  , 12.10.2010 Eksponere OData eller RESTful interface
Standard WCF mellom klient og server – hente data Meldingsbasert CQRS Distribuert utvikling på .NET-plattformen Page 28  , 12.10.2010 Mer komplisert applikasjon med mye koblinger. SOA?
Distribuert utvikling på .NET-plattformen Page 29  , 12.10.2010 Forretningsperspektiv Publiser «Vare kjøpt» Kjøp vare Oppdater rabatt Lagre kjøpsinformasjon Salg Abonner på «Kundestatus oppdatert» Abonner  på  «Vare kjøpt» Kunde Frakt Publiser«Kundestatus oppdatert»
Har oppdeling i tjenester, bruk av køer osv. føringer for fysisk deling? Nei Trenger ikke være en maskin per tjeneste Trenger ikke være web services mellom tjenester Kan ha forskjellig transportprotokoller mellom tjenester Distribuert utvikling på .NET-plattformen Page 30  , 12.10.2010 Hardwareperspektivet
Distribuert utvikling på .NET-plattformen Page 31  , 12.10.2010 Tid for diskusjon
WCF WCF RIA Services WCF Data Services Biztalk NServiceBus Rhino Service Bus Azure Distribuert utvikling på .NET-plattformen Page 32  , 12.10.2010 Teknologiene
«Apart of the .NET Framework that provides a unified programming model for rapidly building service-oriented applications that communicate across the web and the enterprise»  MSDN Distribuert utvikling på .NET-plattformen Page 33  , 12.10.2010 Windows Communication Foundation
Distribuert utvikling på .NET-plattformen Page 34  , 12.10.2010 WCF RIA Services «WCF RIA Services lets you quickly build N-Tier Silverlight client applications without needing to focus on the service plumbing to get data into and out of your client application from back-end services, logic and data access»  						MSDN
Når du bygger domene-service på server, genereres tilsvarende kode på klienten Distribuert utvikling på .NET-plattformen Page 35  , 12.10.2010 WCF RIA Services Server CustomerService ,[object Object],Klient CustomerContext ,[object Object],Customer editerbar? ,[object Object]
Inserts: CustomerContext.Customers.Add(new Customer(...) {...})
Delete: CustomerContext.Customers.Remove(someCustomer)
CustomerContext.SubmitChanges()
Objektene som sendes må være entitetstyper
Validering med System.ComponentModel.DataAnnotations
Primært for Silverlight  ,[object Object]
REST-ifisert entitetsmodell med OData Kan returnere XML, JSON eller RDF + XML GET, PUT, POST, DELETE Primærbruk: For andre å konsumere, eventuelt JQuery Distribuert utvikling på .NET-plattformen Page 37  , 12.10.2010 WCF Data Services
Eksempelbruk http://dataserver/service.svc/MusicCollection http://dataserver/service.svc/MusicCollection[SomeArtist] http://dataserver/service.svc/MusicCollection[SomeSong]/Genre http://dataserver/service.svc/MusicCollection[SomeArtist]/ReleaseDate[Year eq 2006] http://dataserver/service.svc/MusicCollection?$orderby=ReleaseDate&$skip=100&$top=50 Distribuert utvikling på .NET-plattformen Page 38  , 12.10.2010 WCF Data Services
Message Broker Kommuniserer med andre software systemer gjennom en rekke adaptere Tilbyr  Enterprise Application Integration Business Process Automation Business-to-business Communication Message Broker Distribuert utvikling på .NET-plattformen Page 39  , 12.10.2010 Microsoft Biztalk Server
Forskjellige versjoner Enterprise - $34,999 Standard - $8,499 Branch - $1,800 Developer - $499 per user Distribuert utvikling på .NET-plattformen Page 40  , 12.10.2010 Microsoft Biztalk Server
Design av systemer for meldingsbasert arkitektur med message bus   Bygget på toppen av MSMQ Open source Laget av Udi Dahan www.nservicebus.com Støtter Store and forward (send and forget) Request / Response Publish / Subscribe Distribuert utvikling på .NET-plattformen Page 41  , 12.10.2010 NServiceBus
Gir mostand ved feil bruk Profiler Generic host Convention over configuration Pluggbarhet Sagaer Enhetstesting Distribuert utvikling på .NET-plattformen Page 42  , 12.10.2010 NServiceBus - Diverse
Distribuert utvikling på .NET-plattformen Page 43  , 12.10.2010 NServiceBus – Store and forward  Venter ikke på bekreftelse på at epost har blitt sendt.
Klient: Distribuert utvikling på .NET-plattformen Page 44  , 12.10.2010 NServiceBus – Request / Response
Server: Distribuert utvikling på .NET-plattformen Page 45  , 12.10.2010 NServiceBus – Request / Response
Klient – håndtere svaret: Distribuert utvikling på .NET-plattformen Page 46  , 12.10.2010 NServiceBus – Request / Response
Distribuert utvikling på .NET-plattformen Page 47  , 12.10.2010 NServiceBus – Request / Response – Asynchronous callbacks  Hvis klienten går ned mister man meldingen
Publisher: Meldinger som hendelser i fortid Distribuert utvikling på .NET-plattformen Page 48  , 12.10.2010 NServiceBus – Publish / Subscribe
Publisher: Subscriber: Distribuert utvikling på .NET-plattformen Page 49  , 12.10.2010 NServiceBus – Publish / Subscribe
Subscriber: Distribuert utvikling på .NET-plattformen Page 50  , 12.10.2010 NServiceBus – Publish / Subscribe
Vil sende en subscription-melding ved oppstart Distribuert utvikling på .NET-plattformen Page 51  , 12.10.2010 NServiceBus – Publish / Subscribe
Det tar tid å komme i gang Mye som må konfigureres Verktøy for oppfølgning i produksjon Distribuert utvikling på .NET-plattformen Page 52  , 12.10.2010 NServiceBus - Diverse
http://www.nservicebus.com/Roadmap.aspx Mest spennende i neste versjon: Støtte Micrososft Azure Queues og Amazon SQS (Simple Queue Service) Distribuert utvikling på .NET-plattformen Page 53  , 12.10.2010 NServiceBus – Videre utvikling
Laget av Oren Eini (Ayende Rahien) Kun Store and forward og Request / Response Mye mindre alternativer enn NServiceBus.  Open Source http://github.com/ayende/rhino-esb Distribuert utvikling på .NET-plattformen Page 54  , 12.10.2010 Rhino Service Bus
«I liberally stole from both ideas and code from Mass Transit and NServiceBus. My main goal was to get to a level with no configuration, no complexity, high degree of flexibility from design stand point, but a very rigid structure for the users» Oren Eini Detaljer C# 3.0 & MSMQ 4.0 - taking advantage of features such as sub queues, async queue receiving Pluggable  Minimal moving parts, strongly opinionated Hard focus on developer productivity and ease of use Conventions, assertions and convictions Distribuert utvikling på .NET-plattformen Page 55  , 12.10.2010 Rhino Service Bus
Interessant eksempel på MSDN:  	«Building Distributed Apps with NHibernate and 	Rhino Service Bus» Bruke (1)request / response med message bus og (2)utstrakt bruk av caching for å (3)gi rask respons og (4)støtte occasionally connected , samt (5)samle queries for å gi et naturlig kodeinterface og unngå chatty interface mellom klient og server. Distribuert utvikling på .NET-plattformen Page 56  , 12.10.2010 Rhino Service Bus - Eksempel
Distribuert utvikling på .NET-plattformen Page 57  , 12.10.2010 Rhino Service Bus - Eksempel Rhino Service Bus som service bus over MSMQ:

More Related Content

Viewers also liked

5xBeter Presentatie Gerard Schilder
5xBeter Presentatie Gerard Schilder5xBeter Presentatie Gerard Schilder
5xBeter Presentatie Gerard Schildergerbenstarink
 
Delivering software - process and infrastructure
Delivering software - process and infrastructureDelivering software - process and infrastructure
Delivering software - process and infrastructure
Rune Sundling
 
E4勉強会 事後修正版
E4勉強会 事後修正版E4勉強会 事後修正版
E4勉強会 事後修正版kounan13
 
Tokyo tyrant
Tokyo tyrantTokyo tyrant
Tokyo tyrantkounan13
 
Svb005 presentatie svb final
Svb005 presentatie svb finalSvb005 presentatie svb final
Svb005 presentatie svb finalgerbenstarink
 
Kesihatan dan kesejahteraan week 1 d
Kesihatan dan kesejahteraan week 1 dKesihatan dan kesejahteraan week 1 d
Kesihatan dan kesejahteraan week 1 d
Puteri Illiani
 
はじめてのSQLチューニング(oracle)
はじめてのSQLチューニング(oracle)はじめてのSQLチューニング(oracle)
はじめてのSQLチューニング(oracle)
kounan13
 
Theories of the earth's crustal movement powerpoint
Theories of the earth's crustal movement powerpointTheories of the earth's crustal movement powerpoint
Theories of the earth's crustal movement powerpoint
Jimalalud National High School
 
Static code analysis
Static code analysisStatic code analysis
Static code analysis
Rune Sundling
 
Being able to code does not make you a good developer
Being able to code does not make you a good developerBeing able to code does not make you a good developer
Being able to code does not make you a good developer
Rune Sundling
 

Viewers also liked (11)

5xBeter Presentatie Gerard Schilder
5xBeter Presentatie Gerard Schilder5xBeter Presentatie Gerard Schilder
5xBeter Presentatie Gerard Schilder
 
Delivering software - process and infrastructure
Delivering software - process and infrastructureDelivering software - process and infrastructure
Delivering software - process and infrastructure
 
E4勉強会 事後修正版
E4勉強会 事後修正版E4勉強会 事後修正版
E4勉強会 事後修正版
 
The legend of polopantao
The legend of polopantao The legend of polopantao
The legend of polopantao
 
Tokyo tyrant
Tokyo tyrantTokyo tyrant
Tokyo tyrant
 
Svb005 presentatie svb final
Svb005 presentatie svb finalSvb005 presentatie svb final
Svb005 presentatie svb final
 
Kesihatan dan kesejahteraan week 1 d
Kesihatan dan kesejahteraan week 1 dKesihatan dan kesejahteraan week 1 d
Kesihatan dan kesejahteraan week 1 d
 
はじめてのSQLチューニング(oracle)
はじめてのSQLチューニング(oracle)はじめてのSQLチューニング(oracle)
はじめてのSQLチューニング(oracle)
 
Theories of the earth's crustal movement powerpoint
Theories of the earth's crustal movement powerpointTheories of the earth's crustal movement powerpoint
Theories of the earth's crustal movement powerpoint
 
Static code analysis
Static code analysisStatic code analysis
Static code analysis
 
Being able to code does not make you a good developer
Being able to code does not make you a good developerBeing able to code does not make you a good developer
Being able to code does not make you a good developer
 

Similar to Distribuert utvikling på net platformen

eCampus status til IT-ledermøtet
eCampus status til IT-ledermøteteCampus status til IT-ledermøtet
eCampus status til IT-ledermøtet
Ingrid Melve
 
Dell Solutions Tour 2015 - Neste generasjons Windows Server og System Center,...
Dell Solutions Tour 2015 - Neste generasjons Windows Server og System Center,...Dell Solutions Tour 2015 - Neste generasjons Windows Server og System Center,...
Dell Solutions Tour 2015 - Neste generasjons Windows Server og System Center,...
Kenneth de Brucq
 
Nokios Tv2012 Hva Forventer En Fjortis
Nokios   Tv2012   Hva Forventer En FjortisNokios   Tv2012   Hva Forventer En Fjortis
Nokios Tv2012 Hva Forventer En Fjortis
Thor-Chriristian Lorange
 
20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februar20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februarSturla Grelland
 
Notifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verdenNotifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verden
Joar Øyen
 
Mellomvare og integrasjon en innføring i bruk av biz talk hos ikt agder iks
Mellomvare og integrasjon    en innføring i bruk av biz talk hos ikt agder iksMellomvare og integrasjon    en innføring i bruk av biz talk hos ikt agder iks
Mellomvare og integrasjon en innføring i bruk av biz talk hos ikt agder iks
Atle Frydenlund
 
eCampus: NTNU IT-Kontaktforum 4 mai 2011
eCampus: NTNU IT-Kontaktforum 4 mai 2011eCampus: NTNU IT-Kontaktforum 4 mai 2011
eCampus: NTNU IT-Kontaktforum 4 mai 2011
Jan Meijer
 
Integrasjoner i nettskyen - shared
Integrasjoner i nettskyen - sharedIntegrasjoner i nettskyen - shared
Integrasjoner i nettskyen - sharedSondre Bjellås
 
En guide igjennom tåkeheimen
En guide igjennom tåkeheimenEn guide igjennom tåkeheimen
En guide igjennom tåkeheimen
mudnaes
 
Rwd seminar 2013
Rwd seminar 2013Rwd seminar 2013
Rwd seminar 2013CoreTrek
 
eCampus og fleksibel utdanning
eCampus og fleksibel utdanningeCampus og fleksibel utdanning
eCampus og fleksibel utdanning
Ingrid Melve
 
eCampus i Nord-Norge
eCampus i Nord-NorgeeCampus i Nord-Norge
eCampus i Nord-Norge
Ingrid Melve
 
Ett skritt ut i skya
Ett skritt ut i skyaEtt skritt ut i skya
Ett skritt ut i skya
Joar Øyen
 
Internett – fra tekniske standarder til samhandlingsarena DRI 3010 H2014
Internett – fra tekniske standarder til samhandlingsarena DRI 3010 H2014Internett – fra tekniske standarder til samhandlingsarena DRI 3010 H2014
Internett – fra tekniske standarder til samhandlingsarena DRI 3010 H2014
Steinar Skagemo
 
IT-tjenester som strøm i veggen
IT-tjenester som strøm i veggenIT-tjenester som strøm i veggen
IT-tjenester som strøm i veggen
ErgoGroup
 
Er Amazon EC2 klar for virksomhetskritiske systemer?
Er Amazon EC2 klar for virksomhetskritiske systemer?Er Amazon EC2 klar for virksomhetskritiske systemer?
Er Amazon EC2 klar for virksomhetskritiske systemer?
mudnaes
 
Slik kan du prototype enkelt med node red
Slik kan du prototype enkelt med node redSlik kan du prototype enkelt med node red
Slik kan du prototype enkelt med node red
Simen Sommerfeldt
 
Hva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
Hva Og Hvorfor Arkitektur - 11. mai 2010, TrondheimHva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
Hva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
Espen Johanson
 
NetCom Mobil konferanse
NetCom Mobil konferanseNetCom Mobil konferanse
NetCom Mobil konferanse
Christian Borge
 
Monolitter og byggeklosser jon erik solheim - stacc
Monolitter og byggeklosser   jon erik solheim - staccMonolitter og byggeklosser   jon erik solheim - stacc
Monolitter og byggeklosser jon erik solheim - stacc
Jon Solheim
 

Similar to Distribuert utvikling på net platformen (20)

eCampus status til IT-ledermøtet
eCampus status til IT-ledermøteteCampus status til IT-ledermøtet
eCampus status til IT-ledermøtet
 
Dell Solutions Tour 2015 - Neste generasjons Windows Server og System Center,...
Dell Solutions Tour 2015 - Neste generasjons Windows Server og System Center,...Dell Solutions Tour 2015 - Neste generasjons Windows Server og System Center,...
Dell Solutions Tour 2015 - Neste generasjons Windows Server og System Center,...
 
Nokios Tv2012 Hva Forventer En Fjortis
Nokios   Tv2012   Hva Forventer En FjortisNokios   Tv2012   Hva Forventer En Fjortis
Nokios Tv2012 Hva Forventer En Fjortis
 
20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februar20130212 firstpoint citrix seminar 12 februar
20130212 firstpoint citrix seminar 12 februar
 
Notifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verdenNotifikasjoner i en asynkron verden
Notifikasjoner i en asynkron verden
 
Mellomvare og integrasjon en innføring i bruk av biz talk hos ikt agder iks
Mellomvare og integrasjon    en innføring i bruk av biz talk hos ikt agder iksMellomvare og integrasjon    en innføring i bruk av biz talk hos ikt agder iks
Mellomvare og integrasjon en innføring i bruk av biz talk hos ikt agder iks
 
eCampus: NTNU IT-Kontaktforum 4 mai 2011
eCampus: NTNU IT-Kontaktforum 4 mai 2011eCampus: NTNU IT-Kontaktforum 4 mai 2011
eCampus: NTNU IT-Kontaktforum 4 mai 2011
 
Integrasjoner i nettskyen - shared
Integrasjoner i nettskyen - sharedIntegrasjoner i nettskyen - shared
Integrasjoner i nettskyen - shared
 
En guide igjennom tåkeheimen
En guide igjennom tåkeheimenEn guide igjennom tåkeheimen
En guide igjennom tåkeheimen
 
Rwd seminar 2013
Rwd seminar 2013Rwd seminar 2013
Rwd seminar 2013
 
eCampus og fleksibel utdanning
eCampus og fleksibel utdanningeCampus og fleksibel utdanning
eCampus og fleksibel utdanning
 
eCampus i Nord-Norge
eCampus i Nord-NorgeeCampus i Nord-Norge
eCampus i Nord-Norge
 
Ett skritt ut i skya
Ett skritt ut i skyaEtt skritt ut i skya
Ett skritt ut i skya
 
Internett – fra tekniske standarder til samhandlingsarena DRI 3010 H2014
Internett – fra tekniske standarder til samhandlingsarena DRI 3010 H2014Internett – fra tekniske standarder til samhandlingsarena DRI 3010 H2014
Internett – fra tekniske standarder til samhandlingsarena DRI 3010 H2014
 
IT-tjenester som strøm i veggen
IT-tjenester som strøm i veggenIT-tjenester som strøm i veggen
IT-tjenester som strøm i veggen
 
Er Amazon EC2 klar for virksomhetskritiske systemer?
Er Amazon EC2 klar for virksomhetskritiske systemer?Er Amazon EC2 klar for virksomhetskritiske systemer?
Er Amazon EC2 klar for virksomhetskritiske systemer?
 
Slik kan du prototype enkelt med node red
Slik kan du prototype enkelt med node redSlik kan du prototype enkelt med node red
Slik kan du prototype enkelt med node red
 
Hva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
Hva Og Hvorfor Arkitektur - 11. mai 2010, TrondheimHva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
Hva Og Hvorfor Arkitektur - 11. mai 2010, Trondheim
 
NetCom Mobil konferanse
NetCom Mobil konferanseNetCom Mobil konferanse
NetCom Mobil konferanse
 
Monolitter og byggeklosser jon erik solheim - stacc
Monolitter og byggeklosser   jon erik solheim - staccMonolitter og byggeklosser   jon erik solheim - stacc
Monolitter og byggeklosser jon erik solheim - stacc
 

Distribuert utvikling på net platformen

  • 1. Utvikling av distribuerte systemer på .NET-platformen Distribuert utvikling på .NET-plattformen Page 1 , 12.10.2010
  • 2. Forståelse av tilgjengelige arkitekturer og teknologier Diskutere for å bedre felles forståelse Skrive kode for å senke inngangsterskelen Distribuert utvikling på .NET-plattformen Page 2 , 12.10.2010 Formålet med sesjonen
  • 3. Del 1 Mennesker, miljø og omkringliggene krav Kommunikasjonsformer Vanlige arkitekturer Del 2 Teknologier Distribuert utvikling på .NET-plattformen Page 3 , 12.10.2010 Agenda
  • 4. Din og andre utvikleres erfaring Hva med kunden? Leverandører, produkter og penger Distribuert utvikling på .NET-plattformen Page 4 , 12.10.2010 Ikke-tekniske elementer som spiller inn
  • 5. The network is reliable Latency is zero Bandwidth is infinite The network is secure Topology doesn't change There is one administrator Transport cost is zero The network is homogeneous Peter Deutsch & James Gosling, Sun Microsystems Distribuert utvikling på .NET-plattformen Page 5 , 12.10.2010 Fallacies of distributed computing
  • 6. Reliability, Availability, Scalability, Extensibility, Securability, Interoperability, +++ Viktig del avutformingenavenhverarkitektur Løsningerblirlaget kun basertpåikke-funksjonellekrav Extensibility: Workflow/BPM engine, DSL, plug-ins Scalability: Message/Service bus, Database, NoSql Essensielt å forståforretningsproblemene i tillegg! Distribuert utvikling på .NET-plattformen Page 6 , 12.10.2010 Ikke-funksjonelle krav => «-ility»-ene
  • 7. Synkron RPC Asynkron RPC m/callback Meldingsbasert Distribuert utvikling på .NET-plattformen Page 7 , 12.10.2010 Hovedformer for kommunikasjon
  • 8. Den «vanlige» måten å utvikle på Koden lik som vanlige ressurser i minne Tråden blokkeres mens klient venter på at server svarer Koden blir lesbar og sekvensiell, lett å få oversikt Fungerer når Hente mindre mengder data Kalle operasjoner som tar lite tid Distribuert utvikling på .NET-plattformen Page 8 , 12.10.2010 Synkron RPC
  • 9. Ulemper Tette koblinger, i tid og rom (Stadig økende) ventetid for bruker eller tjenester Husk krasj, nettverksproblemer, vedlikehold Vanskeligere å gjøre systemet robust Last-problemer på server Reduserer mulighetene for skalering Distribuert utvikling på .NET-plattformen Page 9 , 12.10.2010 Synkron RPC
  • 10. Vanligst i web Mye tydeligere i koden at noe vil bruke tid Fordeler i forhold til synkron RPC Tråden kan fortsette arbeidet Mindre sårbart for krasj og nettverksproblemer Men fortsatt ikke ideelt Kobling i rom Last-problemer på server Oppstykket kode Distribuert utvikling på .NET-plattformen Page 10 , 12.10.2010 Asynkron RPC m/callback
  • 11. Handler om å kommunisere via meldinger To hovedformer for å administrere flyten Message Broker Message Bus Meldingsstrategi Store & Forward Request / Response Publish / Subscribe Distribuert utvikling på .NET-plattformen Page 11 , 12.10.2010 Meldingsbasert arkitektur
  • 12. «Decouplethe destination of a message from the sender and maintain central control over the flow of messages» Distribuert utvikling på .NET-plattformen Page 12 , 12.10.2010 Messsage broker
  • 13. «Enableseparate applications to work together but in a decoupled fashion such that applications can be easily added or removed without affecting the others» Distribuert utvikling på .NET-plattformen Page 13 , 12.10.2010 Message bus Distribuert!
  • 14. Distribuert utvikling på .NET-plattformen Page 14 , 12.10.2010 Store and forward (Send and forget)
  • 15. Distribuert utvikling på .NET-plattformen Page 15 , 12.10.2010 Request / Response (Send / Recieve)
  • 16. Distribuert utvikling på .NET-plattformen Page 16 , 12.10.2010 Publish / Subscribe
  • 17. Vanligvis er dette ting som har hendt Ordre kansellert, Produkt utsolgt, Kunde opprettet Publiserer vet ikke ved designtid hvem som vil motta meldingen Vanskeligere å få full oversikt over hvordan systemet henger sammen Oppnår løs kobling Distribuert utvikling på .NET-plattformen Page 17 , 12.10.2010 Publish / Subscribe
  • 18. Kode sender/publiserer melding Melding legges på lokal kø Kø(/meldings)-infrastrukturen tar over ansvaret Koden fortsetter å kjøre Distribuert utvikling på .NET-plattformen Page 18 , 12.10.2010 Implementasjon void SendCustomerDeleted() { Customer customer = GetDeletedCustomer(); var msg = new CustomerDeletedMessage (customer.CustomerNumber); ServiceBus.SendMessage(msg); }
  • 19. Køsystemer innebygget i operativsystem siden 80-tallet MSMQ i Windows siden 1997 Køen persisterer meldingen på disk Hvis maskinen krasjer vil den fortsatt kunne sende Når mottaker har mottatt beskjeden vil den persisteres på disk der. Da vil sender slette meldingen. Meldingen vil ligge i mottakerkøen inntil mottaker fjerner den derfra Distribuert utvikling på .NET-plattformen Page 19 , 12.10.2010 Hva skjer når meldingen er lagt på køen?
  • 20. Løs kobling mellom tjenester Håndtere og skalere enkelttjenester. Mindre avhengigheter, mindre bindinger, større individuell frihet => mer robuste systemer Køer Pluggbarhet Distribuert utvikling på .NET-plattformen Page 20 , 12.10.2010 Fordeler ved meldingsbasert arkitektur
  • 21. Ny hverdag Utviklere Driftere Forrestningssiden Nødvendig med nye verktøy Forstå hele flyten i systemet. Distribuert utvikling på .NET-plattformen Page 21 , 12.10.2010 Ulemper ved meldingsbasert arkitektur
  • 22. Design for tjenestefeil Kombiner tjenester på klienten, ikke i tjenestene Ikke distribuerte transaksjoner mellom tjenester Distribuert utvikling på .NET-plattformen Page 22 , 12.10.2010 Designprinsipper
  • 23.
  • 24. CRUD med mye logikk på serveren
  • 25. Mer komplisert applikasjon med mye koblinger. SOA?
  • 26. Command Query Responsibility Segregation (CQRS)
  • 28. Hva slags kommunikasjonsform bruker man når? Og hvilke teknologier finnes? Distribuert utvikling på .NET-plattformen Page 24 , 12.10.2010 Vår verden - vanlige applikasjonsformer
  • 29. WCF RIA Services Standard WCF CQRS (WCF Data Services) Distribuert utvikling på .NET-plattformen Page 25 , 12.10.2010 CRUD (Create, Read, Update, Delete) med ingen/begrenset logikk på server
  • 30. Standard WCF Asynkrone kall/meldingshåndtering CQRS Distribuert utvikling på .NET-plattformen Page 26 , 12.10.2010 CRUD med mye logikk på serveren
  • 31. WCF Data Services Distribuert utvikling på .NET-plattformen Page 27 , 12.10.2010 Eksponere OData eller RESTful interface
  • 32. Standard WCF mellom klient og server – hente data Meldingsbasert CQRS Distribuert utvikling på .NET-plattformen Page 28 , 12.10.2010 Mer komplisert applikasjon med mye koblinger. SOA?
  • 33. Distribuert utvikling på .NET-plattformen Page 29 , 12.10.2010 Forretningsperspektiv Publiser «Vare kjøpt» Kjøp vare Oppdater rabatt Lagre kjøpsinformasjon Salg Abonner på «Kundestatus oppdatert» Abonner på «Vare kjøpt» Kunde Frakt Publiser«Kundestatus oppdatert»
  • 34. Har oppdeling i tjenester, bruk av køer osv. føringer for fysisk deling? Nei Trenger ikke være en maskin per tjeneste Trenger ikke være web services mellom tjenester Kan ha forskjellig transportprotokoller mellom tjenester Distribuert utvikling på .NET-plattformen Page 30 , 12.10.2010 Hardwareperspektivet
  • 35. Distribuert utvikling på .NET-plattformen Page 31 , 12.10.2010 Tid for diskusjon
  • 36. WCF WCF RIA Services WCF Data Services Biztalk NServiceBus Rhino Service Bus Azure Distribuert utvikling på .NET-plattformen Page 32 , 12.10.2010 Teknologiene
  • 37. «Apart of the .NET Framework that provides a unified programming model for rapidly building service-oriented applications that communicate across the web and the enterprise» MSDN Distribuert utvikling på .NET-plattformen Page 33 , 12.10.2010 Windows Communication Foundation
  • 38. Distribuert utvikling på .NET-plattformen Page 34 , 12.10.2010 WCF RIA Services «WCF RIA Services lets you quickly build N-Tier Silverlight client applications without needing to focus on the service plumbing to get data into and out of your client application from back-end services, logic and data access» MSDN
  • 39.
  • 43. Objektene som sendes må være entitetstyper
  • 45.
  • 46. REST-ifisert entitetsmodell med OData Kan returnere XML, JSON eller RDF + XML GET, PUT, POST, DELETE Primærbruk: For andre å konsumere, eventuelt JQuery Distribuert utvikling på .NET-plattformen Page 37 , 12.10.2010 WCF Data Services
  • 47. Eksempelbruk http://dataserver/service.svc/MusicCollection http://dataserver/service.svc/MusicCollection[SomeArtist] http://dataserver/service.svc/MusicCollection[SomeSong]/Genre http://dataserver/service.svc/MusicCollection[SomeArtist]/ReleaseDate[Year eq 2006] http://dataserver/service.svc/MusicCollection?$orderby=ReleaseDate&$skip=100&$top=50 Distribuert utvikling på .NET-plattformen Page 38 , 12.10.2010 WCF Data Services
  • 48. Message Broker Kommuniserer med andre software systemer gjennom en rekke adaptere Tilbyr Enterprise Application Integration Business Process Automation Business-to-business Communication Message Broker Distribuert utvikling på .NET-plattformen Page 39 , 12.10.2010 Microsoft Biztalk Server
  • 49. Forskjellige versjoner Enterprise - $34,999 Standard - $8,499 Branch - $1,800 Developer - $499 per user Distribuert utvikling på .NET-plattformen Page 40 , 12.10.2010 Microsoft Biztalk Server
  • 50. Design av systemer for meldingsbasert arkitektur med message bus Bygget på toppen av MSMQ Open source Laget av Udi Dahan www.nservicebus.com Støtter Store and forward (send and forget) Request / Response Publish / Subscribe Distribuert utvikling på .NET-plattformen Page 41 , 12.10.2010 NServiceBus
  • 51. Gir mostand ved feil bruk Profiler Generic host Convention over configuration Pluggbarhet Sagaer Enhetstesting Distribuert utvikling på .NET-plattformen Page 42 , 12.10.2010 NServiceBus - Diverse
  • 52. Distribuert utvikling på .NET-plattformen Page 43 , 12.10.2010 NServiceBus – Store and forward Venter ikke på bekreftelse på at epost har blitt sendt.
  • 53. Klient: Distribuert utvikling på .NET-plattformen Page 44 , 12.10.2010 NServiceBus – Request / Response
  • 54. Server: Distribuert utvikling på .NET-plattformen Page 45 , 12.10.2010 NServiceBus – Request / Response
  • 55. Klient – håndtere svaret: Distribuert utvikling på .NET-plattformen Page 46 , 12.10.2010 NServiceBus – Request / Response
  • 56. Distribuert utvikling på .NET-plattformen Page 47 , 12.10.2010 NServiceBus – Request / Response – Asynchronous callbacks Hvis klienten går ned mister man meldingen
  • 57. Publisher: Meldinger som hendelser i fortid Distribuert utvikling på .NET-plattformen Page 48 , 12.10.2010 NServiceBus – Publish / Subscribe
  • 58. Publisher: Subscriber: Distribuert utvikling på .NET-plattformen Page 49 , 12.10.2010 NServiceBus – Publish / Subscribe
  • 59. Subscriber: Distribuert utvikling på .NET-plattformen Page 50 , 12.10.2010 NServiceBus – Publish / Subscribe
  • 60. Vil sende en subscription-melding ved oppstart Distribuert utvikling på .NET-plattformen Page 51 , 12.10.2010 NServiceBus – Publish / Subscribe
  • 61. Det tar tid å komme i gang Mye som må konfigureres Verktøy for oppfølgning i produksjon Distribuert utvikling på .NET-plattformen Page 52 , 12.10.2010 NServiceBus - Diverse
  • 62. http://www.nservicebus.com/Roadmap.aspx Mest spennende i neste versjon: Støtte Micrososft Azure Queues og Amazon SQS (Simple Queue Service) Distribuert utvikling på .NET-plattformen Page 53 , 12.10.2010 NServiceBus – Videre utvikling
  • 63. Laget av Oren Eini (Ayende Rahien) Kun Store and forward og Request / Response Mye mindre alternativer enn NServiceBus. Open Source http://github.com/ayende/rhino-esb Distribuert utvikling på .NET-plattformen Page 54 , 12.10.2010 Rhino Service Bus
  • 64. «I liberally stole from both ideas and code from Mass Transit and NServiceBus. My main goal was to get to a level with no configuration, no complexity, high degree of flexibility from design stand point, but a very rigid structure for the users» Oren Eini Detaljer C# 3.0 & MSMQ 4.0 - taking advantage of features such as sub queues, async queue receiving Pluggable Minimal moving parts, strongly opinionated Hard focus on developer productivity and ease of use Conventions, assertions and convictions Distribuert utvikling på .NET-plattformen Page 55 , 12.10.2010 Rhino Service Bus
  • 65. Interessant eksempel på MSDN: «Building Distributed Apps with NHibernate and Rhino Service Bus» Bruke (1)request / response med message bus og (2)utstrakt bruk av caching for å (3)gi rask respons og (4)støtte occasionally connected , samt (5)samle queries for å gi et naturlig kodeinterface og unngå chatty interface mellom klient og server. Distribuert utvikling på .NET-plattformen Page 56 , 12.10.2010 Rhino Service Bus - Eksempel
  • 66. Distribuert utvikling på .NET-plattformen Page 57 , 12.10.2010 Rhino Service Bus - Eksempel Rhino Service Bus som service bus over MSMQ:
  • 67. Distribuert utvikling på .NET-plattformen Page 58 , 12.10.2010 Rhino Service Bus - Eksempel Ved initialisering – Sende en request for å få svar på alle queries:
  • 68. Distribuert utvikling på .NET-plattformen Page 59 , 12.10.2010 Rhino Service Bus - Eksempel Integrert bruk av cache for å gi hurtig respons:
  • 69. Distribuert utvikling på .NET-plattformen Page 60 , 12.10.2010 Rhino Service Bus - Eksempel Mottak av melding på serversiden, samt respons: Alt som skjer i en message batch wrappes i en transaksjon
  • 70. Distribuert utvikling på .NET-plattformen Page 61 , 12.10.2010 Rhino Service Bus - Eksempel Håndtering av respons fra server på klienten:
  • 71. Hvorfor han lagde det http://ayende.com/Blog/archive/2008/12/17/rhino-service-bus.aspx Ayende sine blogposter om Rhino Service Bus: http://ayende.com/Blog/category/554.aspx Asynchrounous eksempel på MSDN (part 1 & 2) http://msdn.microsoft.com/en-us/magazine/ff796225.aspx http://msdn.microsoft.com/en-us/magazine/ff872394.aspx Distribuert utvikling på .NET-plattformen Page 62 , 12.10.2010 Rhino Service Bus – Mer info
  • 72. Distribuert utvikling på .NET-plattformen Page 63 , 12.10.2010 NServiceBus vs Biztalk
  • 73. Distribuert utvikling på .NET-plattformen Page 64 , 12.10.2010 Azure
  • 74. NServiceBusogmeldingseksemplerfra Sverre Hundeide: http://www.slideshare.net/sverrehundeide/introduksjon-til-nservicebus Presentasjonerrundtmeldingsbasertarkitekturpå NNUG Sverre Hundeide, Ole-Marius Moe-Helgesen, Jan OveSkogheim Olsen http://www.udidahan.com/ http://www.msdn.com Distribuert utvikling på .NET-plattformen Page 65 , 12.10.2010 Referanser
  • 75. Spørsmål? Distribuert utvikling på .NET-plattformen Page 66 , 12.10.2010