#.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.