2012-04-03 2 views
0

У меня есть ЛВС, состоящая из 3 ПК. В PC1 установлена ​​база данных MS SQL. Этот компьютер будет действовать как сервер.LAN Application

У ПК2 и ПК3 есть настольное приложение, которое будет отображать данные с ПК1.

Моя проблема заключается в том, как заставить каждый ПК (PC2 и PC3) иметь одну и ту же копию данных. Предположим, что в PC2 сотрудник 0001 имя обновляется от Джона до Питера и фиксирует сохранение. Не обновляя приложение в PC3, сотрудник 0001 по-прежнему будет иметь имя Джона.

Какой был бы лучший подход для этого? Мой уровень программирования не так уж хорош, но я открыт для всех предложений/концепций/примеров/и т. Д.

Спасибо.

ответ

2

Если вы хотите немедленное обновление для всех клиентов сразу после изменения данных, вам нужна какая-то система уведомлений либо опросом, либо нажатием.

Вы можете реализовать механизм push, используя, например, WCF с контрактом обратного вызова. Вашим клиентским ПК потребуется реализовать соответствующий интерфейс обратного вызова и постоянно подключаться к сервису WCF сервера ПК. Обратный вызов мог фактически переносить новые данные. Каждому клиенту необходимо отфильтровать уведомления, вызванные собственными изменениями этого клиента. Механизм нажатия - быстрый и эффективный способ.

Check this stackoverflow ответ, например, обратного вызова WCF.

Механизм вытягивания потребует фонового потока во всех клиентских приложениях, проверяющих сервер на предмет изменений. Вы можете использовать отдельную таблицу базы данных с счетчиком версий, который будет увеличиваться каждый раз, когда что-либо изменяется на сервере. Клиентские приложения будут опробовать этот счетчик, сравнить с последней версией, которую они имеют, и обновить данные при обнаружении новой версии. Это гораздо менее эффективный механизм, хотя вам нужно часто делать опрос и получать все данные каждый раз, когда есть новая версия. Вы можете сделать управление версиями более сложными и определить, что именно изменилось, но это может быстро усложниться с несколькими клиентами. В целом он не очень хорошо масштабируется. Это, как правило, проще, чем push, хотя для простых приложений с не слишком большим количеством данных этого было бы достаточно.

+0

+1 хорошая ссылка, полезная информация – Simon

+0

Спасибо за это. – yonan2236

-2

well utivich ... это то же самое, что и веб-приложение. это обычная проблема. обычно другие клиенты будут иметь устаревшие данные до перезагрузки записи, или когда они сохраняют, возможно, сервер будет генерировать исключение из устаревших данных на основе sql timestamp. однако с помощью настольного приложения вы можете настроить систему с уведомлением о событиях так же, как приложение чата, где сервер подталкивает события к подписчикам, и клиенты смогут обновить запись или что-то еще, что вам нужно сделать.

0

При обновлении необходимо указать другим машинам. Это может быть достигнуто с помощью простых сообщений, отправляемых по сети с использованием широковещательной передачи UDP. Затем другой компьютер может выполнить свой метод обновления.