Настольные клиенты скачивают через интернет (по http) большие объемы данных.
Одного сервера недостаточно, требуется что-то вроде балансировки нагрузки.
Вижу следующую архитектуру:
- клиенты обращаются к главному веб-сервису, чтобы получить адрес сервера раздающего файлы;
- веб-сервис учитывает количество активных клиентов на каждом сервере и возвращает клиенту адрес наименее нагруженного сервера.
Вопрос: Как обеспечить веб-сервис знанием о количестве текущих соединений на других серверах?
Варианты, которые приходят на ум:
- клиент сам может присылать веб-сервису отчет о завершении скачивания файла, но он ведь может «отвалиться» до окончания, а сервис об этом не узнает и будет его зря учитывать;
- держать постоянную связь между веб-сервисом и клиентами на время скачивания. Как это можно реализовать в рамках ASP.NET?