Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Building a Service Oriented SystemPart 1: Introduction<br />Dennis Doomen<br />
Agenda<br />Uitgangspunten & Visie<br />Eisenaan de idealearchitectuur<br />De idealearchitectuur<br />Web Service Softwar...
Bedoeldvoorgroteresystemen<br />Mogelijkmeerdere frontends<br />Voorbereid op koppelingen met externesystemen<br />Conform...
Visie<br />External<br />System<br />Internet<br />Extranet / DMZ<br />Website<br />Silverlight<br />Client<br />Intranet<...
Schaalbaar met eenhogedoorvoersnelheid (!)<br />Ontkoppeld<br />Testbaar<br />Veilig en betrouwbaar<br />Agile<br />De ide...
Overzicht<br />Service Interfaces<br />Service Contracts<br />Data Contracts<br />Host<br />Service Implementation<br />Me...
Services<br />Verantwoordelijkheden<br />Doorgeefluik naar Business Actions<br />Business georiënteerd, niet technisch/app...
Services<br />Aandachtspunten<br />Chunky messages (i.p.v. chatty)<br />Naamgeving moet consistent en intuïtief zijn<br />...
Business Entities<br />Verantwoordelijkheden<br />Vangengedrag en conceptenuit het domein<br />Bevattenallebedrijfsregels ...
Business Entities<br />Aandachtspunten<br />Ontwerpvolgens de DDD gedachte<br />Gebruik UML class diagrammen<br />Identifi...
Voorbeeld Business Entity Model<br />
Business (Process) Actions<br />Verantwoordelijkheden<br />Kortdurende Units-of-Work<br />Bepalen levensduur van ACID tran...
Business (Process) Actions<br />Aandachtspunten<br />Nooitgedistribueerdetransactiesgebruiken<br />Minimalevalidatie van b...
Repositories<br />Verantwoordelijkheden<br />Regelentoegang tot de database<br />Gedraagtzichalseencollectie van entiteite...
Repositories<br />Aandachtspunten<br />Gebruikeen ORM zoalsb.v. NHibernate / EF4<br />Eén repository per aggregratie root ...
Service Agents<br />Verantwoordelijkheden<br />Technische details van de externesystemenafschermen<br />Beperkt impact van...
Service Agents<br />Aandachtspunten<br />Gebruik interfaces omexterneafhankelijkhedentekunnenmocken<br />Ook reporting ser...
Business Workflows<br />Verantwoordelijkheden<br />Langdurende (asynchrone) units-of-work<br />Units-of-work waarbijextern...
Schaalbaar met eenhogedoorvoersnelheid<br />Geen state (behalve de database)<br />Caching (evt. gedistribueerd)<br />Servi...
Ontkoppeld<br />Service agents<br />Platformonafhankelijke Web service technologie<br />Interfaces en dependency injection...
Veilig en betrouwbaar<br />Authenticatie op service niveau<br />Autorisatie op business process niveau<br />Exception shie...
Agile<br />Design Patterns om de ilities te garanderen<br />Bedrijfslogica gecentraliseerd in domain model<br />Unittests ...
Web Service Software Factory<br />Service Interfaces<br />Service Contracts<br />Data Contracts<br />Host<br />Code wordt ...
Web Service Software Factory<br />
Demo<br />
Vragen?<br />dennis.doomen@avivasolutions.nl<br />ddoomen@twitter<br />www.dennisdoomen.net<br />
Resources<br />Aviva Solutions blog (nieuwste versie van sheets & demoproject)http://blog.avivasolutions.nl<br />Web Servi...
Upcoming SlideShare
Loading in …5
×

Building a Service Oriented System: An Introduction

1,128 views

Published on

Published in: Technology, Business
  • Be the first to comment

  • Be the first to like this

