2010-04-14 63 views
6

Tengo un servicio web que devuelve la matriz binaria de un objeto. ¿Hay alguna manera más fácil de transferir esto con SOAP o necesita estar contenido en XML? Está funcionando, pero tuve que aumentar el buffer de envío y recepción a un gran valor. ¿Cuánto es demasiado?¿Transfiriendo datos binarios a través de un servicio web SOAP?

La transferencia de binarios en XML como una matriz parece realmente ineficiente, pero no veo ninguna forma de agregar un archivo adjunto binario con .NET.

Respuesta

4

Como una matriz? ¿Quiere decir que está enviando

<byte>8</byte> 
<byte>127</byte> 

etc.? Si es así, puedes mejorarlo convirtiendo la matriz de bytes en una cadena hexadecimal de antemano, ej.

<codedArray>087F09AFBD.....</codedArray> 

Este es el enfoque más común para enviar imágenes, etc., a través de SOAP. Sin embargo, incluso entonces tienes razón para cuestionarlo. Realmente debería mirar otros protocolos de transferencia más RESTful, en mi humilde opinión.

+0

Sí, creo que así es como está codificado. Convertirlo en hexadecimal es una gran solución. – Jason

1

Bueno, realmente no debería estar enviando información binaria con un servicio web. Si lo hace, invalida el punto de utilizar un servicio web, compatibilidad. Idealmente, serializaría su objeto como xml. Sin embargo, si está enviando información que es intrínsecamente binaria, digamos una imagen, entonces puede ponerla en la carga de su mensaje SOAP. Cuánta información es realmente una función de cuánto tiempo desea esperar y qué tan rápido es su red. No creo que exista un límite real en el tamaño de la información que puede enviar. Si es realmente mucho (50 megas + parece ser un número arbitrariamente grande), entonces tal vez desee considerar protocolos de transporte alternativos como la transmisión por un socket.

+0

Es posible que no entiendo la mejor práctica para transferir información de mi base de datos basada en la web a mi solicitud. Usando SOAP, puedo usar LINQ en el lado de la web y se une fácilmente a los objetos en mi aplicación. ¿Hay alguna forma más fácil de hacer esto? El objeto se convierte en una matriz binaria para almacenarlo de manera más eficiente en la base de datos. Como XML, es demasiado grande. – Jason

2

En el protocolo HTTP, está enviando un mensaje de mime type text/xml que contiene el mensaje SOAP. Pero el protocolo HTTP le permite enviar varios mensajes, como un correo electrónico compuesto por el mensaje y los archivos adjuntos. Eso se llama "Jabón con archivos adjuntos" http://en.wikipedia.org/wiki/SOAP_with_Attachments Se hace con un mimo tipo "multipart/related".

Compruebe que acerca de cómo hacer con WCF http://msdn.microsoft.com/en-us/library/ms733742.aspx

Cuestiones relacionadas