Declaración del problema de compatibilidad con versiones anteriores

Como de costumbre, démosle una definición semántica de "compatibilidad con versiones anteriores" antes de comenzar la presentación.







La compatibilidad con versiones anteriores es propiedad de todo el sistema API para ser estable en el tiempo. Esto significa lo siguiente: el código escrito por desarrolladores que utilizan su API continúa funcionando correctamente durante mucho tiempo . Hay dos grandes preguntas en esta definición y dos aclaraciones.







  1. ¿Qué significa "funcionalmente correcto"?







    Esto significa que el código continúa realizando su función: resolver alguna tarea del usuario. Esto no significa que siga funcionando de la misma manera: por ejemplo, si proporciona una biblioteca de IU, cambiar detalles de diseño funcionalmente irrelevantes, como la profundidad de la sombra o la forma del trazo del borde, no romperá la compatibilidad con versiones anteriores. Pero, por ejemplo, cambiar el tamaño de los componentes visuales probablemente lleve al hecho de que algunos diseños personalizados se desmoronen.







  2. ¿Qué significa "mucho tiempo"?







    Desde nuestro punto de vista, la duración del mantenimiento de la retrocompatibilidad debería estar vinculada a la duración de los ciclos de vida de las aplicaciones en el área temática correspondiente. Una buena pauta en la mayoría de los casos son los períodos LTS de las plataformas. Dado que la aplicación aún se reescribirá debido al final del soporte de la plataforma, es normal sugerir cambiar también a la nueva versión de API. En las principales áreas temáticas (sistemas operativos de escritorio y móviles), este período se calcula en varios años.









Por qué es necesario mantener la compatibilidad con versiones anteriores (incluida la adopción de las medidas necesarias en la etapa de diseño de la API) queda claro en la definición. La terminación de la aplicación (total o parcial) por culpa del proveedor de la API es un evento extremadamente desagradable, si no un desastre, para cualquier desarrollador, especialmente si paga dinero 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 estos temas con más detalle en los siguientes capítulos. Además, en la Sección III, también discutiremos cómo alertar a los consumidores sobre las versiones más nuevas y el final del soporte, y cómo alentarlos a migrar a versiones más nuevas de API.










Este es un borrador para un capítulo futuro del libro sobre desarrollo de API. El trabajo se realiza en Github .

La versión en inglés del mismo capítulo se publica en medium . Le agradecería si pudiera compartirlo en reddit; yo mismo no puedo según la política de la plataforma.








All Articles