Non penso che AMF sarebbe significativamente più piccola di JSON. In effetti, può essere leggermente più grande in molti casi. Mi permetta di mostrare questo in un esempio:
negozi AMF la stringa "asdf" nel seguente formato binario:
0x12 /* type = string */
0x00 0x04 /* length */
'a' 's' 'd' 'f'
/* total: strlen(s)+3 bytes */
mentre i negozi JSON la stringa "asdf" in strlen (s) + 2 byte se ci non ci sono virgolette nella stringa.
negozi AMF l'oggetto JSON {"key1":"asdf","key2":"foo"}
nel seguente formato binario:
0x03 /* type = object */
0x00 0x04 /* length of key1 */
'k' 'e' 'y' '1'
0x02 /* value type = string */
0x00 0x04 /* length of value1 */
'a' 's' 'd' 'f'
0x00 0x04 /* length of key2 */
'k' 'e' 'y' '2'
0x02 /* type of value2 */
0x00 0x03 /* length of value2 */
'f' 'o' 'o'
0x00 0x00 0x09 /* end of object */
/* total: 30 bytes, while the JSON string is 28 bytes */
Gli esempi sopra riportati erano in AMF0, ma non credo AMF3 sarebbe molto diverso.
L'unica funzionalità di AMF0 che può ridurre significativamente la larghezza di banda è che contiene un tipo di riferimento: se si invia lo stesso oggetto di grandi dimensioni due volte, il secondo oggetto sarà solo un riferimento alla prima istanza. Ma è un caso raro IMHO (e funziona solo per oggetti, non per archi).
Quindi vorrei raccomandare JSON (se vuoi davvero risparmiare sui byte, puoi comprimerlo con zlib o altro): è molto più semplice da leggere, ci sono molte più implementazioni e le specifiche sono chiare (mentre il Flash l'implementazione a volte è diversa dalla specifica - tutti ci piacciono Adobe;))
Dipende certamente dai dati che si stanno trasferendo. Devo creare un'app mini-Census che faccia set di dati più piccoli. :) –
Assicurati di aver letto la risposta @ user562816, AMF3 dovrebbe essere molto più piccolo. –