Обновление клиентских ПК с действиями друг друга (вставка, обновление, удаление) - PullRequest
0 голосов
/ 26 февраля 2012

Я разрабатываю приложение клиент-сервер с использованием C # .NET Winforms с SQL Server 2008. Клиентские компьютеры подключаются к серверу базы данных через локальную сеть.

Задача, которую я хочу решить, - это когда на одном клиентском ПК выполняется вставка (или обновление, или удаление), все остальные клиенты должны получать это обновление в режиме реального времени.

В настоящее время я использую таймеры, так что каждый клиент запрашивает базу данных каждые 15 секунд, а затем обновляет виды сетки, поля со списками и списки. Но это делает приложение медленным и громоздким в использовании.

Какой правильный метод использовать в таком сценарии. Как называются такие операции (правильная терминология)? Должен ли я использовать службы Windows? или это же приложение с фоновыми потоками?

Ответы [ 2 ]

2 голосов
/ 26 февраля 2012

Прежде всего, это Windows, поэтому она не может быть в реальном времени.

Решения, которые предлагает Игби Ларджман, вполне возможны. У него есть недостаток, заключающийся в том, что он может вызвать очень тяжелый сетевой трафик, потому что каждый раз, когда что-то меняется в базе данных, он транслируется всем клиентам.

Вы также должны учитывать возможность того, что что-то засоряет связь между сервером и одним или несколькими клиентами, поэтому о реальном времени не может быть и речи.

1 голос
/ 26 февраля 2012

это сложно! Если вы действительно хотите, чтобы пользователь с открытой сеткой на PCA видел данные, вставленные на печатную плату, не выполняя никаких действий, вам потребуется таймер для обновления сетки. Но я не думаю, что это хороший подход, вы можете легко перегрузить систему.

Хорошей практикой здесь является отображение только тех данных, которыми нужно манипулировать. Например, допустим, вы хотите изменить имя клиента. Вы создаете форму поиска с сеткой, в которой пользователь может сообщить параметры поиска (для фильтрации данных), и как только клиент найден и изменен, вы выполняете другой поиск в БД, чтобы получить и отобразить новые данные.

Но допустим, что у другого пользователя была та же открытая сетка, показывающая клиента перед выполнением изменения. Он показывает старое значение, но как только он щелкнет по нему, чтобы увидеть детали, вы выполните поиск в БД, чтобы получить новые данные, чтобы все было в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...