Мы разрабатываем приложение Windows Forms, которое будет установлено около 1000 сотрудников. Пользователи могут одновременно запускать несколько экземпляров приложения. Все клиенты находятся в одной интрасети.Windows Forms & WCF - Связь с клиентом
Изменения в приложении могут привести к изменениям записей в базе данных, которые, в свою очередь, должны быть переданы другим клиентам, чтобы их пользовательские интерфейсы были обновлены.
Наша команда говорила о двух разных подходах:
1. Multicast пакеты
Клиент источник модифицирует запись, а затем отправляет групповой пакет с полезной нагрузкой, что что-то изменилось. Другие клиенты получают это и получают указанные данные. Нам нужно учитывать случаи, когда пакет не получен, возвращаясь к активному извлечению данных.
Мой вопрос на этом этапе - как клиент знает, что он не получил пакет? (не знаю, чего вы не знаете). Это приводит нас к какому-то журналу событий с отметками времени в базе данных, а элементы управления пользовательского интерфейса отслеживают последний раз, когда они были обновлены. Они вступают в фокус, проверяют их временные метки и обновляются по мере необходимости.
Кто-то еще сказал, что элементы пользовательского интерфейса будут просто перезаряжаться каждый раз, когда они попадают в фокус (подумайте о режимах в Outlook, приведя элементы управления к передней части рабочего пространства стека с помощью CAB). И что многоадресная рассылка заключается в обновлении клиентов, которые изменили их текущий контекст. Если они пропустят это, они работают с устаревшими данными, пока они не изменят режимы и не вернутся.
2. WCF и Callbacks
Клиенты зарегистрироваться WCF контрактов на обратные вызовы более чем ТСР связывания. Основная проблема заключается в том, что сервер поддерживает множество открытых сокетов. Мы ознакомились с тем, как он не открыт в традиционном смысле, он укладывается спать максимум на 90 секунд, а затем восстанавливается в этой точке. Мы также читаем о максимальном количестве открытых подключений, которое может обрабатывать компьютер Windows 2003 Server, и о том, как изменить его в реестре.
Если у нас есть 1000 открытых соединений сокетов на сервере, это будет разваливаться?
Если кто-то столкнулся с такой же ситуацией и попробовал или оценил подход WCF, мы хотели бы услышать об этом.
Вы касаетесь многих вещей, о которых мы говорили и которые о них думаем, таких как периодические обновления. Вы подчеркиваете, что я не полностью описал окружающую среду, но это примерно 1000 пользователей в одной физической сети в географически смежных зданиях. Данные не охватывают несколько вертикальных областей, все пользователи в значительной степени смотрят на одни и те же данные, только некоторые из них могут редактировать элементы, а большинство не может, исключение является личным организационным модулем. Я думаю, что ваш ответ помогает, так что +1, но я посмотрю, пробовал ли кто-нибудь это и знает какие-либо проблемы с производительностью/ресурсами. Спасибо. – blu
Отлично. На самом деле мне было бы интересно узнать об итогах этого; по крайней мере, любое доказательство концепции, которое вы можете сделать. Было бы замечательно, если бы вы заходили в блог (подсказка, подсказка). –