powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF, Repository, UnitOfWork
25 сообщений из 164, страница 6 из 7
EF, Repository, UnitOfWork
    #38110793
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaНу, хоты бы что-то внятное.
Тебе об этом "внятном" уже битый день тылдычат.

SeVaА теперь нарисуй диаграмму...
Ага, только сейчас возьму разбег.

SeVa1.Провести оплату через провайдера.
2. Если оплата прошла успешно, то сопоставить ее с неоплаченными счетами. Если нет, то показать ошибку пользователю
3. Передать данные об оплате в 1С
4. Всем полностью оплаченным Счетам изменить статус на Оплачено.
5. Если есть полностью оплаченные Счета, то :
- произвести уведомление Менеджеров по e-mail
- запустить складской процесс по резервированию на складе
- etc
- etc

1.

Код: c#
1.
2.
var model = new PaymentModel(PaymentDto, IProivider);
model.Pay();



2.

Код: c#
1.
model.Compare();



3. Это интеграция, решается асинхронно и в другом контексте (Windows сервис, SSIS и т.д.). Задача не для PaymentModel.

4. Задача решается в другом контексте (Windows сервис, SSIS и т.д.). Задача не для PaymentModel.

5. Задача решается в другом контексте (Windows сервис, SSIS и т.д.). Задача не для PaymentModel.

SeVaГде здесь бизнес-логика и как ты ее будешь реализовывать исключительно в Мodel? Процессов несколько, возможны ветвления кто и как будет проводить их оркестровку?
Правильно, мухи отдельно, котлеты отдельно. Мухи - в модели, оркестрарий - в отдельном контексте.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38110967
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Никаких провайдерова в Payment быть не должно. Пользуясь твоей терминологией: мухи и котлеты отдельно
2. Какая-то хрень
3,4,5 и тд решаются не в Model

В итоге никакой логики кроме persistens, мелких вычислений, элементарных проверок в ней быть не должно.
В твоих русскоязычных вики пачкают только такие как ты, а ты это потом эут шняго развозишь по форуму
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38110991
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

Допустим вся эта логика в контроллере.
Получается довольно длинная портянка кода, нужно как то разносить это по функциям.

к примеру:
Код: c#
1.
2.
3.
bool IsSuccess = DoPayment(someValue);
if (IsSuccess)
   DoSomeUpdate();



Все эти методы тоже будут в контроллере?
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111101
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa1. Никаких провайдерова в Payment быть не должно. Пользуясь твоей терминологией: мухи и котлеты отдельно
Что такое у тебя Payment? Дата класс? Ни в дата классе, ни в DTO никаких провайдеров не должно быть. В PaymentModel (если логики много - можно и через некий new PaymentService(PaymentModel)) - должен быть провайдер, о котором ты писал выше. В данном случае в PaymentModel - бизнес логика, если у нас некий PaymentService - то логика размазывается и на него. Но это для особо замороченных случаев. Тебе рано про них еще знать.

SeVa2. Какая-то хрень
...у тебя в голове.

SeVa3,4,5 и тд решаются не в Model
А ч о чем.

SeVaВ итоге никакой логики кроме persistens, мелких вычислений, элементарных проверок в ней быть не должно.
В твоих русскоязычных вики пачкают только такие как ты, а ты это потом эут шняго развозишь по форуму
Интеграция между системами - это не логика модели. Периодическая проверка в неком сервисе и апдейт поля по какому-то признаку и рассылка - это не логика модели. Наличие признака и проверка его - это логика. У тебя каша в голове.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111160
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Модель это просто передатчик (транспортная абстакция) если смотреть в дуплексном виде, между вьюхой и контроллером
логику там зашивать я не вижу смысла, ну окромя валидации или трансляции подписки на изменение модели
в двух словах это выглядит примерно так.
Код: c#
1.
2.
3.
4.
5.
  public ActionResult Payment(PaymentModel item)
        {
            PaymentSystem<Payment>>.ActivatePayment(item);
            return View(item);
        }


тут имеем все для проводки, результаты вкидываем обратно, вся логика на стороне.
логика тут вообще по стороне, ее вообще может не быть
если контроллер транслирует в одну сторону в плане модели
Код: c#
1.
2.
3.
4.
 public ActionResult Payment(int? id)
        {
           return View(ses.Query<Content>().Limit(id,1).First());
        }

[/SRC]
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111178
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ, Модель это просто передатчик (транспортная абстакция) если смотреть в дуплексном виде, между вьюхой и контроллером
Если называть дата-модель (классы ORM) - моделью (в терминах MVC), то да. Но использовать дата-модель в качестве модели в MVC - моветон. Выльется боком. Итого, модель не просто передатчик, а именно класс с бизнес-логикой.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111235
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
Почему использование дата модели в трансляции в одностороннем порядке может выльется ?
дата это простая абстракция, я ведь могу подкинуть сахарку, и будет как в первом классе:

