Declaração de problema de compatibilidade com versões anteriores

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.







  1. 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.







  2. 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, — . , . :







  1. on-demand , - , ( SDK, , JS API), API . , - .







    , — SDK . , on-demand — , , . , ( ) SDK. , - , API .







  2. 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 .


.







  1. API.







    . API , , . , , . , . , , ( ), , .







  2. .







    , : . 5-10 , — , . , .







  3. ( ) .







    :







    • 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.








All Articles