2012-02-26 10 views
25

Sto lavorando a un progetto che coinvolge client mobili e Web con il PAAS AppEngine di Google. Vorrei utilizzare i servizi web RESTFul con la mia app AppEngine.RESTFul Service Framework per AppEngine

Ho esaminato Stackoverflow per i riferimenti ai framework di servizio RESTFul che possono essere utilizzati con AppEngine per client Web (GWT) e mobili (Android). Anche se Restlet sembra fornire edizioni per AppEngine, GWT e Android, finora ho ottenuto fino a RestEasy principalmente a causa di questo question.

Ci sono state domande in precedenza che discuss RESTFul frameworks ma non penso che i confronti si applichino bene a questo caso, ora abbastanza comune. Sarebbe utile ascoltare le opinioni degli sviluppatori esperti sui framework disponibili per questo insieme di piattaforme e meriti contro demeriti di ciascuno.

+0

ho felicemente usando RESTEasy su AppEngine per la maggior parte di un anno . –

+0

Sto usando Restlet su App Engine, GWT e Android per circa 6 mesi. Vedere la mia risposta qui (http://stackoverflow.com/questions/9348616/restful-webservices-on-google-app-engine/9352079#9352079) per alcuni dettagli. –

+0

Inoltre, i ragazzi di Restlet hanno pubblicato di recente una tabella di marcia per le loro attività future, che potrebbero influenzare la vostra valutazione. Vedi http://blog.restlet.com/2012/02/25/the-road-ahead-from-noelios-to-restlet/ –

risposta

36

Si potrebbe voler considerare l'utilizzo di Google Cloud Endpoints, che è stato annunciato come una caratteristica tester di fiducia per App Engine di Google I/O, ed è ora a disposizione di tutti. Con Endpoint, annoti semplici classi e metodi Java (o Python) per descrivere la tua API.Ad esempio, questa è una classe semplice da ottenere e recuperare un elenco di punteggi più alti da un gioco Tic Tac Toe:

@Api(name = "tictactoe") 
public class ScoreEndpoint { 
    @ApiMethod(name = "scores.get") 
    public Score get(@Named("id") String id) { 
    PersistenceManager pm = getPersistenceManager(); 
    Score score = pm.getObjectById(Score.class, id); 
    pm.close(); 
    return score; 
    } 

    @ApiMethod(name = "scores.list") 
    public List<Score> list() { 
    PersistenceManager pm = getPersistenceManager(); 
    Query query = pm.newQuery(Score.class); 
    return (List<Score>) pm.newQuery(query).execute(); 
    } 
} 

Caratteristiche

  • supporto per Java e Python Runtime della
  • Basato sull'infrastruttura API di Google - funziona con molti degli stessi strumenti e librerie utilizzate per le API di Google, come lo APIs Explorer e lo APIs Console
  • generato automaticamente, librerie client staticamente tipizzato per Android e iOS - queste librerie utilizzano le stesse di Google-autore Java e Objective-C librerie si usa per accedere ad altre fornita da Google API come il calendario API
  • dinamicamente tipizzati libreria client JS - ancora una volta, la stessa libreria che si utilizza per accedere ad altre API di Google-forniti in JS
  • supporto incorporato per OAuth 2
  • l'integrazione con il plugin di Google per Eclipse - questo permette per creare automaticamente un'API basata su un modello o un'applicazione App Engine per eseguire il backup di un'app Android esistente
  • Supporto per lo sviluppo locale - è possibile creare e testare l'API utilizzando l'ambiente di sviluppo App Engine, proprio come con gli altri App Engine dispone

Approfondisci

Scopri i documentation per maggiori dettagli sull'utilizzo di endpoint.

È anche possibile guardare diversi colloqui da parte di Google I/O:

+0

Registrato per il programma Trusted Tester e da quello che ho visto, questo sembra essere sicuramente il modo di andare avanti –

+0

E riguardo il collegamento da altri client, come .Net? –

+0

La versione iniziale di Endpoint era incentrata principalmente sui client mobili (JS, Android, iOS), ma .NET dovrebbe funzionare allo stesso modo, utilizzando https://code.google.com/p/google-api-dotnet-client/ –

0

Se stai guardando GAE, una scelta che potresti prendere in considerazione è duyproject. È noto per la sua libreria openid, ma ha anche una libreria molto leggera per i servlet REST. E con GAE si desidera mantenere tutte le librerie chiare in modo da non superare il limite di byte.

2

Io rispetto la tua decisione di non utilizzare Restlet, ma per altri browser di questa discussione, sono stato in grado di fare posto di lavoro con Android/Restlet/GAE - e la mia conoscenza e la capacità di programmazione sono abbastanza limitati . Ho avuto alcuni problemi nel far funzionare correttamente la versione di Restlet per Javascript (è ancora in fase di sviluppo iniziale), ma Restlet per Android non ha posto problemi che io possa ricordare.

+1

Un po 'estraneo ... ma dalla mia esperienza fino ad ora.Restlet si è rivelato essere doloroso con cui lavorare, non tanto con GAE e Android, ma non appena GWT entra nel mix, inizia a dare problemi inspiegabili –

+0

Non sono un grande fan dell'API di Restlet, arrivando al set un header http per esempio è doloroso, ma questa è la filosofia di Restlet, da astrarre da Http! Ad ogni modo, l'altro punto critico è il tempo di avvio a freddo. Pensi che Cloud Endpoints si comporterebbe meglio? probabilmente eseguono la stessa scansione jar a causa delle annotazioni – ZiglioUK

1

Vorrei anche raccomandare Restlet, puoi anche altri thread qui

Restlet ha un'edizione per GAE, vedere http://wiki.restlet.org/docs_2.0/13-restlet/275-restlet/252-restlet.html

Ma ci sono anche altre librerie con edizioni speciali per GAE, ad esempio: http://code.google.com/p/xydra/wiki/RestLess

+0

Ho utilizzato Restlet negli ultimi tre anni, su App Engine. – ZiglioUK

+0

Restlet ha un tempo di avvio piuttosto elevato e le mie esigenze sono piuttosto elementari. Sono curioso di sapere come Cloud Endpoints si possa paragonare a Restlet, più velocemente? altre differenze? – ZiglioUK

Problemi correlati