Код: c#
1.
2.
3.
4.
5.
 public ActionResult Payment(int? id)
{
         Content сontent =   new Content(id)
    return View(сontent);
 }
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111245
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVa1. Никаких провайдерова в Payment быть не должно. Пользуясь твоей терминологией: мухи и котлеты отдельно
Что такое у тебя Payment? Дата класс? Ни в дата классе, ни в DTO никаких провайдеров не должно быть. В PaymentModel (если логики много - можно и через некий new PaymentService(PaymentModel)) - должен быть провайдер, о котором ты писал выше. В данном случае в PaymentModel - бизнес логика, если у нас некий PaymentService - то логика размазывается и на него. Но это для особо замороченных случаев. Тебе рано про них еще знать.

SeVa2. Какая-то хрень
...у тебя в голове.

SeVa3,4,5 и тд решаются не в Model
А ч о чем.

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

Это у вас каша и писсуары в головах.
авторЕсли называть дата-модель (классы ORM) - моделью (в терминах MVC), то да. Но использовать дата-модель в качестве модели в MVC - моветон. Выльется боком. Итого, модель не просто передатчик, а именно класс с бизнес-логикой.

В огороде бузина, а в Киеве дядька.

Все "если,то" выше - это и есть бизнес-логика, которую нужно обеспечивать и делается это не в Model

и не в одной строчке очередного маразма из серии DataService
автор PaymentSystem<Payment>>.ActivatePayment(item);


В общем понятно, что ничего подобного ты не делал. Ковыряйся в говнокоде дальше и не вякай.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111262
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,
имхо я не согласен ни с тобой ни с севой, с моего имхо модель это "транспортный протокол" для функционирования системы
представления, можно всунуть в нее бизнеслогику, можно и в контроллер ( это все стерпит)
но все же если какие то действия нужно предпринимать на основе данных модели с клиента, все это надо выносить отдельно.
что бы можно было, менять эти действия не трогая модель и контроллер.
Если бл в контроллере предполагает это, почему бы нет, если в модели опять почему бы нет.
Исходить нужно из изоляции -> тестирования и понятности кода для сопровождения.
зы если рассуждать по стеку то стек всегда поднимется в контроллер, отсюда можно пошутить ( прагматично),
что бл всегда будет в сонтроллере
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111277
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa
автор PaymentSystem<Payment>>.ActivatePayment(item);


В общем понятно, что ничего подобного ты не делал. Ковыряйся в говнокоде дальше и не вякай.
Сева ты как упрямый фома
В одном переулке
Стояли дома.
В одном из домов
Жил упрямый Фома.

Ни дома, ни в школе,
Нигде, никому -
Не верил
Упрямый Фома
Ничему.
Приведи хоть пример своего - говнокода, вот честно сказать смотрю на твои посты где соглашаюсь где нет
Но не разу в жизни не видел ни одной пделки от тебя ни одного примера. ну как так можно голословно
и безапеляционно AAAA?
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111395
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaЭто у вас каша и писсуары в головах.
Сударь, оторви голову от зеркала и прочти ссылку, которую я тебе дал.

SeVaВ огороде бузина, а в Киеве дядька. Все "если,то" выше - это и есть бизнес-логика, которую нужно обеспечивать и делается это не в Model
и не в одной строчке очередного маразма из серии DataService
Ты просто ушлепок - логика в контроллере не маразм? Иди читай буквари, недоросль, рано тебе еще на форумах выступать.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111399
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ, Почему использование дата модели в трансляции в одностороннем порядке может выльется ?
Я сто раз уже писал - независимость от ORM , бесшовная имплементация любого хранилища.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111417
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
а ты в этом смысле, ну почему же нет, вот и придумал к нему застежку
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111441
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,
а ты в этом смысле, ну почему же нет, вот и придумал к нему застежку
Да в любых смыслах, база - это база, предметный слой - это предметый слой.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111468
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГде-то в степиМСУ, Почему использование дата модели в трансляции в одностороннем порядке может выльется ?
Я сто раз уже писал - независимость от ORM , бесшовная имплементация любого хранилища.


Детский потуги говнокодера. Муся, предлагаю этому чудо-сервису дать название "Сделайте мне красиво".
Чистый маппинг никому не нужен.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111474
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиSeVaпропущено...


