Tengo una aplicación cliente-servidor, que se comunica usando WCF, y usa NetDataContractSerializer para serializar el gráfico de objetos.Serializar el mensaje WCF de forma binaria, y no como mensaje SOAP
Dado que se transfieren muchos datos entre el servidor y el cliente, intenté disminuir su tamaño ajustando el tamaño de los miembros de datos (por ejemplo, cambiado int a corto, largo a int, etc.).
Después de terminar la sintonización, descubrí que ¡la cantidad de datos transferidos no ha cambiado!
El problema es que NetDataContractSerializer serializa el gráfico de objetos en XML, así que no importa cuál sea el tamaño del miembro de datos, lo único que importa es el tamaño de su valor. Por ejemplo, el valor 10023 de un miembro de datos Int16 se serializará como la cadena "10023" (0x3130303233), en lugar de solo 10023 (0x2727).
Recuerdo que en Remoting podía usar BinaryFormatter que serializaba los valores de acuerdo con el tipo del miembro de datos, pero no sé si es posible usarlo con WCF.
¿Alguien tiene una solución?
también lo hace el mensaje de codificación binaria ofrecen una mejora significativa del rendimiento? ¿Se reduce el tiempo de serialización o solo se reduce el tamaño del mensaje? –
He utilizado este enlace personalizado así como binaryMessageEncoding con el transporte de canalización con nombre, y los mensajes siguen siendo codificación XML según los registros de mensajes en el detector de seguimiento así como WCF Test Client. No estoy 100% seguro de que estos no estén haciendo su propia serialización XML de los objetos para iniciar sesión en lugar de tomar el mensaje sin procesar. WCF hace que sea tan difícil conectarse a la solicitud/respuesta en bruto vs. WebAPI que lo hace más fácil. – AaronLS
Esta respuesta es útil, pero tenga en cuenta que la codificación binaria solo cambia la forma en que se envía el mensaje "por cable", es decir, después de que se serializa. Si bien esto ciertamente reduce el tamaño de los datos, no cambia el método de serialización. La codificación binaria se puede usar con compresión para obtener mejores resultados. –