Многокомпонентный обмен сообщениями в .NET со ссылками на службы c # - PullRequest
0 голосов
/ 06 января 2012

Я часами искал и не нашел ответа на то, что, по моему мнению, является довольно распространенной проблемой.

У меня много данных (строка [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);

1 Ответ

0 голосов
/ 06 января 2012

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

Вы также можете посмотреть, как разбить полезную нагрузку на несколько вызовов.

...