Versiecontrole in de keten
Het probleem we hebben een keten, en een uitwisseling, met berichten, documenten et cetera iedereen is gelukkig... en nu komt versie 2.0 moet iedereen tegelijk over naar 2.0? en als dat niet kan? hoe regel je een makkelijke overgang 3
Referenties David Orchard Extending and Versioning Languages Part 1, W3C Draft TAG Finding A Theory of Compatible Versions, XML.COM Forward compatibility and extensibility James Clark Validation not necessarily harmful, blog Marc de Graauw On Compatibility - Back and Forth, blog Syntactical and Semantical Compatibility, blog More Compatibility Flavours, blog A Smoother Change to Version 2.0, XML.COM 4
Klassieke Backward Compatibiliteit App v. 1.0 App v. 1.1 App v. 2.0 Doc 1.0 - - - - - Doc 1.1 - - - - - Doc 2.0 - - - - - 5
Klassieke Backward Compatibiliteit Nieuwe applicatie kan oude documenten lezen Eventueel: eenmalige upgrade van documenten Wilt u dit document opslaan als Word 97? 6
Forward Compatibiliteit Oude applicatie kan nieuwe documenten lezen Voorbeeld HTML Ignore Unkown If a user agent encounters an element it does not recognize, it should try to render the element s content. - HTML 4.01 7
Forward Compatibiliteit App v. 2.0 App v. 1.1 App v. 1.0 Doc 2.0 - - - - - Doc 1.1 - - - - - 8
Klassiek... 1.0 1.1 2.0 tijd 9
In de keten... 1.0 1.0 2.0 2.0 1.1 1.1 1.1 1.0 2.0 10
Compabiliteit in de keten... iedereen communiceert met iedereen... geen of beperkte centrale controle in een (groot) bedrijf: allemaal upgraden in een keten: vaak onmogelijk, altijd onwenselijk zenders en ontvangers 11
Recap: Backward, niet forward App v. 1 App v. 2 Land {NL, BE} Land {NL, BE, DE} 12
Recap: Forward, niet backward App v. 1 App v. 2 Land {NL, BE, DE} Land {NL, BE} 13
Geen forward compatibiliteit Zender v. 1 Ontvanger v. 1 Land {NL, BE} Zender v. 2 Ontvanger v. 2 Land {NL, BE, DE} Problemen voor nieuwe zender en oude ontvanger 14
Geen backward compatibiliteit Zender v. 1 Ontvanger v. 1 Land {NL, BE, DE} Zender v. 2 Ontvanger v. 2 Land {NL, BE} Problemen voor oude zender en nieuwe ontvanger 15
Compatibiliteit in de keten In de keten is er altijd een probleem, bij ontbreken FC en BC BC is niet zo moeilijk: oude dataformaten moeten geldig blijven mechanismen voor FC 16
Hoe krijg je forward comp.? In XML Schema met wildcard voorbeeld Ignore unknown in code bakken met XSLT (voorbeeld) NVDL Namespace-based Validation Dispatching Language 17
Wat houdt FC in? Set van alle documenten geaccepteerd door L1 Set van alle documenten geproduceerd door L1 L1: voornaam, achternaam, * 18
Wat houdt FC in? Set van alle documenten geaccepteerd door L1 Set van alle documenten geaccepteerd door L2 Set van alle documenten geproduceerd door L2 Set van alle documenten geproduceerd door L1 L1: voornaam, achternaam, * L2: voornaam, achternaam, titels, * 19
Wat houdt FC in? voornaam, achternaam, * voornaam, achternaam, titels, * voornaam, achternaam, titels voornaam, achternaam L1: voornaam, achternaam, * L2: voornaam, achternaam, titels, * 20
Teveel Forward Compatibility?
Nadelen mustunderstand <my:security-header soap:mustunderstand = "1"> alleen voor SOAP Headers verder toepasbaar, maar: extra attribuut per element werkt alleen voor elementen 22
Capability Compatibility Design Pattern zender: noem alle versies, ook oudere, waarvan je weet dat die je bericht mogen accepteren ontvanger: weet alle versies, ook oudere, die je kunt verwerken voorbeeld 23
mustunderstand IgnoreUnknown is soms niet gewenst medicatieberichten financiële transacties security betrouwbaarheid SOAP Headers hebben mechanisme: <my:security-header soap:mustunderstand = "1"> overruled IgnoreUnknown principe 24
Vragen?