Pregunta

Tengo un problema único y me gustaría poder procesar una solicitud HTTP POST entrante que contenga datos binarios arbitrarios.

Actualmente puedo procesar estos datos usando un controlador de página ASP.NET estándar o en un servicio web ASP, pero quiero saber si es posible procesar datos binarios ENTRANTES en un servicio WCF. ¿Puedo profundizar en la pila de procesamiento WCF para omitir el procesamiento SOAP y manejar el mensaje sin procesar en mi propio código?

Entiendo que esto rompe la publicación del 'contrato' de WCF (WSDL lo que sea), pero realmente no me importa eso.

-Jeff

¿Fue útil?

Solución 4

Después de pasar unas semanas en este problema, tengo una respuesta más o menos definitiva:

¿Puede reemplazar XML / SOAP con una serialización binaria personalizada para WCF?

La respuesta corta: no

La respuesta larga: sí, pero debe reescribir casi todas las interfaces de la capa de transporte, por lo que podría crear un IHttpHandler personalizado y evitar WCF por completo.

Microsoft, al intentar seguir el estándar SOAP (y el estándar es responsable de este problema en mi opinión) rompe una de las reglas de programación simples: > separación de responsabilidades en las capas. WCF / SOAP puede parecer un protocolo y transporte elegantemente en capas, pero la realidad es que hay conexiones complejas entre las capas. Esto significa que WCF es un protocolo de comunicación extremadamente complejo que proporciona transporte, seguridad, confiabilidad, publicación, serialización y otras características que son interdependientes en algún nivel. Si todo lo que desea es un canal de transporte, WCF / SOAP agrega una enorme cantidad de complejidad.

Estoy seguro de que podría comenzar a despotricar sobre SOAP sí / no, pero finalmente me di cuenta de que WCF / SOAP no es lo que necesitaba para mi aplicación.

-Jeff

Otros consejos

Considere usar MTOM. MTOM es un mecanismo para transmitir archivos adjuntos binarios grandes con mensajes SOAP como bytes sin procesar, lo que permite mensajes más pequeños. Para más detalles ver:

http://msdn.microsoft.com/en-us/library /aa395209.aspx

Puede usar la transmisión MSDN

Siempre que sepa, puede configurar el enlace del servicio: http://www.c-sharpcorner.com/UploadFile/pjthesedays/ bindwcf05032009012251AM / bindwcf.aspx

Uso de netTcpBinding

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top