Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 30.01.2022
Сообщений: 17

Какой патерн больше подходит?

07.09.2024, 12:23. Показов 2124. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня!

Планирую спроектировать программу для отправки whatsapp уведомлений клиентам. Задача модуля подключаться к БД с определенной периодичностью, брать новые уведомления и отправлять их по whatsapp, дальше в зависимости от ответа на шаблон или отправлять подтверждение или просто делать отметку в БД.

Пример работы программы:

Вы записаны на прием к доктору ... в ...
Подтверждаете визит?
ДА. НЕт.

Да.

Спасибо. Подтверждаем визит....



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

Вопрос какой потерн больше подходит для данной задачи? Напрашивается фабрика и сингтон для бд.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.09.2024, 12:23
Ответы с готовыми решениями:

Нейросеть. Классифицировать (объект), к какому из 3 видов он больше подходит
Какую нейросеть потребуется реализовать для выполнения данной задачи? У меня есть 3 числовых признака (одного объекта), с помощью них мне...

Какой порождающий паттерн подходит под задчу?
Подскажите, пожалуйста, какой порождающий паттерн подходит под эту задчу? Я думаю, Фабричный метод. Но хз верно ли? Реализовать...

Под какие проекты больше подходит ASP.NET WebForms?
Сейчас стало модно говорить о недостатках форм, а в каких проектах выгоднее раскрываются их преимущества?

32
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
08.09.2024, 19:34
Студворк — интернет-сервис помощи студентам
mashmed135, я упомянул про интерактивность. Это я к чему?
А к тому, что показал вам начальный кусок кода. Добавьте недостающий, по вашему мнению.
А потом и на вопрос ТС-а и ответим.

Добавлено через 2 минуты
Цитата Сообщение от mashmed135 Посмотреть сообщение
ведь доступ к коду while true есть.
Методы внешней либы не принимают токен, а в цикле, что хотите, то и делайте.
0
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
08.09.2024, 19:43
Цитата Сообщение от IamRain Посмотреть сообщение
А к тому, что показал вам начальный кусок кода. Добавьте недостающий, по вашему мнению.
ну я уже объяснял, почему добавлять должен не я, а мои оппоненты. вы декларируете решение/облегчение решения некоторой проблемы. вот ваша задача показать преимущества своего подхода. к чему здесь съезд на "а давайте по очереди"?

Цитата Сообщение от IamRain Посмотреть сообщение
Методы внешней либы не принимают токен, а в цикле, что хотите, то и делайте.
ok.
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
09.09.2024, 02:16
Цитата Сообщение от mashmed135 Посмотреть сообщение
к чему здесь съезд на "а давайте по очереди"?
К тому чтобы научить троллятину конструктиву и показать, когда используются паттерны.
Давайте заднюю передачу выключим и попробуем еще раз.

Проблема определена: есть необходимость (по возможности максимально реактивно) отменять hot-path логику, в которой участвует сторонний асинхронный код, доступа к коду которого нету, БЕЗ использования исключений.
Начальный набросок кода, добавьте недостающий. А потом вам покажут так неустанно манящий вас паттерн.
C#
1
2
3
4
while(true)
{
   var result = await _foreignService.HeavyPayloadCall();
}
1
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
09.09.2024, 06:40
Цитата Сообщение от IamRain Посмотреть сообщение
К тому чтобы научить троллятину конструктиву и показать, когда используются паттерны.
т. е. возражений на мой довод о том, кто и что должен показывать нет и ты решил начать клоунаду? а зачем тогда пытался что-то рассказывать и строить из себя, если показать ничего не смог? хотел просто заспамить одной и той же хернёй без единого обоснования, в надежде что мне надоест отвечать? типичный эксперт.

