Implementação MTOM/XOP para .NET Remoting
-
22-09-2019 - |
Pergunta
Meu cliente me pediu para implementar o MTOM/XOP para o .NET Remoting via HTTP/SOAP para acesso ao fluxo remoto (por exemplo, upload de arquivos). WCF Web Services em não uma opção.
Portanto, o que eu tenho a fazer é modificar nosso SOAPCLIENTMATIFORNATTERSTINGSTINGSTING e SOAPSERVERVERSTERSTINGSINKSLIND para fazer o trabalho, ou seja, o método Serializemessage, que leva o iMessage e se um dos parâmetros da mensagem 'Valor do Tipo Stream, o Nó do InfoP é inserido no fluxo e assim por diante.
public class CompatibleSoapClientFormatterSink : IClientFormatterSink
{
...
private void SerializeMessage(IMessage message, out ITransportHeaders headers, out Stream stream)
{
...
}
O problema é que não entendo como colocar o fluxo binário em solicitação de sabão e implementação dessa abordagem em geral.
Alguém pode me dar orientação para como posso implementá -lo, por favor?
Qualquer amostra de código da implementação do MTOM/XOP seria muito apreciada.
Solução
Desculpem rapazes! Nether de suas respostas funcionam para mim.
Então, proponho minha idéia simples da solução que eu já havia implementado.
Eu usei classes XMLMTOMReader e XMLMTOMWriter do espaço de nome System.xml para formatar mensagens de sabão e depois as passar para o coletor do formatador. O WCF Web Services Cayer não foi tocado como eu queria.
Outras dicas
Acredito que o equivalente Java do WCF (Metro) suporta XOP/MTOM, e é de código aberto. Você pode pegar esse código e portar -o para .Net Remoting.
Aqui está alguém que implementou a transferência de arquivos com o .NET REMOTING:
http://www.codeproject.com/kb/dotnet/net%5fremoting%5fevents.aspx
O código -fonte está disponível em um link na página
Você poderia tentar:
http://dotnetslackers.com/articles/aspnet/gettingstartedcreatingwseenabledwebservice.aspx
Se você tiver um servidor Java, poderá olhar:
https://jax-ws.dev.java.net/guide/binary_attachments__mtom_.html
Há algum código na parte inferior da página para download.
Existem alguns problemas de interoperabilidade com o MTOM entre as plataformas: muitas pilhas não suportam o mecanismo de política WS que o .NET usa para ativar o MTOM. Na minha opinião, isso é bastante indesejável para a interoperabilidade. Aqui, acabamos ativando o MTOM Messagencoding na seção de ligação do app.config.