Я прочитал множество постов по этому поводу и получил противоречивую информацию - я пытаюсь «свести к минимуму» ряд вопросов, которые другие задавали в надежде, что где-то в сети найдется хороший четкий ответ :-)
Я пишу .NET-приложение для моего ПК, которое подключается к веб-серверу IIS под управлением ASP.NET.Веб-сервер имеет два метода, похожих на:
[WebMethod]
public byte [] GetFile(string file)
{
// simplified
return File.ReadAllBytes(file);
}
[WebMethod]
public void PutFile(string file, byte [] data)
{
// simplified
return File.WriteAllBytes(file, data);
}
На клиенте я бы хотел вызвать GetFile / PutFile, используя буферы размером около 4 МБ.
BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
binding.AllowCookies = true;
binding.OpenTimeout = ???;
binding.MaxBufferSize = ???;
binding.MaxReceivedMessageSize = ???;
onlineTransport = new RemoteObject.RemoteObjectSoapClient(binding, new EndpointAddress(BaseUrl + "/page.asmx"));
// Read a file
byte [] foo = onlineTransport.GetFile("foo.file");
// Write a file
onlineTransport.PutFile("bar.file", foo);
Требования
- Должен быть веб-сервисом .NET - с SSL и без него
- Должен иметь двоичную кодировку для сокращения объема данных, передаваемых через Интернет
- 4 МБ - верхняя граница для размера данных
- Настройки кода предпочтительнее {web / app} .config - мне нравится все в одном месте
Вопросы
ENCODINGS: я буду отправлять их много, и важно количество байтов, передаваемых по проводам - возможно ли использовать двоичную кодировку сообщений или кодировку MTOM во времяиспользование веб-сервиса по HTTP?
НАСТРОЙКИ: Когда я передаю, возникает ряд максимальных значений запроса и времени ожидания.Я хотел бы понять, что я делаю и как установить их в коде (не файлы .config).GREAT - это модель слоя (jpeg), которая показывает, где применяются каждое из значений времени ожидания и максимальных значений.Например, отправка большого массива через SOAP отличается от максимального размера сообщения.
STREAMING / BUFFERING: Если двоичные двоичные объекты имеют размер <4 МБ, нужна ли потоковая передача?данные легко читаются / записываются из файловой системы, данные не создаются на лету.Если попадание памяти составляет всего 4 МБ, я более чем счастлив, я обеспокоен тем, что 4 МБ могут всплыть после различных буферов?- Я бы хотел лучше понять, что происходит </p>
некоторые материалы исследования: http://msdn.microsoft.com/en-us/library/ms733742.aspx