Building a Service Oriented System: An Introduction

  1. 1. Building a Service Oriented SystemPart 1: Introduction<br />Dennis Doomen<br />
  2. 2. Agenda<br />Uitgangspunten & Visie<br />Eisenaan de idealearchitectuur<br />De idealearchitectuur<br />Web Service Software Factory: Modeling Edition<br />
  3. 3. Bedoeldvoorgroteresystemen<br />Mogelijkmeerdere frontends<br />Voorbereid op koppelingen met externesystemen<br />Conformeertaan patterns, maar welpragmatisch<br />Microsoft, unless…<br />Uitgangspunten<br />
  4. 4. Visie<br />External<br />System<br />Internet<br />Extranet / DMZ<br />Website<br />Silverlight<br />Client<br />Intranet<br />Sharepoint Portals<br />Office Business Apps<br />Smart Client<br />Enterprise Service Bus<br />Application<br />Server<br />Internal<br />System<br />
  5. 5. Schaalbaar met eenhogedoorvoersnelheid (!)<br />Ontkoppeld<br />Testbaar<br />Veilig en betrouwbaar<br />Agile<br />De idealearchitectuur is…<br />
  6. 6. Overzicht<br />Service Interfaces<br />Service Contracts<br />Data Contracts<br />Host<br />Service Implementation<br />Message Contracts<br />Business Logic<br />Business Actions<br />Business Workflows<br />Business Entities<br />Resource Access<br />Repositories<br />Service Agents<br />Database<br />
  7. 7. Services<br />Verantwoordelijkheden<br />Doorgeefluik naar Business Actions<br />Business georiënteerd, niet technisch/applicatie (!)<br />Identificatie o.b.v. functionele sleutels<br />Verzorgt (protocol-afhankelijke) authenticatie<br />Schermt technische fouten af<br />
  8. 8. Services<br />Aandachtspunten<br />Chunky messages (i.p.v. chatty)<br />Naamgeving moet consistent en intuïtief zijn<br />Documenteer services centraal<br />Altijd expliciete request en response berichten<br />Gebruik altijd een WCF wrapper namespace<br />Retourneer functionele unieke codes voor business rule violations<br />
  9. 9. Business Entities<br />Verantwoordelijkheden<br />Vangengedrag en conceptenuit het domein<br />Bevattenallebedrijfsregels en constraints<br />Hebben (in principe) altijdeenfunctionelesleutel<br />Zijn Persistency Ignorant<br />Ontworpen conform de OO-regels en design patterns zodatbedrijfsregels/logicamakkelijkaanpasbaar is<br />
  10. 10. Business Entities<br />Aandachtspunten<br />Ontwerpvolgens de DDD gedachte<br />Gebruik UML class diagrammen<br />Identificeeraggregratierelaties<br />Bepaal cascading gedraga.d.h. aggregratie<br />Implementeervolgens Active Record of Domain Model design pattern<br />Gebruik VAB of Data Annotations voorvalidatie<br />Mogelijk de scope van unittests<br />
  11. 11. Voorbeeld Business Entity Model<br />
  12. 12. Business (Process) Actions<br />Verantwoordelijkheden<br />Kortdurende Units-of-Work<br />Bepalen levensduur van ACID transacties<br />Kan de scope zijn voor unittests<br />Controleren autorisatie<br />Verwerken request en response berichtenuit service interfaces<br />Vertalingtussen data contracten (DTOs) en entiteiten<br />
  13. 13. Business (Process) Actions<br />Aandachtspunten<br />Nooitgedistribueerdetransactiesgebruiken<br />Minimalevalidatie van berichten<br />Besteedt DTO validatieuitaanentiteiten<br />Log op eenslimmemanierzodat auditing mogelijk is<br />Controleeralleen inter-entity rules <br />
  14. 14. Repositories<br />Verantwoordelijkheden<br />Regelentoegang tot de database<br />Gedraagtzichalseencollectie van entiteiten (interface lijkt op die van ICollection)<br />Zouvolgens Transparent Persistency pattern moetenwerken, dus Lazy loading en Automatic flushing<br />Verzorgtoptimalisatieszoals caching<br />Vervangt database excepties door functioneleexcepties<br />
  15. 15. Repositories<br />Aandachtspunten<br />Gebruikeen ORM zoalsb.v. NHibernate / EF4<br />Eén repository per aggregratie root uit het domein model<br />Gebruik interfaces om de database tekunnenfaken<br />ImplementeerIQueryable (LINQ)<br />Gebruik Query Object of Specification patterns<br />
  16. 16. Service Agents<br />Verantwoordelijkheden<br />Technische details van de externesystemenafschermen<br />Beperkt impact van wijzigingen<br />Vertalingtussen interne en externe accounts (single single-on)<br />Biedtadditioneledienstenzoals caching<br />Resistenttegen (tijdelijke) afwezigheid of netwerkproblemen<br />Verzorgt monitoring en tracing van externesystemen<br />
  17. 17. Service Agents<br />Aandachtspunten<br />Gebruik interfaces omexterneafhankelijkhedentekunnenmocken<br />Ook reporting servers en/of file I/O moeten via een service agent verlopen<br />Moeten in principe via een workflow wordengebruikt<br />
  18. 18. Business Workflows<br />Verantwoordelijkheden<br />Langdurende (asynchrone) units-of-work<br />Units-of-work waarbijexternesystemenbetrokkenzijn<br />Gebruikt compensating transactions tijdenseen rollback<br />Aandachtspunten<br />Windows Workflow Foundation is lastigteintegreren met WCF<br />Makkelijkergeworden met .NET 3.5 (WorkflowServiceHost)<br />WF is (nog) afhankelijk van SQL Server (Tip: WFTools project op CodePlex)<br />Koppelingtussen WF en Domain Model o.b.v. functionelesleutels<br />
  19. 19. Schaalbaar met eenhogedoorvoersnelheid<br />Geen state (behalve de database)<br />Caching (evt. gedistribueerd)<br />Services zijnautonoom<br />Geengedistribueerdetransactie’s<br />Logica in .NET, tenzijereen bottleneck is<br />Loadtestsvoorperformancemetingenom die bottlenecks tevinden<br />Evaluatiet.o.v. ideaal<br />
  20. 20. Ontkoppeld<br />Service agents<br />Platformonafhankelijke Web service technologie<br />Interfaces en dependency injection tussenlagen en componenten<br />Testbaar<br />Test Driven Development alsuitgangspunt<br />Mocken van repository/service agents interfaces<br />Unittesten op business procesniveau en business entity niveau, eventueelzonder live database<br />Evaluatie t.o.v. ideaal<br />
  21. 21. Veilig en betrouwbaar<br />Authenticatie op service niveau<br />Autorisatie op business process niveau<br />Exception shielding<br />Logging/tracing, timeout controles<br />FxCop, StyleCopvoor code kwaliteit, uniformemanier van werken<br />Services validerenberichtentegen interne fouten<br />Evaluatie t.o.v. ideaal<br />
  22. 22. Agile<br />Design Patterns om de ilities te garanderen<br />Bedrijfslogica gecentraliseerd in domain model<br />Unittests om kwaliteit te waarborgen<br />Geen technische afhankelijkheid van database<br />Evaluatie t.o.v. ideaal<br />
  23. 23. Web Service Software Factory<br />Service Interfaces<br />Service Contracts<br />Data Contracts<br />Host<br />Code wordt gegenereerd vanuit data contract, service contract en host modellen<br />Service Implementation<br />Message Contracts<br />Business Logic<br />Business Actions<br />Business Workflows<br />Projectenstructuur wordt door Guidance Automation Recipe aangemaakt<br />Business Entities<br />Resource Access<br />Repositories<br />Service Agents<br />Database<br />
  24. 24. Web Service Software Factory<br />
  25. 25. Demo<br />
  26. 26. Vragen?<br />dennis.doomen@avivasolutions.nl<br />ddoomen@twitter<br />www.dennisdoomen.net<br />
  27. 27. Resources<br />Aviva Solutions blog (nieuwste versie van sheets & demoproject)http://blog.avivasolutions.nl<br />Web Service Software Factory: Modeling Editionhttp://msdn.microsoft.com/en-us/library/cc487895.aspx<br />P&P Application Architecture Guide 2.0http://www.codeplex.com/AppArch<br />Applying Domain Driven Design & Patterns, Jimmy Nilssonhttp://domaindrivendesign.org/books/index.html#DDD_apply<br />Workflow Foundation Toolshttp://www.codeplex.com/WFTools<br />

×