ещё и срач начал разводить, как только ответить стало нечего. прям как предыдущий герой.
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
09.09.2024, 07:32
Да уж, на конструктив никак не выходишь смотрю.
По теме: можно на основе TaskCompletionSource-а строить свои комбинаторы. Например, можно создавать таску, которая завершается при выполнении отмены.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
static class Extensions
{
    public static (Task cancellationTask, CancellationTokenRegistration tokenRegistration) AsCancellationTask(this CancellationToken token)
    {
        var tcs = new TaskCompletionSource<object?>();
        var registration = token.Register(() => tcs.SetResult(null));
        return (tcs.Task, registration);
    }
}
 
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10));
var (cancellationTask, registration) = cts.Token.AsCancellationTask();
 
await using (registration)
while (!cts.Token.IsCancellationRequested)
{
    //имитация _foreignService.HeavyPayloadCall();
    var delay = Task.Delay(1000);
    var completedTask = await Task.WhenAny(cancellationTask, delay);
    if (completedTask == cancellationTask)
    {
        Console.WriteLine("Operation cancelled");
        break;
    }
    Console.WriteLine($"Delay completed: {DateTime.Now:hh:mm:ss}");
}
Этот паттерн называется Exceptionless Cancellation. Название придумал сам, хотя оно, внезапно, напрашивается.
Задумку увидел на SO.

Возвращаясь к вопросу ТС-а:
Цитата Сообщение от osipen Посмотреть сообщение
Должна быть возможность подключать новые клиники с минимальным изменение кода, и новые уведомления с минимальным изменением кода.
Это решается созданием справочника клиник, и добавлением FK на нужную запись. Фсе, никаких паттернов тут не нужно.

Добавлено через 5 минут
Цитата Сообщение от mashmed135 Посмотреть сообщение
ещё и срач начал разводить,

Не по теме:


Ты неадекват что-ли?

3
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
09.09.2024, 08:51
Цитата Сообщение от IamRain Посмотреть сообщение
Да уж, на конструктив никак не выходишь смотрю.
да уж, на конструктив никак не выходишь смотрю. эти куллэксперты.
Цитата Сообщение от IamRain Посмотреть сообщение
await Task.WhenAny(cancellationTask, delay);
и? это использование абилок планировщика. причём здесь паттерны?

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

другими словами, эксперт ваяет хэлворды с требованиями в районе нуля, но для солидности решил спастить хот/хэви - авось никто не заметит экспертность и спросить за это не сможет. вот так бывает - взял и проигнорировал своё же основное условие.
Цитата Сообщение от IamRain Посмотреть сообщение
Этот паттерн называется Exceptionless Cancellation.
называется "я ваяю хэлворды, где в именах форфан используется хот/хэви и прочее подобное".
Цитата Сообщение от IamRain Посмотреть сообщение
Название придумал сам, хотя оно, внезапно, напрашивается.
и даже здесь поплыл, потому как проблема не имеет никакого отношения к "Exceptionless".
Цитата Сообщение от IamRain Посмотреть сообщение
Ты неадекват что-ли?
решил продолжить сводить в срач? какой молодец.
0
 Аватар для IamRain
4695 / 2702 / 735
Регистрация: 02.08.2011
Сообщений: 7,236
09.09.2024, 08:58
Цитата Сообщение от mashmed135 Посмотреть сообщение
и? это использование абилок планировщика. причём здесь паттерны?
Парень, ты, судя по всему, не понимаешь куда попал и кто здесь обитает
0
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
09.09.2024, 09:37
Цитата Сообщение от IamRain Посмотреть сообщение
Парень, ты, судя по всему, не понимаешь куда попал и кто здесь обитает
ни единого возражения? ожидаемо.

но ты попытайся. объяснись за паттерны, за хот/хэви, за "без исключений" и прочее. а то куда-то вся твоя экспертность улетучилась после пары вопросов и теперь раздаются шаблонные оправдания в попытках сохранить лицо.
0
09.09.2024, 10:20

Не по теме:


Цитата Сообщение от mashmed135 Посмотреть сообщение
вот так, всё что угодно можно свести к паттернам. только это: 1. не имеет смысла 2. от обозначения какого-либо действия термином, применение этого действия не становится применением термина.
Лично для меня паттерны в программировании имеют смысл, т.к.:
1. Упрощают чтение кода.
2. Упрощают обучение.
3. Упрощают общение с другими разработчиками. Ну т.е. вместо того, чтобы расписывать ... четыре страницы текста ..., мне достаточно обозначить, что данный UI-проект построен согласно паттерну MVVM.

