Задать вопрос
Ответы пользователя по тегу C#
  • Архитектурно-правильная отсылка большого количества email/sms с asp.net сайта

    FinDK
    @FinDK
    Предложу свой вариант с учетом тех вариантов, что предложили Вы.
    Но начну с замечаний по поводу потоков: был у меня проект, где на каждый чих создавался поток, в итоге никакой сервер не справлялся с нагрузкой — просто не хватало оперативной памяти. Как мне помнится, каждый поток отжирал 8 МБ.
    Из этого опыта я вижу картинку следующим образом:
    Каждый айтем надо класть в очередь, из которой брать и отправлять в одном или несколькими потоках, в зависимости от ситуации (настроек скажем App.config).
    При успешном отправлении записывать в БД сразу пачкой.

    Из всего этого следует, что нужно продумать очередь отправки с пулом потоков (а может даже и одного потока хватит), и разбитие очереди на пачки.
    Выгода:
    1) Разбиение на пачки снижает нагрузку на SQL сервер.
    2) На каждый айтем из очереди не создается отдельного потока, что экономит оперативную память.

    Использовал бы я как раз WinService, дописав к ней консоль, позволяющая настраивать очередь, количество потоков, и прочее, что понадобится.

    Надеюсь помог, удачи!
    Ответ написан