Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 7
1

Веб-приложение для организации уведомлений пользователей

09.10.2015, 19:59. Просмотров 1013. Ответов 13
Метки нет (Все метки)

Уважаемые форумчане!

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

Задача заключается в том, чтобы осуществлять рассылку этих уведомлений в бизнес-время, когда новости актуальны, пользователи гарантировано не спят и смогут увидеть полученное уведомление, а затем перейти по ссылке на интересующий их раздел на моём новостном канале.

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

Скажите, пожалуйста, как можно организовать следующую логику работы веб-приложения на серверной стороне?

Мне необходимо, чтобы каждый пользователь в 10.00 утра по своему локальному времени получал уведомление по почте в случае, если в интересующем его разделе на моём новостном сайте появилось новое сообщение.

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

Мне непонятно как программно реализовать работу этого триггера и запуск соответствующего события?

Подскажите, пожалуйста, как это можно сделать практически (в виде участка соответствующего программного кода)?

Как организовать логику, чтобы на серверной стороне в веб-приложении осуществлялось срабатывание триггера каждый час и происходило определение в какой временной зоне сейчас 10.00 утра, а затем запускалось соответствующее событие по выборке из базы данных пользователей, у которых сейчас это время?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2015, 19:59
Ответы с готовыми решениями:

Шифрование файлов для разных групп пользователей для веб-сайта
Добрый вечер, уважаемые знатоки. У меня есть конкретная задача, которую надо решить, но нет...

Веб приложение для администрирования БД
Нужно написать веб приложение с использованием Java EE, Glassfish, PostgreSQL с функционалом: выбор...

Веб приложение для бд mysql
Здравствуйте.Посоветуйте пожалуйста готовое веб приложение(чтобы только установить и настроить) под...

веб приложение для генерации
необходимо разработать web-приложение для генерации практических заданий приближённых вычислений ...

13
Модератор
Эксперт .NET
5302 / 4097 / 1182
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
09.10.2015, 21:17 2
Inessa_aks, если время терпит до завтра, то попробую прикинуть, как это организовать.
1
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 7
09.10.2015, 21:46  [ТС] 3
Да. Время, конечно, терпит. Спасибо.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 7
11.10.2015, 06:38  [ТС] 4
insite2012, разрешите поинтересоваться, вам удалось прикинуть как можно организовать процесс осуществления логики работы веб-приложения, описанной в моём начальном сообщении?

Заранее благодарна вам за помощь.
0
Модератор
Эксперт .NET
5302 / 4097 / 1182
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
11.10.2015, 07:57 5
Цитата Сообщение от Inessa_aks Посмотреть сообщение
вам удалось прикинуть как можно организовать процесс осуществления логики работы веб-приложения
Да в общем там нет ничего сложного.
Консоль, либо, что удобнее - Windows-служба, с таймером, который отрабатывает раз в час. При каждой отработке таймера в БД посылается запрос на выборку данных пользователей с нужным временем, после чего уже срабатывает логика рассылки.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 7
11.10.2015, 09:05  [ТС] 6
Хорошо.

Я немного уточню постановку задачи.

Мне необходимо, чтобы логика работы приложения осуществлялась при помощи именно веб-приложения.

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

Использование подхода основанного на Windows-службе потребует, чтобы мой домашний компьютер был включен 24 часа в сутки, что для меня не приемлемо.

Поэтому мне необходимо реализовать логику работы моего приложения как веб-службы, которую я могла бы разместить на любом хостинге в сети, который поддерживает работу с платформой .NET и базами данных.

Здесь возникает сразу несколько вопросов.

Какой тип проекта использовать в Visual Studio?

Можно строить проект как обычное ASP.NET приложение или нужно использовать подход c использованием WCF?

Особенность постановки моей задачи заключается в том, что мне не нужно использовать веб-методы и их вызов через WSDL.

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

Мой вопрос заключается в том как конкретно можно организовать этот процесс?
0
Каратель
Эксперт С++
6598 / 4019 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.10.2015, 10:43 7
Цитата Сообщение от Inessa_aks Посмотреть сообщение
Это необходимо в силу того, что это приложение должно круглые сутки крутиться на сервере и отрабатывать каждый час события по соответствующему временному триггеру.
Использование подхода основанного на Windows-службе потребует, чтобы мой домашний компьютер был включен 24 часа в сутки, что для меня не приемлемо.
ну так и запускайте Windows-службу на том же сервере где и хост

Добавлено через 1 минуту
Цитата Сообщение от Inessa_aks Посмотреть сообщение
Особенность постановки моей задачи заключается в том, что мне не нужно использовать веб-методы и их вызов через WSDL.
кто будет их вызывать и зачем? это никак не вяжется с вашей постановкой задачи
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 7
11.10.2015, 11:34  [ТС] 8
OK.

Подскажите, пожалуйста, какие компании предлагают хостинг, где в дополнении ко всем возможностям .NET платформы можно использовать ещё и запуск Windows-служб?

Я понимаю, что есть облачный сервис от Microsoft Azure со всеми этим возможностями, но после одного месяца trial-использования их аккаунта я предполагаю, что они зарядят мне такую сумму за использование их услуг, что мне это влетит в копеечку.

Использование веб-методов с их вызовом через WSDL у меня не предусматривается, т.к я планирую использовать уже готовый email wrapper, который берёт на себя всю работу, связанную с пересылкой email сообщений.

Таким образом, мой вопрос по поводу того, как можно организовать приложение, которое будет постоянно крутиться на сервере как веб-служба и обрабатывать необходимые для меня события по временному триггеру остаётся открытым.

