Я хочу создать веб-приложение в MVC Asp.Net для бронирования номеров в отеле и управления клиентами. У меня возникают проблемы с одним из требований. Я хочу создать код для отправки SMS-сообщений клиентам в дни их рождения для желающих их из отеля. Я смущен, что где я должен поместить код для проверки клиентов с датой рождения такой же, как и сегодняшняя дата, так что Код запускается каждый день в 12:00, даже если веб-приложение не запущено. Пожалуйста, объясните, где я должен вставлять код?Дни рождения Напоминание Код для Asp.Net MVC
ответ
Существует библиотека с открытым исходным кодом под названием Quarz, которая поможет вам в этом.
Mike Brind об этой библиотеке очень хорошо blog article. Библиотека предоставляет свободный API, который позволяет вам делать именно то, что вы хотите.
следующий код (на примере упомянутой статье блога) создает событие, которое называется каждый день в 12 часов:
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<BirthdayJob>().Build();
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule
(s =>
s.WithIntervalInHours(24)
.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(12, 0))
)
.Build();
scheduler.ScheduleJob(job, trigger);
Он может работать в контексте веб-сайта, Windows Service или даже WinForms-приложение (пока пользователь не закрывает его).
В зависимости от контекста вам необходимо запланировать работу в разных местах. Для веб-сайта будет Application_Start() -Method. Для службы это будет OnStart() -Method.
Кроме того вам нужен класс «BirthdayJob», который обеспечит реальный код, который должен выполняться периодически:
public class BirthdayJob : IJob
{
public void Execute(IJobExecutionContext context)
{
// Check for birthdays...
}
}
Существует один момент вы должны знать, если вы вызываете этот код в контексте сайт:
Возможно, что IIS заставляет ваш сайт спать, если он не запрашивается какое-то время. В этом случае возможно, что запланированные задачи не будут выполнены.
Существует возможность изменить время ожидания для вашего сайта: В диспетчере IIS перейдите в «Пулы приложений», найдите пул приложений, который используется для вашего сайта, и выберите «Свойства» -> «Производительность». Там вы можете установить тайм-аут простоя. Существует несколько других подходов к решению этой проблемы.
Однако, если ваш сайт запрашивается часто, вы никогда не увидите эту проблему.
Лучшим способом было бы позвонить в Quarz из Windows-Service, который будет работать, даже если ваши сайты будут спать или запихаться под столом.
Quartz - это путь, но было бы лучше сделать его службой Windows. – 3dd
Служба Windows также является хорошим решением, предположив, что он может установить один (это может быть проблемой для хостинг-провайдеров). Это также добавило бы сложности на сайт, но да, вы правы! +1 для вашего комментария. –
Если я продолжу работу с Windows-сервисом или quarz, будет выполняться код, даже если мое веб-приложение не запрашивается никому. Я хочу сказать, что если никто не откроет приложение, как будет выполняться сегмент кода? –
Вы можете отправить сервис вместе с вашим веб-приложением, которое выполняет периодические проверки и запускается отдельно от сайта.
Другим использованием этой услуги может быть общее обслуживание хранилища данных, которое используется сайтом, таким образом, например, один раз в день он будет архивировать информацию, проверять дни рождения и любые другие операции обслуживания или периодические действия, такие как выдача напоминаний и т. д., которые ваша платформа выпустит.
Downvoter хочет оставить комментарий? – npinti
- 1. Facebook друзья дни рождения
- 2. Elasticsearch - Входящие дни рождения
- 3. CoreData сортировать будущие дни рождения
- 4. День рождения напоминание в SQL Server
- 5. Найти следующие дни рождения для празднования
- 6. XPath - найти ближайшие дни рождения
- 7. mySQL SELECT предстоящие дни рождения
- 8. Группировка дни рождения по месяцам
- 9. Запрос на предстоящие дни рождения
- 10. SQL Select Предстоящие дни рождения
- 11. Напоминание Предупреждение, как в google для asp.net mvc
- 12. Как загрузить дни рождения на fullcalendar.js плагин в C# asp.net
- 13. ASP.NET MVC код для graderoseter
- 14. Как получить все дни рождения сегодня?
- 15. Найдите отсутствующие дни рождения в Apple Addressbook
- 16. Получите предстоящие дни рождения Mysql и PHP
- 17. Дни рождения (даты) между двумя месяцами
- 18. Проблема с SQL получать Предстоящие Дни рождения
- 19. найти ближайшие дни рождения из базы данных
- 20. Sync FaceBook Дни рождения с календарем iOS
- 21. Получите ближайшие дни рождения mysql timestamp
- 22. Facebook Список друзей и дни рождения
- 23. Extract дни рождения в естественном порядке
- 24. Facebook Graph API друзей дни рождения
- 25. SQL Server: дни рождения на високосный год
- 26. Найти ближайшие дни рождения с Mysql
- 27. FQL, чтобы получить наступающие дни рождения
- 28. Как заказывать дни рождения в HIVE/HUE?
- 29. Получить следующие дни рождения с помощью Doctrine
- 30. Рассчитать дни, оставшиеся до дня рождения?
Для этого можно создать отдельное настольное приложение (консоль, например).И запустите его в Windows Task Scheduler – MajkeloDev
Вы посмотрели на Azure Webjobs? –
Вы можете выполнить это требование через службы Windows. Следующая ссылка используется для получения некоторых сведений о службах Windows. [Учебное пособие по созданию простой службы Windows с примером примера в C# и VB.Net] (http://www.aspsnippets.com/Articles/Tutorial-to-create-a-simple-Windows-Service-with-sample-example -in-C-and-VBNet.aspx) – Sankar