У меня есть клиентское приложение, которое разговаривает с службой обновления для загрузки файлов. Служба обновления получает их из базы данных, а затем отправляет их клиенту с использованием WCF. На данный момент я использую WSHttpBinding, чтобы воспользоваться преимуществами безопасности. Таким образом, самый большой файл, который я загружал/отправлял, составляет около 8 МБ, и это отлично работает. Недавно я попробовал его с файлом размером около 130 МБ, но ничего не произошло на клиенте; использование сети просто сидело на 0%.Сколько байтов передано в WCF до того, как я буду использовать потоковое вещание?
Я предполагаю, что файл слишком велик для передачи без потоковой передачи (maxReceivedMessageSize и т. Д., Равно 209715200, поэтому я знаю, что настройки подходят для него). Чтобы исправить это, я хочу, чтобы служба использовала BasicHttpBinding, чтобы я мог передавать файл, если он больше определенного размера.
Мой вопрос: в каком файле размера я должен переключиться с WSHttpBinding на BasicHttpBinding и потоковое? Есть ли какой-то стандарт, за которым следует следовать? Или моя логика здесь совершенно не так?
Хорошо, но поскольку служба получает файл из моей базы данных SQL для каждого вызывающего абонента, даже при потоковой передаче ему не нужен полный 100 МБ-файл в памяти для каждого вызывающего абонента (20 абонентов = еще 2 ГБ ОЗУ)? Есть ли способ, которым я могу просто использовать службу WCF в качестве «моста» из базы данных для клиента, не требуя для этого полного файла в памяти? Или я могу как-то получить только одну копию в памяти и сохранить ее там, пока все вызывающие абоненты не получат ее? – Marcus