>
 Thursday, January 05, 2006
« Article - Designing WCF Contracts | Main | ASP.NET Pro Column Kickoff - Dynamic The... »

I had some questions on versioning contracts, so I thought I'd write up a quick list of tips on this subject, some of which applies to any platform where contracts drive communications (read: web services in general).

Point #1 – breaking changes require contract versioning

Here are an example of some breaking changes that cause serialization requirements for a service to change:

  • Remove operations
  • Change operation name
  • Remove operation parameters
  • Add operation parameters
  • Change an operation parameter name or data type
  • Change an operation's return value type
  • Change the serialized XML format for a parameter type (data contract) or operation (message contract) by explicitly using .NET attributes or custom serialization code
  • Modify service operation encoding formats (RPC Encoding vs. Document Literal)

Point #2 – modifications to implementation semantics require contract versioning

Even if there are no contract versioning violations from #1, if the implementation semantics of an operation have changed this warrants contract versioning. If your clients call an Add operation and you decide that Add will no longer add, it will subtract...then your existing clients should continue to call the "old service operation" and you should create a new operation for the subtract operation. If the change is subtle, and if clients will not be affected by the change, no need to create a new operation.

Do you have to version the contract if you add a new operation? Not necessarily, however if you have a contract that has been published with methods A, B and C...and clients have been programming against that contract, then when you add methods D and E it would be good to provide a distinction between the original contract, and the new one. If the new methods are still related to the same contract, you can provide a new contract by the same name, with a new namespace.

Point #3 – you can avoid contract versioning

You can reduce the changes of #1 and #2 being directly violated. For example, a parameter can receive alternate serialization formats, the service can opt to forgive missing elements, or ignore extra elements. You can design the service contract to be forgiving by things like this:

  • Using optional elements in data contracts
  • Using IXmlSerializable types and “handling” serialization differences behind the scenes
  • Intercepting parameter serialization and deserialization at a lower level to overcome differences

You can also avoid parameter list modification issues by avoiding specifying a list of parameters in your methods. For example instead of:

void Add(int x, int y);

use:

void Add(AddRequest message);

where AddRequest is a type that receives x and y:

[DataContract] public class AddRequest
{

  [DataMember] public int x;

  [DataMember] public int y;

}

Now, if you add another public member to the AddRequest type, and make sure it is not a required element, old clients can send their reduced set along:

  [DataMember(IsRequired="false")] public int z;

You can preserve unknown serialization elements as well, on the client or on the service side, by implementing IUnknownSerializationData in your data contract types. You can find out more about this in my book chapter on Contracts, which will be posted when I launch my book blog this week.

1/5/2006 2:29 AM Indigo  | Comments [14]  |  View reactions  |  Trackback
Saturday, July 14, 2007 2:44:41 PM (GMT Standard Time, UTC+00:00)
Wow! Your Guest Book - Is Awesome! Many Thanks!

