Автоматическая генерация электронной почты на основе поля в базе данных SQL Server

#.net #wcf #web-services #windows-services

#.net #wcf #веб-сервисы #windows-службы

Вопрос:

Мне нужно что-то, что будет запускаться в нашей внутренней сети и отслеживать базу данных SQL Server на предмет состояния на основе поля даты, а затем генерировать электронное письмо, когда это условие выполняется, для внутреннего пользователя.

Попытка пересчета; Он должен отслеживать базу данных, и когда дата в определенном поле достигает переменной, он должен сгенерировать и отправить электронное письмо соответствующему пользователю.

т.е. Автоматическое напоминание

Я уже отправляю электронные письма через наш сервер Exchange в нашем настольном приложении, поэтому я считаю, что у меня все хорошо с электронной почтой. Я мало занимался веб-разработкой, поэтому мне интересно, является ли веб-сервис тем, что я ищу в ответ на свой вопрос.

Однажды я написал службу Windows, которая отслеживает сетевое местоположение и генерирует электронную почту на основе событий там, похоже ли это? Как вы взаимодействуете с базой данных SQL Server из службы Windows? Как насчет WCF, где это вписывается.

Я просто хочу убедиться, что я смотрю в правильном направлении.

Ответ №1:

Я сделал то же самое, и служба Windows намного лучше, чем веб-служба в вашем конкретном случае.

Вы не можете автоматически отслеживать что-либо с помощью веб-службы; у вас должен быть другой процесс (обычно служба Windows), который будет запрашивать веб-службу для запуска ее выполнения.

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

Комментарии:

1. Понятно, должен ли я использовать что-то вроде O-SQL со службой Windows для взаимодействия с БД? Спасибо

2. Я бы не стал использовать OSQL, с dot net легко подключиться к базе данных и запросить ее.

3. вот пример blog.netnerds.net/2008/02 /…

4. Спасибо, тогда я еще немного посмотрю на службу Windows. Как отмечено в моем комментарии к «Afshin Gh», я не верю, что триггер сработает для меня.

Ответ №2:

Если вы собираетесь отслеживать одну или несколько таблиц в базе данных MS SQL, я думаю, что вам следует использовать триггеры или задания sql. (Лично у меня нет опыта работы с триггерами, но я думаю, что они похожи на события для таблиц).

Но в другом решении:

Вы можете разработать службу Windows. Установите таймер в вашей службе Windows (допустим, он истекает каждые 1 минуту) и проверяйте, что вам нужно, когда таймер истечет, а затем ждите следующего события.

В этом случае вы можете проверить множество других условий, таких как: пинг IP, выполнение запроса в базе данных, проверка файла и т.д…

Веб-службы — это разные вещи, и они не то, что вам нужно прямо сейчас. Веб-службы подобны шлюзу или api для приложения. Когда вы используете facebook API, фактически вы подключаетесь к веб-службе.

Обновить:

О WCF: допустим, WCF — более крутой способ реализации веб-сервиса. Это дает вам больше возможностей, не только при разработке веб-сервисов. Возможно, вы захотите, чтобы ваше приложение взаимодействовало с другими приложениями по каналу TCP. Также это своего рода преемник .Сетевое удаленное подключение.

WCF в MSDN: http://msdn.microsoft.com/en-us/netframework/aa663324.aspx

Комментарии:

1. Вы правы, я не подумал о «заданиях sql», это хорошая идея!

2. Спасибо за совет. Я не думаю, что смогу использовать триггеры, потому что мне нужно отслеживать поле даты и сравнивать его с сегодняшней датой минус установленное количество дней. Я не думаю, что было бы из чего «запускать», поскольку данные были введены за 6-12 месяцев до этого.

3. @Dav Я думаю, что рабочие места более надежны, и лично я предпочитаю их во многих условиях. Обычно, когда мне нужно выполнить какую-либо запланированную задачу (например, копирование данных из одной базы данных в другую каждые 10 минут), я использую задания sql.