Изменение статуса элемента на основе временных ограничений - PullRequest
0 голосов
/ 05 февраля 2012

Я создал сайт торгов для клиента, на котором пользователь публикует товар и устанавливает продолжительность аукциона.Элемент сначала находится в состоянии Ожидание , пока администратор не утвердит его или не пройдет 12 часов после того, как пользователь впервые опубликовал его.С этого момента товар получает Опубликовано , и другие пользователи могут делать ставки на него.По истечении периода аукциона предмет должен быть Закрыт , и предмет, выигравший самую высокую цену, выигрывает предмет ...

В дополнение к этому, мне нужно отправлять уведомления по электронной почте ...

  • Администратору после размещения нового предмета.
  • Победителю после выигрыша.
  • Владельцу предмета после закрытия аукциона.
  • Администратору после закрытия аукциона и определения победителя (т. Е. Люди фактически делают ставки).

В настоящее время я вызываю какой-то метод в моембизнес-уровень, который проверяет, есть ли какие-либо находящиеся на рассмотрении товары, прошедшие 12-часовой период для их публикации, и есть ли опубликованные товары, которые прошли через аукцион, чтобы закрыть их.Этот метод вызывается из нескольких мест, таких как домашняя страница веб-сайта, страница поиска элемента и другие ... На самом деле это вызывает у меня проблемы ( См. Этот вопрос ).Поэтому я думаю, что стоит найти альтернативное решение, которое помогло бы мне избавиться от всех этих проблем, которые, скорее всего, связаны с плохим дизайном.

  1. Должен ли я централизовать это, вызывая этот метод из одного места иотправлять электронные письма соответственно?
  2. Должен ли я делегировать все это на какое-то запланированное задание?В таком случае, в какие сроки целесообразно выполнить эту задачу?
  3. Любые другие предложения?

Ответы [ 2 ]

1 голос
/ 05 февраля 2012

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

Отдельная задача / служба также позволит вам лучше контролировать, какие письма отправляются и когда.

1 голос
/ 05 февраля 2012

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

Да, это кажется лучшим подходом. Разгрузите отправку электронной почты в отдельный процесс, чем в приложении ASP.NET MVC. Что касается сроков, это будет зависеть от требований вашего бизнеса. Вы можете взглянуть на Quartz.NET , который можно использовать в качестве механизма планирования задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...