Ho un'applicazione client-server, che comunica usando WCF, e utilizza NetDataContractSerializer per serializzare il grafico degli oggetti.Serializzare il messaggio WCF in modo binario e non come messaggio SOAP
Dal momento che molti dati vengono trasferiti tra il server e il client, ho provato a ridurne le dimensioni sintonizzando le dimensioni dei membri dei dati (ad esempio, cambiato int in short, long in int, ecc.).
Dopo aver terminato la messa a punto, ho scoperto che la quantità di dati trasferiti non è cambiata!
Il problema è che NetDataContractSerializer serializza il grafico degli oggetti in XML, quindi, indipendentemente dalle dimensioni del membro dei dati, l'unica cosa che conta è la dimensione del suo valore. Ad esempio, il valore 10023 di un membro dati Int16 verrà serializzato come stringa "10023" (0x3130303233), anziché solo 10023 (0x2727).
Mi ricordo che in Remoting potrei usare il BinaryFormatter che serializzato i valori a seconda del tipo di membro di dati, ma non so se è possibile utilizzarlo con WCF.
Qualcuno ha una soluzione?
così fa la codifica dei messaggi binario offrono un miglioramento significativo delle prestazioni? Il tempo di serializzazione è ridotto o la dimensione del messaggio è ridotta? –
Ho usato questo bind personalizzato e binaryMessageEncoding con il trasporto di pipe denominato, e i messaggi sono ancora codifica XML come da log dei messaggi nel listener di traccia e WCF Test Client. Non sono sicuro al 100% che questi non stiano facendo la loro serializzazione XML degli oggetti per registrarli invece di prendere il messaggio non elaborato. WCF rende così difficile collegarsi alla richiesta/risposta grezza rispetto a WebAPI che lo rende facile. – AaronLS
Questa risposta è utile, ma tieni presente che la codifica binaria cambia solo il modo in cui il messaggio viene inviato "sul filo", ossia dopo che è stato serializzato. Mentre questo certamente riduce la dimensione dei dati, non cambia il metodo di serializzazione. La codifica binaria può essere utilizzata con la compressione per risultati migliori. –