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

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

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

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане!

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

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

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

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

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

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

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

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

Как организовать логику, чтобы на серверной стороне в веб-приложении осуществлялось срабатывание триггера каждый час и происходило определение в какой временной зоне сейчас 10.00 утра, а затем запускалось соответствующее событие по выборке из базы данных пользователей, у которых сейчас это время?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.10.2015, 19:59
Ответы с готовыми решениями:

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

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

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

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

Заранее благодарна вам за помощь.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
11.10.2015, 07:57
Цитата Сообщение от Inessa_aks Посмотреть сообщение
вам удалось прикинуть как можно организовать процесс осуществления логики работы веб-приложения
Да в общем там нет ничего сложного.
Консоль, либо, что удобнее - Windows-служба, с таймером, который отрабатывает раз в час. При каждой отработке таймера в БД посылается запрос на выборку данных пользователей с нужным временем, после чего уже срабатывает логика рассылки.
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 7
11.10.2015, 09:05  [ТС]
Хорошо.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как можно реализовать этот подход?
0
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
11.10.2015, 11:45
Цитата Сообщение от Inessa_aks Посмотреть сообщение
которые подписаны на мой новостной канал.
То есть вы уже знаете как клиенты будут подписываться на ваш новостной канал? При этом решили использовать Windows-службы.

Добавлено через 5 минут
Тип приложения - Web-приложение в VS. Используйте таймер (System.Threading timer).
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
11.10.2015, 12:26
Inessa_aks, В целом, ASP.NET не поддерживает отложенных заданий (по кр мере не поддерживало в предыдущих версиях, в последних вроде есть подвижки).
Но можно использовать различные хитрости, разной степени костыльности.
Вот например есть такое решение http://blog.stackoverflow.com/... in-aspnet/
0
0 / 0 / 0
Регистрация: 09.10.2015
Сообщений: 7
11.10.2015, 13: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
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.10.2015, 13:52
Цитата Сообщение от Inessa_aks Посмотреть сообщение
Таким образом, мой вопрос по поводу того, как можно организовать приложение, которое будет постоянно крутиться на сервере как веб-служба и обрабатывать необходимые для меня события по временному триггеру остаётся открытым.
вы путаете понятия.
служба, она же windows service, она же unix daemon это не то же самое что и веб-служба.

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

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

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

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

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

Подскажите, пожалуйста, в чём тут может быть дело?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.10.2015, 16:23
Помогаю со студенческими работами здесь

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

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

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

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

Разработать веб-приложение для велосервиса
Разработать веб-приложение (Завтра зачёт) на основе использования технологии ASP.NET «Инфраструктура велосервиса включает велостанции,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru