Domanda

Ho un problema unico e vorrei poter elaborare una richiesta POST HTTP in entrata che contiene dati binari arbitrari.

Attualmente posso elaborare questi dati utilizzando un gestore di pagine ASP.NET standard o in un servizio Web ASP, ma voglio sapere se è possibile elaborare dati binari INCOMING in un servizio WCF? Posso eseguire il drill-down nello stack di elaborazione WCF per ignorare l'elaborazione SOAP e gestire il messaggio non elaborato nel mio codice?

Comprendo che ciò rompe la pubblicazione "a contratto" di WCF (WSDL in ogni caso), ma non mi interessa davvero.

-Jeff

È stato utile?

Soluzione 4

Dopo aver trascorso alcune settimane su questo problema, ho praticamente una risposta definitiva:

È possibile sostituire XML / SOAP con una serializzazione binaria personalizzata per WCF?

La risposta breve: no

La risposta lunga: sì, ma devi riscrivere quasi tutte le interfacce del livello di trasporto in modo da poter creare un IHttpHandler personalizzato ed evitare WCF tutti insieme.

Microsoft, nel tentativo di seguire lo standard SOAP (e secondo me lo standard è responsabile di questo problema) infrange una delle semplici regole di programmazione - > separazione delle responsabilità negli strati. WCF / SOAP può sembrare un protocollo e un trasporto elegantemente stratificati, ma la realtà è che ci sono intricate connessioni tra i livelli. Ciò significa che WCF è un protocollo di comunicazione estremamente complesso che fornisce trasporto, sicurezza, affidabilità, pubblicazione, serializzazione e altre funzionalità che sono tutte interdipendenti a un certo livello. Se tutto ciò che desideri è un canale di trasporto, WCF / SOAP aggiunge un'enorme quantità di complessità.

Sono sicuro di poter avviare ingenti somme di SOAP sì / no, ma alla fine ho capito che WCF / SOAP non è ciò di cui avevo bisogno per la mia applicazione.

-Jeff

Altri suggerimenti

Valuta l'utilizzo di MTOM. MTOM è un meccanismo per la trasmissione di allegati binari di grandi dimensioni con messaggi SOAP come byte non elaborati, consentendo messaggi più piccoli. Per i dettagli, consultare:

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

Puoi utilizzare lo streaming MSDN

Finché so che è possibile configurare l'associazione del servizio: http://www.c-sharpcorner.com/UploadFile/pjthesedays/ bindwcf05032009012251AM / bindwcf.aspx

Uso di netTcpBinding

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top