Nascondere il protocollo dietro l'API?

4

Continuo a sfidare le pratiche promosse da Erlang. Vedo che consigliano di nascondere la messaggistica dietro l'API

We love messages, but we keep them secret: Something annoying with the previous example

5> Pid ! {self(), {store, bacon}}.
{<0.33.0>,{store,bacon}}
6> Pid ! {self(), {take, bacon}}.
{<0.33.0>,{take,bacon}}
7> Pid ! {self(), {take, turkey}}.
{<0.33.0>,{take,turkey}}
8> flush().
Shell got {<0.51.0>,ok}
Shell got {<0.51.0>,{ok,bacon}}
Shell got {<0.51.0>,not_found}

is that the programmer who's going to use the fridge has to know about the protocol that's been invented for that process. That's a useless burden. A good way to solve this is to abstract messages away with the help of functions dealing with receiving and sending them:

12> kitchen:store(Pid, water).
ok
13> kitchen:take(Pid, water).
{ok,water}
14> kitchen:take(Pid, juice).
not_found

I miei occhi mi fuorviano o è molto più semplice imparare l'API funzionale di "il protocollo"? Cosa succede se avvolgiamo l'API in un'altra API per nascondere il protocollo ancora una volta. Renderà la situazione altrettanto migliore?

    
posta Val 22.03.2017 - 06:02
fonte

1 risposta

4

Ad esempio il protocollo X windowing; è una API di socket binario che tutti ti dicono di usare la libreria XCB per completarne l'uso. Ciò significa che il programmatore che usa non deve preoccuparsi di analizzare e comporre correttamente i pacchetti.

Inoltre, le persone ti dicono di non usare direttamente XCB ma invece di utilizzare un widget toolkit per astrarre XCB. Questo toolkit è spesso orientato agli oggetti e ogni widget racchiude tutte le informazioni necessarie che include la gerarchia dei widget che sottoscrive l'input dell'utente ai tempi corretti, ...

Poi ci sono persone che scrivono librerie per avvolgere il toolkit in qualcosa che trovano più semplice da usare.

Di solito è dove finisce.

Come altro esempio nessuno fa http non corretto, ma ti dice di usare curl che gestirà l'analisi, gestendo i diversi tipi di contenuto, i cookie, se aggiungi una libreria di crittografia farà anche https, ...

Quindi sì, è normale racchiudere un protocollo non banale in un'API che nasconde tutte le complessità.

    
risposta data 22.03.2017 - 10:38
fonte

Leggi altre domande sui tag