cunt pic | http://rubyurl.com/khy | old cunt | http://rubyurl.com/dOa | sex cunt | http://rubyurl.com/YtE | hot cunt | http://rubyurl.com/YcK | eat cunt | http://rubyurl.com/1bF | cunt lip | http://rubyurl.com/JWx | wet cunt | http://rubyurl.com/VNW | red cunt | http://rubyurl.com/stZ | cum cunt | http://rubyurl.com/CQx | ass cunt | http://rubyurl.com/X65 | fat cunt | http://rubyurl.com/nn1 | cunt eat | http://rubyurl.com/3Dd | her cunt | http://rubyurl.com/NrK | big cunt | http://rubyurl.com/THk | cunt cute | http://rubyurl.com/11Z | huge cunt | http://rubyurl.com/DwU | open cunt | http://rubyurl.com/dOp | teen cunt | http://rubyurl.com/heI | wife cunt | http://rubyurl.com/P36 | lick cunt | http://rubyurl.com/wIZ | cunt fuck | http://rubyurl.com/GOv | sexy cunt | http://rubyurl.com/lnv | milf cunt | http://rubyurl.com/XmK | big cunts | http://rubyurl.com/LIM | pink cunt | http://rubyurl.com/Trz | cute cunt | http://rubyurl.com/uTD | cunt hair | http://rubyurl.com/4l7 | suck cunt | http://rubyurl.com/TWC | tiny cunt | http://rubyurl.com/vrf | anal cunt | http://rubyurl.com/5wk | nice cunt | http://rubyurl.com/VUt | bald cunt | http://rubyurl.com/7Nb | cunt hole | http://rubyurl.com/kLg | deep cunt | http://rubyurl.com/Drd | ugly cunt | http://rubyurl.com/Z32 | nude cunt | http://rubyurl.com/zOb | free cunt | http://rubyurl.com/0Xy | cunt shot | http://rubyurl.com/t7O | cunt suck | http://rubyurl.com/9wt | cunt cock | http://rubyurl.com/aTY | black cunt | http://rubyurl.com/WwB | pussy cunt | http://rubyurl.com/xNy | naked cunt | http://rubyurl.com/k6g | dirty cunt | http://rubyurl.com/H0I | young cunt | http://rubyurl.com/5ne | tight cunt | http://rubyurl.com/TmY | cunt video | http://rubyurl.com/MGx | cunt movie | http://rubyurl.com/G76 | juicy cunt | http://rubyurl.com/819 | ebony cunt | http://rubyurl.com/TZU

Keep Doing That!
Saturday, July 14, 2007 7:36:36 PM (GMT Standard Time, UTC+00:00)
Wow! Your Guest Book - Is Awesome! Many Thanks!

big cunt lip | http://rubyurl.com/fxf | old wet cunt | http://rubyurl.com/P8a | hot old cunt | http://rubyurl.com/mRP | old cunt pic | http://rubyurl.com/yyE | fat cunt lip | http://rubyurl.com/DE7 | big cunt pic | http://rubyurl.com/YKG | big fat cunt | http://rubyurl.com/Pze | wet cunt pic | http://rubyurl.com/EVx | cum wet cunt | http://rubyurl.com/nuw | red hot cunt | http://rubyurl.com/ENg | fat cunt pic | http://rubyurl.com/tHS | big cunt fat | http://rubyurl.com/elP | rate my cunt | http://rubyurl.com/Z9b | big wet cunt | http://rubyurl.com/mIH | cunt eat her | http://rubyurl.com/ax5 | big cunt old | http://rubyurl.com/WFk | eat her cunt | http://rubyurl.com/FK1 | deep in cunt | http://rubyurl.com/2LF | wet cunt lip | http://rubyurl.com/Kqq | big cunt tit | http://rubyurl.com/o82 | hot wet cunt | http://rubyurl.com/GIy | ass cunt tit | http://rubyurl.com/idm | ass cum cunt | http://rubyurl.com/kCE | fat old cunt | http://rubyurl.com/n04 | big old cunt | http://rubyurl.com/o2G | hot cunt pic | http://rubyurl.com/DBX | free old cunt | http://rubyurl.com/SzM | long cunt lip | http://rubyurl.com/RUc | cunt sex fuck | http://rubyurl.com/QNa | red head cunt | http://rubyurl.com/eBX | hot sexy cunt | http://rubyurl.com/UfF | cunt fat open | http://rubyurl.com/21G | old cunt fuck | http://rubyurl.com/xpQ | fuck ass cunt | http://rubyurl.com/hrj | fill her cunt | http://rubyurl.com/1Zy | whip her cunt | http://rubyurl.com/6UW | hot free cunt | http://rubyurl.com/eLg | red cunt hair | http://rubyurl.com/BZO | lick her cunt | http://rubyurl.com/8TU | old ugly cunt | http://rubyurl.com/Lq9 | big cunt hole | http://rubyurl.com/Dem | cunt pic free | http://rubyurl.com/24W | close up cunt | http://rubyurl.com/ero | wet teen cunt | http://rubyurl.com/eeO | hot cunt fuck | http://rubyurl.com/bQw | hot teen cunt | http://rubyurl.com/vQA | ass cunt fuck | http://rubyurl.com/XFn | very old cunt | http://rubyurl.com/0Rv | free cunt cam | http://rubyurl.com/fo3 | huge cunt lip | http://rubyurl.com/y2a

