Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Синхронизация данных на клиентах  [new]
Felagund
Member

Откуда:
Сообщений: 9
Здравствуйте.
Нужно сделать многопользовательский чат в программе, написанной на C#. Чат должен содержать историю переписки. Вроде все вопросы с архитектурой чата и БД для него я решил, остался только один - синхронизация чата для всех клиентов. Есть ли какой-то механизм в MS SQL Server типа событий, по которому я мог бы совершать какие-либо действия, в данном случае при добавления сообщения в одном клиенте - отображение этого сообщения у остальных?
28 апр 15, 00:46    [17572995]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1836
используйте тригерры
28 апр 15, 00:48    [17572999]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
Felagund
Member

Откуда:
Сообщений: 9
Триггер на сколько я понимаю может произвести какие-либо действия на сервере, а мне нужно чтобы действие совершило приложение, т.е. оно должно получить какой-то сигнал от сервера, что появилось в базе новое сообщение и его было бы неплохо отобразить для всех клиентов
28 апр 15, 00:59    [17573021]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7586
Felagund,

Зачем животное мучить? У вас-же какая-то прослойка все-равно будет между юзерами и базой? Web? Используйте тот-же SignalR фреймворк.
28 апр 15, 01:06    [17573028]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
Felagund
Member

Откуда:
Сообщений: 9
Может Вы меня неправильно поняли.
У меня есть .Net приложение, работающее на нескольких машинах, объединённых в локальную сеть. И на одной из этих машин висит база, с которой работает приложение. Теперь нужно в этом же приложении добавить чат, чтобы история сообщений хранилась так же в базе на этом сервере.
28 апр 15, 01:18    [17573046]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1836
Felagund,

ну тогда можете посмотреть в сторону SqlDependency
28 апр 15, 01:25    [17573053]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 7586
Тут все написано http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server
28 апр 15, 01:25    [17573055]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53722
Felagund
Теперь нужно в этом же приложении добавить чат, чтобы история сообщений хранилась так же в базе на этом сервере.

Сначала сделайте просто чат, без истории. Потом добавьте сохранение отправленных сообщений "в базу на том же сервере".
28 апр 15, 14:29    [17575684]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
SqlBroker
28 апр 15, 14:55    [17575915]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Winnipuh
SqlBroker

Вы хотели сказать Service Broker?
28 апр 15, 15:29    [17576180]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4893
SQL2008
Winnipuh
SqlBroker

Вы хотели сказать Service Broker?


Если дело будет принимать массовый оборот, то надо Service Broker использовать. Иначе ляжет система.
28 апр 15, 15:32    [17576197]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
SQL2008
Winnipuh
SqlBroker

Вы хотели сказать Service Broker?


угу
28 апр 15, 16:06    [17576462]     Ответить | Цитировать Сообщить модератору
 Re: Синхронизация данных на клиентах  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
Felagund,

если вы используете сервер для хранения всех сообщений и клиенты не обмениваются между собой в частном порядке, то клиент должен на сервере вести перечень ID полученных сообщений. При подключении клиента запрашивать не полученные и, затем, вносить на сервер запись о получении.
28 апр 15, 17:05    [17576883]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить