- 09, Sep 2010
- #1
Стоит задача сделать внутрикорпоративный мессенгер, аналог icq.
Сразу хочу предупредить - о jabber и др. готовых решения знаю.
По некоторым причинам - нужно написать свой. Будет база под MS SQL 2008 R2, где хранится список пользователей, история сообщений и др. логи. Собственно вопрос вот в чем.
Каким образом клиенту лучше получать сообщения? 1. Самый простой способ.
Прямое подключение к базе (через ADO), клиент периодически опрашивает базу о наличии полученных сообщений.
При отправке сообщения вызывается процедура в базе, сохраняющая сообщение в очереди.
Как мне кажется, минус в том, что будет сильно загружена база (и сервер).
2. Реализовать промежуточный сервер приложений, обрабатывающий запросы от клиентов.
На чем тогда его делать, с помощью Socket?
И будет ли выигрыш по загрузке базы -сомнительно.
3. Хотелось бы, чтобы клиент получал сообщения от сервера (push), а не опрашивал сервер периодически.
Возможно ли такое или это получится доп.
дыра к компу клиента? Какая технология? 4. Как это реализовано в существующих решениях (icq, jabber и т.п.)?
По некоторым причинам - нужно написать свой. Будет база под MS SQL 2008 R2, где хранится список пользователей, история сообщений и др. логи. Собственно вопрос вот в чем.
Каким образом клиенту лучше получать сообщения? 1. Самый простой способ.
Прямое подключение к базе (через ADO), клиент периодически опрашивает базу о наличии полученных сообщений.
При отправке сообщения вызывается процедура в базе, сохраняющая сообщение в очереди.
Как мне кажется, минус в том, что будет сильно загружена база (и сервер).
2. Реализовать промежуточный сервер приложений, обрабатывающий запросы от клиентов.
На чем тогда его делать, с помощью Socket?
И будет ли выигрыш по загрузке базы -сомнительно.
3. Хотелось бы, чтобы клиент получал сообщения от сервера (push), а не опрашивал сервер периодически.
Возможно ли такое или это получится доп.
дыра к компу клиента? Какая технология? 4. Как это реализовано в существующих решениях (icq, jabber и т.п.)?