Versiecontrole in de keten

25

Transcript of Versiecontrole in de keten

Page 1: Versiecontrole in de keten
Page 2: Versiecontrole in de keten

Versiecontrole in de keten

Page 3: 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

Page 4: Versiecontrole in de keten

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

Page 5: Versiecontrole in de keten

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

Page 6: Versiecontrole in de keten

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?”

Page 7: Versiecontrole in de keten

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

Page 8: Versiecontrole in de keten

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

Page 9: Versiecontrole in de keten

07/01/11 09:09 Marc de Graauw - http://www.marcdegraauw.com

9

Klassiek...

1.0 1.1 2.0

tijd

Page 10: Versiecontrole in de keten

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

Page 11: Versiecontrole in de keten

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

Page 12: Versiecontrole in de keten

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

Page 13: Versiecontrole in de keten

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

Page 14: Versiecontrole in de keten

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

Page 15: Versiecontrole in de keten

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

Page 16: Versiecontrole in de keten

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

Page 17: Versiecontrole in de keten

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

Page 18: Versiecontrole in de keten

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, *

Page 19: Versiecontrole in de keten

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, *

Page 20: Versiecontrole in de keten

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, *

Page 21: Versiecontrole in de keten

Teveel Forward Compatibility?

Page 22: Versiecontrole in de keten

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

Page 23: Versiecontrole in de keten

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

Page 24: Versiecontrole in de keten

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

Page 25: Versiecontrole in de keten

Vragen?