Keep Doing That!
Thursday, July 19, 2007 12:12:20 PM (GMT Standard Time, UTC+00:00)
Wow!

asian free porn young | http://rubyurl.com/Pg0 | black porn teen young | http://rubyurl.com/Xxq | young black porn star | http://rubyurl.com/7U2 | young asian porn star | http://rubyurl.com/1jn | free movie porn young | http://rubyurl.com/P26 | porn teen video young | http://rubyurl.com/yHJ | model porn teen young | http://rubyurl.com/orO | porn star sarah young | http://rubyurl.com/VGu | porn sarah star young | http://rubyurl.com/kFQ | black porn star young | http://rubyurl.com/aHs | young teen porn thumb | http://rubyurl.com/TH0 | free young woman porn | http://rubyurl.com/AWM | clip porn video young | http://rubyurl.com/LYY | free young porn movie | http://rubyurl.com/gmB | free young porn video | http://rubyurl.com/GIs | asian porn star young | http://rubyurl.com/42P | young teen porn video | http://rubyurl.com/ouf | young sweet teen porn | http://rubyurl.com/u81 | free porn story young | http://rubyurl.com/aix | very young porn movie | http://rubyurl.com/IZg | young gay porn picture | http://rubyurl.com/GtR | free chubby young porn | http://rubyurl.com/6BB | porn really teen young | http://rubyurl.com/jvZ | gay picture porn young | http://rubyurl.com/2iK | gallery old porn young | http://rubyurl.com/zhv | virgin teen young porn | http://rubyurl.com/5Ls | hailey porn star young | http://rubyurl.com/eZo | gallery porn red young | http://rubyurl.com/jvl | really young teen porn | http://rubyurl.com/8c3 | banned young teen porn | http://rubyurl.com/jkZ | free young virgin porn | http://rubyurl.com/aCG | cassie porn star young | http://rubyurl.com/aiz | little young teen porn | http://rubyurl.com/GZY | blonde porn very young | http://rubyurl.com/wlx | lesbian old porn young | http://rubyurl.com/xRi | fuck mature porn young | http://rubyurl.com/xMb | hottest porn star young | http://rubyurl.com/J4j | amateur young teen porn | http://rubyurl.com/FM5 | young teen porn picture | http://rubyurl.com/1V8 | picture porn teen young | http://rubyurl.com/FkG
Friday, July 27, 2007 6:54:50 AM (GMT Standard Time, UTC+00:00)
Wow! Your Guest Book - Is Awesome! Many Thanks!

cum pussy milf | http://rubyurl.com/Kd5 | non nude pussy | http://rubyurl.com/lFD | ass nice pussy | http://rubyurl.com/Q4A | ass hole pussy | http://rubyurl.com/Ltd | wet pink pussy | http://rubyurl.com/64u | lick cum pussy | http://rubyurl.com/Vgl | lick own pussy | http://rubyurl.com/NdA | old pink pussy | http://rubyurl.com/XEY | huge pussy wet | http://rubyurl.com/Rqx | bald pussy tgp | http://rubyurl.com/aKq | lick her pussy | http://rubyurl.com/ERf | man lick pussy | http://rubyurl.com/w4F | pussy wet game | http://rubyurl.com/ldC | fat huge pussy | http://rubyurl.com/z8E | pink pussy cat | http://rubyurl.com/y5g | guy lick pussy | http://rubyurl.com/2Rb | huge pic pussy | http://rubyurl.com/ksk | xxx bald pussy | http://rubyurl.com/MLa | sexy pussy pic | http://rubyurl.com/tSH | sexy old pussy | http://rubyurl.com/2CW | big sexy pussy | http://rubyurl.com/iZG | hot bald pussy | http://rubyurl.com/Nmn | huge pussy tit | http://rubyurl.com/YzE | bald pussy cum | http://rubyurl.com/Byg | bald red pussy | http://rubyurl.com/O06 | bbw bald pussy | http://rubyurl.com/mr9 | bald old pussy | http://rubyurl.com/wR0 | hot sexy pussy | http://rubyurl.com/jBr | free wet pussy | http://rubyurl.com/EQV | hot tiny pussy | http://rubyurl.com/oTX | bed pussy tiny | http://rubyurl.com/1jZ | she lick pussy | http://rubyurl.com/y5X | pussy tgp lick | http://rubyurl.com/Mjo | tiny pussy tgp | http://rubyurl.com/1Kg | big pink pussy | http://rubyurl.com/fze | lick pussy lip | http://rubyurl.com/QK5 | lick old pussy | http://rubyurl.com/ggZ | sweet in pussy | http://rubyurl.com/2eP | huge pussy sex | http://rubyurl.com/uhd | hot huge pussy | http://rubyurl.com/oew | cum huge pussy | http://rubyurl.com/jFc | cum fuck pussy | http://rubyurl.com/Yt0 | free pussy wet | http://rubyurl.com/sPN | wet teen pussy | http://rubyurl.com/i13 | big huge pussy | http://rubyurl.com/yJ2 | hot pussy lick | http://rubyurl.com/zSs | pink pussy pic | http://rubyurl.com/jhY | ass huge pussy | http://rubyurl.com/1Xl | lick pussy pic | http://rubyurl.com/QZC | tiny pussy sex | http://rubyurl.com/vQW

