Я должен добавить уведомления по электронной почте в приложение клиент-сервер.
Уведомления происходят, когда пользователь выполняет определенные действия с пользовательским интерфейсом клиента.
Если у меня средний уровень илислужба, работающая на сервере, я могу представить, как это сделать:
1) я просто создаю таблицы БД с «ожидающими уведомлениями»
2), когда пользователь выполняет действие, генерирующее уведомлениеЯ добавляю запись в таблицу
3) на стороне сервера. Я бы постоянно пытался отправлять эти письма и удалять их из таблицы после успешной отправки.
Теперь я не могу сделать это сейчас, у меня естьпланирую добавить сервис позже, но сейчас я должен идти быстрым и грязным путем.
Так что я как-то думал о том, чтобы реализовать что-то вроде этого:
1) какНа клиенте происходит событие notify-worth, тот же клиент (мой exe) пытается отправить уведомление, при неудаче он регистрирует уведомление в таблице «ожидающие уведомления» (сбой может быть из-за отсутствия интернета connection или любая другая проблема)
2) Я добавляю таймер, который будет работать с любого клиентского компьютера для проверки ожидающих уведомлений.Если таковые имеются, клиент попытается отправить электронное письмо (используя транзакцию: я отмечу поле как «TryngToSendFromClientX», и в случае сбоя я сброслю это поле на NULL)
Я думаю,Подход будет работать, у него есть очевидные ограничения (если после сбоя никто не входит в систему, уведомление не отправляется - то же самое будет, если служба выйдет из строя).Но можете ли вы прокомментировать этот подход и предложить лучший?
Дополнительные примечания (чтобы лучше понять сценарий):
a) Примечание: все уведомления отправляются ста же учетная запись электронной почты.
b) Мне не нужно отслеживать, кто отправил электронное письмо.
c) проблема создания службы сейчас заключается в том, что она будетВ основном это значительно усложняет развертывание, и мне нужно создавать инструменты для мониторинга состояния сервиса.Что-то, что я сделаю в будущем, но не сейчас, в будущем я планирую добавить больше функциональности (не только отправка уведомлений) к сервису, поэтому в этом случае имеет смысл создать его.
d)Я буду отправлять электронные письма, используя компоненты Indy и SMTP-сервер.