В общем понятно, что ничего подобного ты не делал. Ковыряйся в говнокоде дальше и не вякай.
Сева ты как упрямый фома
В одном переулке
Стояли дома.
В одном из домов
Жил упрямый Фома.

Ни дома, ни в школе,
Нигде, никому -
Не верил
Упрямый Фома
Ничему.
Приведи хоть пример своего - говнокода, вот честно сказать смотрю на твои посты где соглашаюсь где нет
Но не разу в жизни не видел ни одной пделки от тебя ни одного примера. ну как так можно голословно
и безапеляционно AAAA?


С моими поделками даже с тебя можно было бы стакан молока поиметь, после недели дрессировки, чтобы выучил несколько незамысловатых правил, тк кода нужно минимум
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111481
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaДетский потуги говнокодера. Муся, предлагаю этому чудо-сервису дать название "Сделайте мне красиво".
Чистый маппинг никому не нужен.
Иди в зоопарк, предложи писать логику в контроллере. Звери посмеются.

SeVaС моими поделками даже с тебя можно было бы стакан молока поиметь, после недели дрессировки, чтобы выучил несколько незамысловатых правил, тк кода нужно минимум
Да нету у тебя никаких поделок и небыло, все твои посты на форуме - пук в кусты. Да и чмырят тебя все кому не лезь, что не пост - то в мемориз.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111497
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУSeVaДетский потуги говнокодера. Муся, предлагаю этому чудо-сервису дать название "Сделайте мне красиво".
Чистый маппинг никому не нужен.
Иди в зоопарк, предложи писать логику в контроллере. Звери посмеются.

SeVaС моими поделками даже с тебя можно было бы стакан молока поиметь, после недели дрессировки, чтобы выучил несколько незамысловатых правил, тк кода нужно минимум
Да нету у тебя никаких поделок и небыло, все твои посты на форуме - пук в кусты. Да и чмырят тебя все кому не лезь, что не пост - то в мемориз.

Ты еще не дорос, чтобы что-то понимать. Даже принцип единичной ответственности и то не осилил, да ты о нем даже не слышал.
Одним говоришь, что применяй такой-то и такой-то паттерн, другим приходится полчаса объяснять что они из себя представляют, а ты у нас особый случай, тк нужен минимум год, чтобы до тебя что-то дошло. Ты до простого контроллера не дорос, а если начать рассказывать и показывать, что в действительности нужно, то у тебя крышу снесет.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38111531
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaТы еще не дорос, чтобы что-то понимать. Даже принцип единичной ответственности и то не осилил, да ты о нем даже не слышал.
После того, как подсрачниками нашпиговали, ты можешь говорить что хочешь, у нас один принцип ответственности - опущенец Сева.

SeVaОдним говоришь, что применяй такой-то и такой-то паттерн, другим приходится полчаса объяснять что они из себя представляют, а ты у нас особый случай, тк нужен минимум год, чтобы до тебя что-то дошло.
Ты как был тупизднем, так им и останешься - я рассуждал только об одном паттерне, MVC (и MVP как производная). О IDataService это не паттерн, модель это не паттерн, контроллер это не паттерн. Перечитай ссылку на MS определения, хотя с твоим английским только кур ходить смешить. Даже дети поняли о чем речь, только у тебя у одно возникают вопросы. О чем это говорит?

SeVaТы до простого контроллера не дорос, а если начать рассказывать и показывать, что в действительности нужно, то у тебя крышу снесет.
У меня уже ее снесло. От твоего красноречия, являющимся ничто иным как беспросветной тупостью. Балбес ты, шурик.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38112220
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa...

А теперь нарисуй диаграмму для такого Use case:

1.Провести оплату через провайдера.
2. Если оплата прошла успешно, то сопоставить ее с неоплаченными счетами. Если нет, то показать ошибку пользователю
3. Передать данные об оплате в 1С
4. Всем полностью оплаченным Счетам изменить статус на Оплачено.
5. Если есть полностью оплаченные Счета, то :
- произвести уведомление Менеджеров по e-mail
- запустить складской процесс по резервированию на складе
- etc
- etc

Где здесь бизнес-логика и как ты ее будешь реализовывать исключительно в Мodel? Процессов несколько, возможны ветвления кто и как будет проводить их оркестровку?


Попробовал запилить согласно подходу DDD (Eric Evans - Domain Driven Design). В инфраструктурном слое, считаем что для интерфейсов реализации тупо ставят в очередь и возвращают управление сразу (а уже другие системы никак не связанные с этой занимаются рассылкой и т. п.). Иначе долго это все набивать на клаве всякие асинхронные вызовы/воркфлоу и т. п.. В приложении также портянка Sequence диаграм. Пример только чтобы показать какая логика где находится при подходе DDD.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38112226
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я совершенно не не знаком с предметной областью типа - банковская сфера, бухгалтерия и т. п.. Потому не зная, как оно семантически правильно называется на английском писал на русском.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38112239
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слои разбиты по неймспейсам, для примера не принципиально, в голове можем считать что это сборки.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38113162
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord BritishSeVa...

А теперь нарисуй диаграмму для такого Use case:

1.Провести оплату через провайдера.
2. Если оплата прошла успешно, то сопоставить ее с неоплаченными счетами. Если нет, то показать ошибку пользователю
3. Передать данные об оплате в 1С
4. Всем полностью оплаченным Счетам изменить статус на Оплачено.
5. Если есть полностью оплаченные Счета, то :
- произвести уведомление Менеджеров по e-mail
- запустить складской процесс по резервированию на складе
- etc
- etc

Где здесь бизнес-логика и как ты ее будешь реализовывать исключительно в Мodel? Процессов несколько, возможны ветвления кто и как будет проводить их оркестровку?


Попробовал запилить согласно подходу DDD (Eric Evans - Domain Driven Design). В инфраструктурном слое, считаем что для интерфейсов реализации тупо ставят в очередь и возвращают управление сразу (а уже другие системы никак не связанные с этой занимаются рассылкой и т. п.). Иначе долго это все набивать на клаве всякие асинхронные вызовы/воркфлоу и т. п.. В приложении также портянка Sequence диаграм. Пример только чтобы показать какая логика где находится при подходе DDD.


Молодец, весьма неплохо.
Код: 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.
 using (var uow = UnitOfWorkFactory.Create())
                {
                    var неОплаченныеСчета = РаботаСоСчетами.ПолучитьНеОплаченныеСчета(uow);
                
                    var оплаченныеСчета = СопоставитьНеОплаченныеСчета(
                        неОплаченныеСчета, paymentResponse.Items);

                    foreach (var счет in оплаченныеСчета)
                    {
                        var systemLike1cResponse = _systemLike1C.SyncPaymentData(new SystemLike1CSpecificParameter());
                        if (!systemLike1cResponse.IsDone)
                            throw new SystemLike1CFaultException();

                        var notifyResponse = _notificationService.Notify(new NotificationSystemSpecificParameter());
                        if (!notifyResponse.IsDone)
                            throw new NotificationServiceFaultException();

                        var stockResponse = _stockSystem.StartReservationProcess(new StockSystemSpecificParameter());
                        if (!systemLike1cResponse.IsDone)
                            throw new StockSystemFaultException();
                    }

                    РаботаСоСчетами.ПометитьСчетаКакОплаченные(оплаченныеСчета);

                    uow.SaveAllChanges();
                }



SyncPaymentData,_notificationService.Notify,_stockSystem.StartReservationProcess лучше всего выполнять в отложенном режиме и здесь весьма неплохо подходит CQRS и очереди сообщений с гарантированной доставкой. Сейчас поздно, завтра продолжим
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38114634
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

Читаю сейчас о CQRS и Event Sourcing Фаулера и Грега Янга. Пока нет полной картины где ему место. Можете рассказать об опыте применения CQRS или может быть хорошо теоретически знаете этот подход было бы интересно почитать мнения о границах применимости, о целях применения и т. п.. И где ему место в этом примере.

Пока что видится на основе прочитанного, что пытаются разделить писателей и читателей на всех уровнях, вероятно, с целью оптимизации отдельно Write БД и Read БД.
...
Рейтинг: 0 / 0
EF, Repository, UnitOfWork
    #38114661
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом примере хоть я и брякнул, что

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


На деле из задействованных в примере сервисов при таких вызовах

авторvar systemLike1cResponse = _systemLike1C.SyncPaymentData(new SystemLike1CSpecificParameter());

var notifyResponse = _notificationService.Notify(new NotificationSystemSpecificParameter());

var stockResponse = _stockSystem.StartReservationProcess(new StockSystemSpecificParameter());


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

дле сервиса оплаты (что-то вроде банк клиента?) - надо получить возможно еще какие-то данные от платежной системы и т. п.. потому одной очередью тут не отделаться.

для сервиса синхронизации с 1С или ей подобной - я даже не знаю что это за процесс, но уверен он долгоиграющий и данные от 1С тоже нужны

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

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

Опять же цель примера была посмотреть какая логика каком слою относится. Но теперь итересно уже другое - вот те моменты что описаны выше.
...
Рейтинг: 0 / 0
25 сообщений из 164, страница 6 из 7
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF, Repository, UnitOfWork
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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