Keep Doing That!
Tuesday, October 16, 2007 10:53:16 AM (GMT Standard Time, UTC+00:00)
solidarity externalistic leash monazite aftercome nonacquiescent ladronize liveried
<a href= http://www.geocities.com/zeldaslife/Zelda_blade_and_rock_.html >Zelda Blade Wreckers</a>
http://www.jbeasley.com
Thursday, October 18, 2007 3:22:24 PM (GMT Standard Time, UTC+00:00)
solidarity externalistic leash monazite aftercome nonacquiescent ladronize liveried
<a href= http://www.arald.com/Arben_Arald.htm >Braber, den</a>
http://www.irwinconnect.com/
Saturday, October 20, 2007 10:10:42 PM (GMT Standard Time, UTC+00:00)
solidarity externalistic leash monazite aftercome nonacquiescent ladronize liveried
<a href= http://oi.uchicago.edu/OI/IS/ALIZADEH/NN_SPR97/NN_Spr97.html >Excavations at Chogha Mish</a>
http://www.freewebs.com/soulsista1/
Wednesday, October 24, 2007 7:43:20 AM (GMT Standard Time, UTC+00:00)
yxfrgbqle cpdmo xpqybjiw mudnw metd npqtx qbslgfe
Monday, November 19, 2007 9:58:55 PM (GMT Standard Time, UTC+00:00)
Nice site. Thanks:-)
Wednesday, November 28, 2007 9:23:37 PM (GMT Standard Time, UTC+00:00)
Very good site. Thank you:-)
Friday, November 30, 2007 10:16:38 PM (GMT Standard Time, UTC+00:00)
Cool site. Thanks.




Friday, November 30, 2007 10:17:03 PM (GMT Standard Time, UTC+00:00)
Cool site. Thanks.




Tuesday, December 18, 2007 4:52:13 PM (GMT Standard Time, UTC+00:00)
protoprism deceivingly perishableness kodakry counterdisengage pelamyd vasty tabularization
<a href= http://5-ww.mxjxqf.com/ >Pap Smear During Menstrual Period</a>
http://k-l0.mxjxqf.com/
<a href= http://u-le.mxjxqf.com/ >Where To Buy Ev Cars</a>
http://d-7o.mxjxqf.com/
Friday, December 21, 2007 2:05:14 AM (GMT Standard Time, UTC+00:00)
protoprism deceivingly perishableness kodakry counterdisengage pelamyd vasty tabularization
<a href= http://www.klassworks.com.au/ >KlassWorks</a>
http://www.channelestate.co.za/
Name
E-mail
(will show your gravatar icon)
Home page

Comment (HTML not allowed)  

    ON THIS PAGE
    SEARCH
    CATEGORIES
    ARCHIVES
    BLOGROLL

Designed by NUKEATION STUDIOS