Qual è il termine per reimplementare una vecchia API in termini di una nuova API

1

Il motivo per farlo è risolvere il caso in cui una nuova API non è più retrocompatibile con un'API precedente.

Per spiegare, basta dire che esiste una vecchia API v1.0. Il creatore di questa API decide che è rotto e funziona su una nuova API v1.1 che interrompe intenzionalmente la compatibilità con la vecchia API v1.0. Ora, qualsiasi programma scritto contro la vecchia API non può essere ricompilato così com'è con la nuova API.

Quindi diciamo che c'è una grande app scritta contro la vecchia API e lo sviluppatore non ha accesso al codice sorgente. Una soluzione sarebbe quella di ri-implementare una vecchia API "personalizzata" v1.0 in termini di nuove chiamate API v1.1. Quindi l'API v1.0 "personalizzata" sta mantenendo la stessa interfaccia / metodi dell'API v1.0 ma all'interno della sua implementazione sta effettivamente effettuando chiamate ai nuovi metodi API v1.1.

Quindi l'app di grandi dimensioni può essere compilata e collegata con l'API v1.0 "personalizzata" e la nuova API v1.1 senza modifiche importanti al codice sorgente.

Esiste un termine per questa pratica?

C'è un recente esempio di ciò che accade in Porta di XScreenSaver di Jamie Zawinski per iPhone - ha implementato nuovamente l'API di OpenGL 1.3 in termini di API OpenGL ES 1.1. In questo caso, OpenGL 1.3 rappresenta la "vecchia" API e OpenGL ES 1.1 rappresenta la "nuova" API.

    
posta dodgy_coder 20.06.2012 - 04:32
fonte

2 risposte

6

Se ti capisco bene, implementeresti il modello di adattatore per isolare le chiamate API dal resto del la tua applicazione. Quindi, quando è arrivato il momento di passare dalla v1.0 alla v1.1, dovresti solo modificare l'implementazione del wrapper API per effettuare chiamate diverse e il resto della tua applicazione non lo saprebbe o non le interesserebbe.

Quindi la struttura della tua applicazione sarà simile a questa:

.----------.       .-------------.       .----------.
| Your App | ----> | API Wrapper | ----> | API v1.0 |
'----------'       '-------------'       '----------'
                              |
                              |          .----------.
                              '--------> | API v1.1 |
                                         '----------'
    
risposta data 20.06.2012 - 04:42
fonte
0

Grazie ad Anna Lear e Yannis Rizos per la loro risposta, ovvero che l'API 1.0 è diventata effettivamente un adattatore per l'API 1.1.

Volevo solo proporre una risposta più specifica. Nel mio caso l'API 1.0 ha mantenuto la stessa interfaccia pubblica, quindi l'applicazione non ha bisogno di modifiche. L'unica cosa che è cambiata è l'implementazione interna della stessa API 1.0 - ora ha una dipendenza dalla nuova API 1.1. Quindi, invece di "porting l'applicazione" per utilizzare l'API 1.1, siamo "porting dell'API" .

    
risposta data 21.06.2012 - 03:46
fonte

Leggi altre domande sui tag