Question

J'ai un problème unique et j'aimerais pouvoir traiter une demande HTTP POST entrante contenant des données binaires arbitraires.

Je peux actuellement traiter ces données à l'aide d'un gestionnaire de page ASP.NET standard ou d'un service Web ASP, mais je veux savoir s'il est possible de traiter des données binaires INCOMING dans un service WCF? Puis-je accéder à la pile de traitement WCF pour contourner le traitement SOAP et gérer le message brut dans mon propre code?

Je comprends que cela casse la publication "sous contrat" ??de la WCF (WSDL, peu importe), mais cela ne me dérange pas vraiment.

-Jeff

Était-ce utile?

La solution 4

Après avoir passé quelques semaines sur ce problème, j’ai une réponse définitive:

Pouvez-vous remplacer XML / SOAP par une sérialisation binaire personnalisée pour WCF?

La réponse courte: non

La réponse longue: oui, mais vous devez réécrire la quasi-totalité des interfaces de la couche de transport afin de créer un IHttpHandler personnalisé et d’éviter la création de WCF.

Microsoft, en essayant de suivre la norme SOAP (et la norme est responsable de ce problème à mon avis) enfreint l'une des règles de programmation simples - > séparation des responsabilités dans les couches. WCF / SOAP peut sembler être un protocole et un transport en couches élégants, mais la réalité est qu’il existe des connexions complexes entre les couches. Cela signifie que WCF est un protocole de communication extrêmement complexe qui assure le transport, la sécurité, la fiabilité, la publication, la sérialisation et d'autres fonctionnalités interdépendantes à un certain niveau. Si tout ce que vous voulez est un canal de transport, WCF / SOAP ajoute une énorme complexité.

Je suis sûr que je pourrais commencer énormément à propos de SOAP oui / non, mais j’ai enfin réalisé que WCF / SOAP n’était pas ce dont j'avais besoin pour ma candidature.

-Jeff

Autres conseils

Pensez à utiliser MTOM. MTOM est un mécanisme permettant de transmettre des pièces jointes binaires volumineuses contenant des messages SOAP sous forme d'octets bruts, ce qui permet d'obtenir des messages plus petits. Pour plus de détails, voir:

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

Vous pouvez utiliser le streaming MSDN

.

Tant que je sais que vous pouvez configurer la liaison de service: http://www.c-sharpcorner.com/UploadFiles/pth bindwcf05032009012251AM / bindwcf.aspx

Utilisation de netTcpBinding

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top