Как можно реализовать этот подход?
0
2217 / 1681 / 505
Регистрация: 02.08.2011
Сообщений: 4,827
11.10.2015, 11:45 9
Цитата Сообщение от Inessa_aks Посмотреть сообщение
которые подписаны на мой новостной канал.
То есть вы уже знаете как клиенты будут подписываться на ваш новостной канал? При этом решили использовать Windows-службы.

Добавлено через 5 минут
Тип приложения - Web-приложение в VS. Используйте таймер (System.Threading timer).
0
Эксперт .NETАвтор FAQ
9641 / 4754 / 1710
Регистрация: 11.01.2015
Сообщений: 5,931
Записей в блоге: 34
11.10.2015, 12:26 10
Inessa_aks, В целом, ASP.NET не поддерживает отложенных заданий (по кр мере не поддерживало в предыдущих версиях, в последних вроде есть подвижки).
Но можно использовать различные хитрости, разной степени костыльности.
Вот например есть такое решение http://blog.stackoverflow.com/... in-aspnet/
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 7
11.10.2015, 13:11  [ТС] 11
Цитата Сообщение от IamRain Посмотреть сообщение
То есть вы уже знаете как клиенты будут подписываться на ваш новостной канал?
Для своего канала (или как он в Facebook-е называется - user group) я при помощи Facebook API могу извлечь имена email моих подписчиков и их временные зоны, а затем записать их в БД, в которой находятся соответственно значения Id, email, timezone.

В случае использования веб-приложения я не могу понять как мне организовать логику механизма работы запуска событий рассылки сообщений по почте для пользователей из соответствующих временных зон.

Я понимаю, что есть так называемое нулевое время по Гринвичу (или UTC - Universal Time Coordinated), от которого отсчитывается +12 часов в одну сторону и -11 часов в другую сторону.

Земля вращается, и в каждой временной зоне наступает 10 am утра, в которые нужно осуществлять рассылку тем пользователям, которые находятся в этой временной зоне.

Но как КОНКРЕТНО на сервере определить, что именно СЕЙЧАС 10 am в Лондоне?

А через час будет 10 am по Берлину, через два часа - по Киеву, через три часа - по Москве?

Допустим, я ввела перечисление, чтобы условно отображать эти временные зоны.

C#
1
2
3
4
5
6
enum UTC_OFFSET
        {
            UTC_0,
            UTC_MINUS_1, UTC_MINUS_2, UTC_MINUS_3, UTC_MINUS_4, UTC_MINUS_5, UTC_MINUS_6, UTC_MINUS_7, UTC_MINUS_8, UTC_MINUS_9, UTC_MINUS_10, UTC_MINUS_11,
            UTC_PLUS_1, UTC_PLUS_2, UTC_PLUS_3, UTC_PLUS_4, UTC_PLUS_5, UTC_PLUS_6, UTC_PLUS_7, UTC_PLUS_8, UTC_PLUS_9, UTC_PLUS_10, UTC_PLUS_11, UTC_PLUS_12
        };
Как узнать в какой временной зоне работает сервер?

Текущую временную зону я получаю при помощи следующего оператора.

C#
1
String utcOffest = String.Format("{0:c}", TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now));
Но я так понимаю, что это определяется смещение моей временной зоны относительно нулевой временной зоны, а это не совсем то, что мне нужно.

Условно говоря мне нужно начать рассылку в 10 am по Лондону, а затем через каждый час стартовать событие моей почтовой рассылки для UTC_OFFSET.UTC_MINUS_1 и т.д.

См. https://upload.wikimedia.org/w... _Zones.png

Как мне корректно организовать логику работы приложения в этом случае?
0
Каратель
Эксперт С++
6598 / 4019 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.10.2015, 13:52 12
Цитата Сообщение от Inessa_aks Посмотреть сообщение
Таким образом, мой вопрос по поводу того, как можно организовать приложение, которое будет постоянно крутиться на сервере как веб-служба и обрабатывать необходимые для меня события по временному триггеру остаётся открытым.
вы путаете понятия.
служба, она же windows service, она же unix daemon это не то же самое что и веб-служба.

служба работает в фоне и что-то делает постоянно (ожидание тика таймера это тоже дело).

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

Добавлено через 2 минуты
Цитата Сообщение от Inessa_aks Посмотреть сообщение
Как узнать в какой временной зоне работает сервер?
DateTimeOffset.Now
0
2411 / 1866 / 337
Регистрация: 22.07.2011
Сообщений: 7,164
11.10.2015, 15:49 13
По поводу таймера: либо фоновый поток , либо запросы по таймеру средствами хостинга , грунт например.
А по поводу времени: приводите время на сервере к UTC формату , а от него , уже пляшите в соответствии с зоной клиента , приводя в ту или иную сторону. или можно обратится к сервисам точного времени.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 7
11.10.2015, 16:23  [ТС] 14
В ходе проведения экспериментов со своим проектом в Visual Studio я столкнулась с непонятным эффектом самой Студии, которая у меня время от времени крэшила.

Я решила переустановить Visual Studio и поставить новую версию SQL Server 2014.

После осуществления этой процедуры я обнаружила, что у меня куда-то пропала опция выбора "SQL Server Database" из диалогового окна добавления новой базы в проект.

Подскажите, пожалуйста, в чём тут может быть дело?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2015, 16:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Удаление ярлыка с рабочих столов у всех пользователей в организации
Здравствуйте, необходимо удалить ярлык с рабоч х столов у всех пользователей в организации. Ярлык...

Веб приложение для Андроид на php
такое вообще возможно ? Будет ли сайт полноценно работать ? Веб приложение должен быть...

Приложение для работы с веб-камерой
Здравствуйте уважаемые программисты, требуется срочно ваша помощь. У меня есть ноутбук, хочу...

Разработать веб-приложение для велосервиса
Разработать веб-приложение (Завтра зачёт) на основе использования технологии ASP.NET...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.