P.S.: если что, я не пытаюсь обесценить или оспорить ваш личный опыт, т.е. если для вас паттерны не имеют значения в каком-то практическом (или философском) смысле, то и ок, но лично я нахожу их весьма полезными и применяю там, где они уместны.

0
112 / 110 / 30
Регистрация: 08.05.2021
Сообщений: 485
09.09.2024, 11:50
Цитата Сообщение от kotelok Посмотреть сообщение
Лично для меня паттерны в программировании имеют смысл, т.к.
ну это всё сводится к контексту терминологии. я писал об этом ранее - это не то, о чём здесь идёт речь.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
09.09.2024, 17:50
Лучший ответ Сообщение было отмечено Pilarentes как решение

Решение

Цитата Сообщение от osipen Посмотреть сообщение
Планирую спроектировать программу для отправки whatsapp уведомлений клиентам. Задача модуля подключаться к БД с определенной периодичностью, брать новые уведомления и отправлять их по whatsapp, дальше в зависимости от ответа на шаблон или отправлять подтверждение или просто делать отметку в БД.
[...]
какой потерн больше подходит для данной задачи?
Сага.
1
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
09.09.2024, 19:08
kolorotur, выглядит прикольно, но я думаю ТСу лучше сделать в лоб. Хотя он после старта темы как-то и не отписывался...

P.S. почитал внимательнее... а чем обусловлена рекомендация именно этой архитектуры?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
09.09.2024, 21:20
Цитата Сообщение от Wolfdp Посмотреть сообщение
а чем обусловлена рекомендация именно этой архитектуры?
Хорошо подходит если имеется набор растянутых по времени действий, являющихся частью одной "тразнакции" и нужно что-то вроде конечного автомата, координирующего все эти действия.
В данном случае транзакция — это весь процесс записи на прием от начала до конца.
Начало процесса — уведомление от базы. Хз когда оно придет.
Уведомление пришло, отправили сообщение клиенту — хз когда он его прочитает и ответит. Может и никогда — нужен асинхронный таймаут, по истечении которого бронь снимается и транзакция завершается.
Пришло сообщение от пользователя — хз соответствует ли оно установленному формату, может придется отправить "изъясняйтесь яснее, пожалуйста", что приведет к дополнительным шагам: сброс таймаута, переход обратно в состояние "ждем ответа" и пр.
Между всеми этими действиями приложение может закрашиться, сервер перезапуститься, т.е. надо это все где-то хранить и восстанавливать состояние/ожидание после перезапуска.
По мере добавления фич процесс может начать усложняться: чат-бот теперь позволяет перезаписаться на другую дату или отменить запись; после подтвержения теперь надо добавить событие в календарь доктора; добавилось требование отправить клиенту напоминание за Х дней и потом еще за У часов до приема и т.д. и т.п.
Сага позволяет все это неплохо координировать и расширять имеющийся функционал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.09.2024, 21:20

Какой бесплатный хостинг для сайтов подходит для новичков?
Мне нужно узнать какой бесплатный хостинг для сайтов подходит для новичков(просто разобраться при первом входе)

Какой метод рекламы подходит больше?
Здравствуйте, посоветуйте пожалуйста какой вид рекламы для моего сайта наиболее эффективен? Что предпринять что-бы отдача была сразу и что...

Народ какой из хостер мне больше подходит?
Вобщем имеется сайт на вордпресе по сути это будет просто обычный дайджест... думаю каких хостер использовать: nichost.ru ...

Подскажите какой код больше подходит для использования
Первый вариант кода std::cout &lt;&lt; (x == 0 || y == 0 ? &quot;ввод нулей запрещен&quot; : ...

с++,с#,java какой язык для каких задач больше подходит?
где то прочитал &quot;Одни языки программирования лучше подходят для одних задач,другие для других&quot; вот хотелось бы узнать какой...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru