powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Маркерный интерфейс
25 сообщений из 56, страница 1 из 3
Маркерный интерфейс
    #39877905
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для регистрации в IoC - норм?
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39877913
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маркерный интерфейс - антипаттерн. Если хочешь как-то пометить особым образом класс, то используй кастомные аттрибуты - они, в т.ч. для этого и придуманы. Приведи пример - как ты собираешься его использовать для IoC, я как-то не очень могу понять.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39877917
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
public interface ICommandHandler
{

}


public interface ICommandHandler<TCommand, TResult> : ICommandHandler
where TCommand : Command
{

}
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39877919
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public interface ICommandHandler
{

}


public interface ICommandHandler<TCommand, TResult> : ICommandHandler
where TCommand : Command
{

}
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39877940
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach,

И как это с IoC связано?
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878202
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
public interface ICommandHandler<TCommand>
    where TCommand: CommandBase
{
   Task HandleAsync<TCommand>(TCommand command, CancellationToken ct);
}




Вот такого интерфейса достаточно, не нужно городить TResult, команда не должна ничего возвращать. Если нужно получать данные (например, идентификатор созданной сущности), то это делается двумя путями:

1. хороший: через отдельное событие, на которое клиент подписывается, так как команда может выполнится асинхронно
2. средненькой паршивости: записывать данные прям в объект переданной команды.

но что-то там возвращать -- совсем плохо.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878203
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatlove_bach,

И как это с IoC связано?

Напрямую.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878204
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachдля регистрации в IoC - норм?

здесь нет никакого маркерного интерфейса, не нужен он.
рефлексия позволяет найти все реализации по дженерик-интерфейсу.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878223
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНапрямую.

hVosttрефлексия позволяет найти все реализации по дженерик-интерфейсу.
Сам сказал, сам опроверг.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878224
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttкоманда не должна ничего возвращать.
Что за горячечный бред? Метод тоже никогда не должен ничего возвращать? Откуда тут знать, что ТС подразумевает в данном случае под "командой".
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878239
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthathVosttНапрямую.

hVosttрефлексия позволяет найти все реализации по дженерик-интерфейсу.
Сам сказал, сам опроверг.

тут нет маркерного интерфейса, который используется только для регистрации зависимостей.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878241
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthathVosttкоманда не должна ничего возвращать.
Что за горячечный бред? Метод тоже никогда не должен ничего возвращать? Откуда тут знать, что ТС подразумевает в данном случае под "командой".

почитай про ДДД. возврат значения из команды -- антипаттерн.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878242
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CQRS точнее
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878272
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttCQRS точнее
В исходной теме где-то было про CQRS?
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878283
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthathVosttCQRS точнее
В исходной теме где-то было про CQRS?

я так понял, что речь идёт про реализацию команд хендлера из паттерна CQRS

ничего другого не было сказано, так что я не понимаю с чем ты тогда споришь, да её со слюнями про "горячечный бред" :)
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878408
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Код: c#
1.
2.
3.
4.
5.
public interface ICommandHandler<TCommand>
    where TCommand: CommandBase
{
   Task HandleAsync<TCommand>(TCommand command, CancellationToken ct);
}




Вот такого интерфейса достаточно, не нужно городить TResult, команда не должна ничего возвращать. Если нужно получать данные (например, идентификатор созданной сущности), то это делается двумя путями:

1. хороший: через отдельное событие, на которое клиент подписывается, так как команда может выполнится асинхронно
2. средненькой паршивости: записывать данные прям в объект переданной команды.

но что-то там возвращать -- совсем плохо.

не по теме сабжа вопрос:
1. а почему плохо? можешь пример привести?
2. "так как команда может выполнится асинхронно" - await?
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878412
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach2. "так как команда может выполнится асинхронно" - await?
Нет, как раз тут имеется в виду вовсе не await, а вызов по принципу - "отправил и забыл". И тут даже уже не то, что плохо что-то возвращать, а возвращать что-то просто не получится.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878414
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bach"так как команда может выполнится асинхронно" - await?глобально асинхронно. То есть ты не ожидаешь ответа вообще, а просто периодически проверяешь статус выполнения.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878415
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТо есть ты не ожидаешь ответа вообще, а просто периодически проверяешь статус выполнения.
Либо событие ловишь.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878424
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatlove_bach2. "так как команда может выполнится асинхронно" - await?
Нет, как раз тут имеется в виду вовсе не await, а вызов по принципу - "отправил и забыл". И тут даже уже не то, что плохо что-то возвращать, а возвращать что-то просто не получится.

если я правильно понял, тут про какой-то фоновый сервис хвост имел в виду. у меня такого нет
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878428
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachесли я правильно понял, тут про какой-то фоновый сервис хвост имел в виду. у меня такого нетон имел ввиду CQRS
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878429
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоже читал про то, что хвост говорит про "возвращение из команды плохо". может плохо читал. если убрать требование "типа команда выполняется по принципу дернул и забыл", то чем плох реально возврат какого-то результата?
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878430
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Prolove_bachесли я правильно понял, тут про какой-то фоновый сервис хвост имел в виду. у меня такого нетон имел ввиду CQRS

да какая разница
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878434
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachесли я правильно понял, тут про какой-то фоновый сервис хвост имел в виду. у меня такого нет
Можно в пределах одного процесса - ничего не мешает. Отправитель - в одном потоке, обработчик - в другом. Делаешь абстракцию (интерфейс) типа ICommandBus, все команды пускаешь через неё. Если потом захочется переехать на микросервисы/распределенку, то проблем никаких - делаешь просто другую реализацию ICommandBus (через RabbitMQ, или Azure Queue Storage, например) и все - мягко, гладко и безболезненно переезжаешь. Можно при этом даже запросто распараллелить обработку команд сразу на несколько узлов.
...
Рейтинг: 0 / 0
Маркерный интерфейс
    #39878435
love_bach
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
love_bachShocker.Proпропущено...
он имел ввиду CQRS

да какая разница

в смысле фоновый сервис что с CQRS, что нет
...
Рейтинг: 0 / 0
25 сообщений из 56, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Маркерный интерфейс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]