2012-01-06 4 views
0

Я искал часы и не нашел ответа на то, что, как я думаю, является довольно распространенной проблемой.Многопользовательский обмен сообщениями в .NET с ссылками на службы C#

У меня есть много данных (строка [2000000]), которые я хочу отправить в службу через служебную ссылку (asmx). SOAP взрывается из-за размера прямо сейчас, и я не хочу увеличивать трубку, потому что завтра это могут быть 4M строки для отправки.

Итак, я думал о многостраничных SOAP-сообщениях, однако .NET не поддерживает это (правильно?). Так как же это сделать? Любая помощь или ссылки были бы весьма признательны.

[WebMethod] 
public string[] returnSameStringArray(string[] string_array) 
{ 
    return string_array; 
} 

Телефонный код:

BasicHttpBinding basicHttpBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly); 
basicHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; 
basicHttpBinding.MaxReceivedMessageSize = 131072; 

myServiceReference = new MyService.MyServiceSoapClient(basicHttpBinding, new EndpointAddress(@"http://myaddress/myservice.asmx")); 
myServiceReference.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; 
myServiceReference.ChannelFactory.Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials; 

string[] theStringArray = new string[2000000](); //init with something later 
theStringArray = myServiceReference.returnSameStringArray(theStringArray); 

ответ

0

Я бы порекомендовал вам посмотреть на ZeroMQ и стек услуг. Они дают вам необходимый контроль.

Вы также можете посмотреть на разделение вашей полезной нагрузки на несколько вызовов.

+0

Желательно, чтобы не разбить полезную нагрузку на несколько вызовов (полезная нагрузка может измениться, или одна из строк может быть синтаксисом файла с несколькими мегабайтами, который в любом случае должен быть разделен). Спасибо за предложение zeromq и сервиса, я сейчас изучу их. – Tizz

+0

Получив краткий обзор zeromq, я не понимаю, как это будет реализовано в контексте моего кода, который у меня выше. Я относительно новичок в транспорте и сетях, и, возможно, я просто не могу понять необходимость zeromq с моим нынешним пониманием. Разве нет многопроцессорного протокола SOAP, который я могу использовать для этого? Я должен использовать сторонний протокол? – Tizz

+0

zeromq отлично подходит для больших полезных нагрузок и дает вам возможность разделить их, оставив вашу бизнес-логику как есть. –

Смежные вопросы