Versiecontrole in de keten
-
Upload
marc-de-graauw -
Category
Technology
-
view
417 -
download
0
Transcript of Versiecontrole in de keten
Versiecontrole in de keten
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
3
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
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
4
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
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
5
Klassieke Backward Compatibiliteit
Doc 1.0- - - - - - - -- - - - - - - -- - - - - - - -- - - - -
App v. 1.0
Doc 1.1- - - - - - - -- - - - - - - -- - - - - - - -- - - - -
App v. 1.1
Doc 2.0- - - - - - - -- - - - - - - -- - - - - - - -- - - - -
App v. 2.0
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
6
Klassieke Backward Compatibiliteit
• Nieuwe applicatie kan oude documenten lezen
• Eventueel: eenmalige upgrade van documenten– “Wilt u dit document opslaan als Word 97?”
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
7
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
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
8
Forward Compatibiliteit
Doc 2.0- - - - - - - -- - - - - - - -- - - - - - - -- - - - -
App v. 2.0
Doc 1.1- - - - - - - -- - - - - - - -- - - - - - - -- - - - -
App v. 1.1 App v. 1.0
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
9
Klassiek...
1.0 1.1 2.0
tijd
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
10
In de keten...
1.0
1.1
2.0
1.0
1.0
1.1
1.1
2.0
2.0
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
11
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
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
12
Recap: Backward, niet forward
Land {NL, BE}
App v. 1
Land {NL, BE, DE}
App v. 2
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
13
Recap: Forward, niet backward
Land {NL, BE, DE}
App v. 1
Land {NL, BE}
App v. 2
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
14
Geen forward compatibiliteit
Zender v. 1
Zender v. 2
Ontvanger v. 1
Ontvanger v. 2
Land {NL, BE}
Land {NL, BE, DE}
Problemen voor nieuwe zender en oude ontvanger
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
15
Geen backward compatibiliteit
Zender v. 1
Zender v. 2
Ontvanger v. 1
Ontvanger v. 2
Land {NL, BE, DE}
Land {NL, BE}
Problemen voor oude zender en nieuwe ontvanger
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
16
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
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
17
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
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
18
Wat houdt FC in?
Set van alle documenten geproduceerd door L1
Set van alle documenten geaccepteerd door L1
L1: voornaam, achternaam, *
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
19
Wat houdt FC in?
Set van alle documenten geproduceerd door L1
Set van alle documenten geaccepteerd door L2
Set van alle documenten geproduceerd door L2
Set van alle documenten geaccepteerd door L1
L1: voornaam, achternaam, * L2: voornaam, achternaam, titels, *
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
20
Wat houdt FC in?
voornaam, achternaam
voornaam, achternaam, titels, *
voornaam, achternaam, titels
voornaam, achternaam, *
L1: voornaam, achternaam, * L2: voornaam, achternaam, titels, *
Teveel Forward Compatibility?
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
22
Nadelen mustUnderstand
• <my:security-header soap:mustUnderstand = "1"> • alleen voor SOAP Headers• verder toepasbaar, maar: • extra attribuut per element• werkt alleen voor elementen
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
23
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
07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com
24
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
Vragen?