Como de costume, vamos dar uma definição semântica de "compatibilidade com versões anteriores" antes de iniciar a apresentação.
A compatibilidade com versões anteriores é propriedade de todo o sistema API de ser estável ao longo do tempo. Isso significa o seguinte: o código escrito por desenvolvedores usando sua API continua a funcionar corretamente por um longo tempo . Há duas grandes questões para essa definição e dois esclarecimentos para elas.
O que significa "funcionalmente correto"?
Isso significa que o código continua a executar sua função - para resolver alguma tarefa do usuário. Isso não significa que continuará a funcionar da mesma forma: por exemplo, se você fornecer uma biblioteca de IU, alterar detalhes de design irrelevantes funcionalmente, como profundidade de sombra ou forma de contorno de borda, não quebrará a compatibilidade com versões anteriores. Mas, por exemplo, redimensionar os componentes visuais pode causar o desmoronamento de alguns layouts personalizados.
O que significa “muito tempo”?
Do nosso ponto de vista, a duração da manutenção da compatibilidade com versões anteriores deve estar ligada à duração dos ciclos de vida dos aplicativos na área de assunto correspondente. Uma boa diretriz na maioria dos casos são os períodos LTS das plataformas. Como o aplicativo ainda será reescrito devido ao fim do suporte da plataforma, é normal sugerir a mudança para a nova versão da API também. Nas principais áreas temáticas (sistemas operativos desktop e mobile), este período é calculado em vários anos.
Por que a compatibilidade com versões anteriores deve ser mantida (incluindo a tomada das medidas necessárias no estágio de design da API) fica claro na definição. O encerramento da aplicação (total ou parcial) por culpa do provedor de API é um evento extremamente desagradável, senão um desastre, para qualquer desenvolvedor, principalmente se ele pagar por esta API.
: ? ? , , , .
, API. : , , . , , , , API, :
, , , ;
: , ;
, API , .
« API », . : API , , API — — .
NB: : « » API.
, API — , . , : - — , , . : , , .
API, : , .
, API, — . , . :
on-demand , - , ( SDK, , JS API), API . , - .
, — SDK . , on-demand — , , . , ( ) SDK. , - , API .
on-demand , , . , — «» , API, , . , Web-; , — :
- , ;
- ( , , , «» );
, .
. , API — , API.
SDK, API , , HTTP . , , API - SDK, . : SDK — SDK ( - ), . « — », , : API — , API . , , API .
, API stateless SDK ( SDK ), , — API. - API SDK.
— , API. , , - :
- ;
- ;
- .
, API . API - , API, , — . , — , , .
, API , , , () . , API , , , .
, — «», API. , , , , . , , , SDK. , , .
, , ( API) , , .
, API , . , — , , , . «» , API.
, :
- , API, ; , , ;
- API ;
- , API .
.
API.
. API , , . , , . , . , , ( ), , .
.
, : . 5-10 , — , . , .
( ) .
:
- API SDK, API, : API , ;
- code-on-demand SDK, SDK , , - . , , .
Exploraremos essas questões com mais detalhes nos capítulos seguintes. Além disso, na Seção III, também discutiremos como alertar os consumidores sobre versões mais recentes e o fim do suporte, e como incentivá-los a migrar para versões mais recentes da API.
Este é um rascunho para um capítulo futuro do livro sobre desenvolvimento de API. O trabalho é feito no Github .
A versão em inglês do mesmo capítulo é publicada na mídia . Eu agradeceria se você pudesse compartilhar no reddit - eu mesmo não posso de acordo com a política da plataforma.