Visualizzazione dei risultati da 1 a 10 su 99

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    È capitato abbastanza di rado, e l'ultima volta è fallito tutto (ma perché il cliente era un imbecille, non per le nostre API ), per cui non credo di poter dare consigli troppo validi tanto credo dipenda molto dal tipo di applicazione e di target di utilizzo delle API - un conto è se è un progetto pilota per un singolo cliente con API fatte su misura per lui, un altro è se sono Twitter e devo fare API per il pubblico generale. Tu in che caso rientri?
    In realtà sono in una categoria a parte visto che l'azienda per cui lavoro (Apiary) sviluppa strumenti per API Design, e non molto tempo fa ho parlato a Londra di cosa c'è di sbagliato nelle metodologie di design correnti. Avrei piacere se potessi vederlo e dirmi se ti trovi con le mie tesi!
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #2
    Visto il talk.

    Sostanzialmente mi trovo d'accordo su gran parte delle cose, anche se come ho detto ho esperienza della questione fino ad un certo punto. Tipicamente, i servizi/le librerie che scriviamo sono abbastanza ad uso interno, anche se, specialmente per cose a cui stiamo mettendo mano ora, abbiamo N client con visioni abbastanza diverse del problema e che vogliono farsi poco i fatti dell'implementazione, per cui parte dei principi che citi emergono in maniera abbastanza naturale.
    Un paio dei prodotti di cui parli mi sembrano interessanti e mi riprometto di darci un'occhiata; le specifiche-markdown magiche e il generatore di mock-server possono essere interessanti per roba a cui stiamo mettendo mano in questo momento.

    Solo un paio di considerazioni, la prima di carattere generale: onestamente, è un po' sempre la solita pappa del waterfall vs agile e compagnia, con implicito un po' del discorso del capire le esigenze dell'utente (personas, goals, ...) che si usa (o almeno, si dovrebbe usare) in progettazione GUI; tutto vero e tutto giusto, ma alla fine sono un po' sempre gli stessi concetti che girano da "The Pragmatic Programmer" in poi.

    Altra cosa: ok il design orientato al consumer della API e non costringere il client a sapere dettagli di implementazione assurdamente precisi (arrivare a leakare i nomi delle tabelle è inscusabile), ma come tutte le astrazioni, inevitabilmente c'è un leak dell'implementazione, se non altro a livello di performance. L'esempio che facevi dello sviluppatore lato client che vuole avere tutto in un'unica richiesta ovviamente regge finché i dati sono gestibili in un'unica richiesta - in altre parole, se ci si inizia a spingere un pelo più in là le API devono comunque tenere conto dei constraint tecnici. A quel punto credo che la soluzione giusta sia fare le API a due livelli, con il livello basso e complicato per quelli a cui servono API ad alte prestazioni e/o per casi d'uso complicati, e quella "facilona" per tutti gli altri (possibilmente una costruita sull'altra).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Innanzitutto grazie per averlo guardato, spero ti abbia dato per lo meno dei nuovi input.

    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Visto il talk.
    abbiamo N client con visioni abbastanza diverse del problema e che vogliono farsi poco i fatti dell'implementazione, per cui parte dei principi che citi emergono in maniera abbastanza naturale.
    Interessante. Avresti mica voglia di espandere il discorso? Utilizzate qualche metodologia particolare per disaccoppiare i dettagli di implementazione dai client? Hypermedia, per esempio?

    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Un paio dei prodotti di cui parli mi sembrano interessanti e mi riprometto di darci un'occhiata; le specifiche-markdown magiche e il generatore di mock-server possono essere interessanti per roba a cui stiamo mettendo mano in questo momento.
    Mi fa piacere. Possiamo anche continuare la cosa in privato se hai bisogno di aiuto o cose varie.

    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Solo un paio di considerazioni, la prima di carattere generale: onestamente, è un po' sempre la solita pappa del waterfall vs agile e compagnia, con implicito un po' del discorso del capire le esigenze dell'utente (personas, goals, ...) che si usa (o almeno, si dovrebbe usare) in progettazione GUI; tutto vero e tutto giusto, ma alla fine sono un po' sempre gli stessi concetti che girano da "The Pragmatic Programmer" in poi.
    Concordo in pieno. Purtroppo la mia presentazione era totalmente differente. Quando poi mi sono reso conto (al primo giorno) del livello medio dello sviluppatore presente alla conferenza (tanti ragazzini alle prime esperienze che già possono permettersi di spendere 800 pound per una conferenza...), ho dovuto fare una forte virata e partire dai concetti base, scontati per persone con un pò più di esperienza. Posso andare oltre, te lo posso assicurare

    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Altra cosa: ok il design orientato al consumer della API e non costringere il client a sapere dettagli di implementazione assurdamente precisi (arrivare a leakare i nomi delle tabelle è inscusabile), ma come tutte le astrazioni, inevitabilmente c'è un leak dell'implementazione, se non altro a livello di performance. L'esempio che facevi dello sviluppatore lato client che vuole avere tutto in un'unica richiesta ovviamente regge finché i dati sono gestibili in un'unica richiesta - in altre parole, se ci si inizia a spingere un pelo più in là le API devono comunque tenere conto dei constraint tecnici. A quel punto credo che la soluzione giusta sia fare le API a due livelli, con il livello basso e complicato per quelli a cui servono API ad alte prestazioni e/o per casi d'uso complicati, e quella "facilona" per tutti gli altri (possibilmente una costruita sull'altra).
    Chiaro, lo fanno tanti altri, React in primis (anche se non si tratta di WebApi). La domanda (tagliata in parte), era più che altro a una ripresa del concetto che avevo espresso prima: se nell'API che sto esponendo la mia entità di base è Coffee, mi aspetto di poter fare diverse operazioni su di esso con una singola chiamata, e non spezzettandole in 8 chiamate perchè nella mia base di dati l'entità è divisa in tale modo.

    L'idea che ho cercato di trasmettere è che a mio parere, quando si espone un'API, si sta scrivendo software su un layer diverso da quello che fa girare generalmente il software di base.
    Molto spesso invece i programmatori, quando ricevono la richiesta Ehi, ci serve una API, al 90% prendono quello che hanno nel backend, lo collegano in qualche modo e sparano cannonate di JSON, senza preoccuparsi dell'utilizzatore finale.

    Dall'altro lato ci sono invece prodotti totalmente API based (ove il client stesso usa le API), che sarebbe l'approccio ideale. Vedi Parse, Stripe, alcune parti di Azure e così via.

    Un saluto,
    V.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Quote Originariamente inviata da XWolverineX Visualizza il messaggio
    Interessante. Avresti mica voglia di espandere il discorso? Utilizzate qualche metodologia particolare per disaccoppiare i dettagli di implementazione dai client? Hypermedia, per esempio?
    Non mi riferivo a nulla di particolarmente formale, diciamo che è più che altro emersa la necessità di disaccoppiare certi dettagli di implementazione da come i client effettivamente vogliono usare i dati, anche perché certi dettagli implementativi sono effettivamente orrendi. Il problema però è che al contrario ogni tanto emergono richieste per cui sarebbe necessario entrare nel merito di come è effettivamente l'implementazione per poter realizzare soluzioni decentemente efficienti (paradossalmente, di recente è saltata fuori la richiesta di aggiungere una certa informazione in un nostro formato file, cosa che è banale nel formato file in sé, ma è un pasticcio per come è stata esposta l'API ).
    Mi fa piacere. Possiamo anche continuare la cosa in privato se hai bisogno di aiuto o cose varie.
    Ti faccio sapere appena ho un attimo per guardarci bene, è un periodo che siamo tutti un po' di corsa dietro altre cose.
    L'idea che ho cercato di trasmettere è che a mio parere, quando si espone un'API, si sta scrivendo software su un layer diverso da quello che fa girare generalmente il software di base.
    Molto spesso invece i programmatori, quando ricevono la richiesta Ehi, ci serve una API, al 90% prendono quello che hanno nel backend, lo collegano in qualche modo e sparano cannonate di JSON, senza preoccuparsi dell'utilizzatore finale.
    Sì ecco, però lì il problema è di altro tipo, è come quelli che fanno l'export XML con un unico tag, CDATA e giù il binario del formato proprietario in base64.
    Dall'altro lato ci sono invece prodotti totalmente API based (ove il client stesso usa le API), che sarebbe l'approccio ideale. Vedi Parse, Stripe, alcune parti di Azure e così via.
    Ecco l'idea nostra per i nostri prodotti ora vorrebbe essere quella - le API partono per essere a nostro uso interno, poi se si intende vendere l'accesso a terzi si vedrà; che io sappia è quello che è successo con Amazon AWS (e altri loro prodotti partiti per uso interno). Va anche detto che il nostro è un ambito un po' particolare e relativamente chiuso, non credo ci sia un fiorente mercato di ISV che scrivono plug-in per macchine per taglio a lama - piuttosto, quello che effettivamente capita è che clienti piuttosto grossi facciano partire progetti ad-hoc con noi per collegare per scopi specifici il loro software con il nostro.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.