Cosa scegliere Server basato su API o Server basato su socket per applicazione basata su dati

2

Sto lavorando a un progetto che ha un'applicazione desktop per MAC / COCOA, un'applicazione nativa per iPhone un'altra applicazione nativa in iPad. Tutte le applicazioni fanno quasi la stessa cosa. Le applicazioni sono applicazioni basate su dati. Ogni comunicazione al server avviene tramite un'API riposante sviluppata in PHP. Quando un utente accede a molti dati viene prelevato dal server. E per rimanere sincronizzati con il polling del server è fatto. Poiché ci sono molti dati da sondare, rende l'applicazione più lenta e non affidabile.

Una possibile soluzione che mi viene in mente è quella di utilizzare un server basato su socket.

La mia domanda è che migliorerà ragionevolmente le prestazioni? E quale tecnologia (di socket) sarà valida come soluzione lato server per applicazioni basate sui dati? Ho sentito molto su Node.js. Si prega di dare i vostri suggerimenti.

    
posta Imdad 09.10.2012 - 11:38
fonte

1 risposta

2

Vuoi sostituire l'API PHP basata su REST o semplicemente completarla?

Hai menzionato le prestazioni come un obiettivo, ma abbiamo davvero bisogno di sapere di più sul tuo caso d'uso per raccomandare qualsiasi tecnologia specifica. Stai trasmettendo strutture di dati complesse e c'è un carico del server pesante? In caso di strutture dati complesse, è possibile provare i buffer del protocollo da Google. Se le strutture dei dati sono meno complesse e non è necessario il supporto binario, è possibile utilizzare XML o JSON, a seconda se è necessaria la convalida.

Dato che conosci già Node.js, devi conoscere anche i suoi punti di forza. Sono: I / O asincrono principalmente per servire più clienti. Ma le prestazioni non sono solo il numero di client che puoi servire per server. È anche una questione di quanto sia difficile che ogni cliente tenti il server. Se hai un sacco di numeri in corso, potrebbe avere senso scrivere il server in C ++ o Java, lingue che tipicamente aumentano il numero di crunch in modo più efficiente di JavaScript.

Se i problemi di prestazioni che stai avendo si basano esclusivamente sulla velocità di trasferimento della rete, ovviamente non otterrai nulla utilizzando Node.js, dal momento che praticamente ogni server saturerà la larghezza di banda disponibile.

Dato che hai detto che vuoi rimanere sincronizzato con il server dopo che il pooling è terminato, hai sicuramente bisogno di una sorta di libreria socket se la tua comunicazione è birionaria e / o vuoi evitare il pooling.

    
risposta data 12.10.2012 - 17:10
fonte

Leggi altre domande sui tag