'. '

ProviderAPI

From APIDesign

(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
-
Rules for extending [[APIDesignPatterns:ProviderAPI|API designed for implementors]] are very different to those for [[APIDesignPatterns:ClientAPI|API that can only be called]]. In case you have a provider that implements your interface at a given time, the obvious expectation of that person seems to be that the once provided implementation, written and potentially compile once, will continue to work forever.
+
Rules for extending [[APIDesignPatterns:ProviderAPI|API designed for implementors]] are very different to those for [[APIDesignPatterns:ClientAPI|API that can only be called]]. In case you have a provider implementing your interface, the obvious expectation of that person seems to be that the once provided implementation, written and potentially compiled once in a time, will continue to work forever.
The easiest way to break this promise is to add new non-implemented methods into the type. As such do not add new methods to ''interface''s or ''abstract classes'' implemented by some [[APIDesignPatterns:ProviderAPI|providers]]. This immediately breaks the promise of source [[BackwardCompatibility]].
The easiest way to break this promise is to add new non-implemented methods into the type. As such do not add new methods to ''interface''s or ''abstract classes'' implemented by some [[APIDesignPatterns:ProviderAPI|providers]]. This immediately breaks the promise of source [[BackwardCompatibility]].

Revision as of 07:08, 23 October 2008

Rules for extending API designed for implementors are very different to those for API that can only be called. In case you have a provider implementing your interface, the obvious expectation of that person seems to be that the once provided implementation, written and potentially compiled once in a time, will continue to work forever.

The easiest way to break this promise is to add new non-implemented methods into the type. As such do not add new methods to interfaces or abstract classes implemented by some providers. This immediately breaks the promise of source BackwardCompatibility.

TBD: Fragile methods additions

TBD: Interfaces and clear definition of a version

Personal tools
buy