|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaНу, хоты бы что-то внятное. Тебе об этом "внятном" уже битый день тылдычат. SeVaА теперь нарисуй диаграмму... Ага, только сейчас возьму разбег. SeVa1.Провести оплату через провайдера. 2. Если оплата прошла успешно, то сопоставить ее с неоплаченными счетами. Если нет, то показать ошибку пользователю 3. Передать данные об оплате в 1С 4. Всем полностью оплаченным Счетам изменить статус на Оплачено. 5. Если есть полностью оплаченные Счета, то : - произвести уведомление Менеджеров по e-mail - запустить складской процесс по резервированию на складе - etc - etc 1. Код: c# 1. 2.
2. Код: c# 1.
3. Это интеграция, решается асинхронно и в другом контексте (Windows сервис, SSIS и т.д.). Задача не для PaymentModel. 4. Задача решается в другом контексте (Windows сервис, SSIS и т.д.). Задача не для PaymentModel. 5. Задача решается в другом контексте (Windows сервис, SSIS и т.д.). Задача не для PaymentModel. SeVaГде здесь бизнес-логика и как ты ее будешь реализовывать исключительно в Мodel? Процессов несколько, возможны ветвления кто и как будет проводить их оркестровку? Правильно, мухи отдельно, котлеты отдельно. Мухи - в модели, оркестрарий - в отдельном контексте. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 15:06 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
1. Никаких провайдерова в Payment быть не должно. Пользуясь твоей терминологией: мухи и котлеты отдельно 2. Какая-то хрень 3,4,5 и тд решаются не в Model В итоге никакой логики кроме persistens, мелких вычислений, элементарных проверок в ней быть не должно. В твоих русскоязычных вики пачкают только такие как ты, а ты это потом эут шняго развозишь по форуму ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 16:23 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVa, Допустим вся эта логика в контроллере. Получается довольно длинная портянка кода, нужно как то разносить это по функциям. к примеру: Код: c# 1. 2. 3.
Все эти методы тоже будут в контроллере? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 16:38 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVa1. Никаких провайдерова в Payment быть не должно. Пользуясь твоей терминологией: мухи и котлеты отдельно Что такое у тебя Payment? Дата класс? Ни в дата классе, ни в DTO никаких провайдеров не должно быть. В PaymentModel (если логики много - можно и через некий new PaymentService(PaymentModel)) - должен быть провайдер, о котором ты писал выше. В данном случае в PaymentModel - бизнес логика, если у нас некий PaymentService - то логика размазывается и на него. Но это для особо замороченных случаев. Тебе рано про них еще знать. SeVa2. Какая-то хрень ...у тебя в голове. SeVa3,4,5 и тд решаются не в Model А ч о чем. SeVaВ итоге никакой логики кроме persistens, мелких вычислений, элементарных проверок в ней быть не должно. В твоих русскоязычных вики пачкают только такие как ты, а ты это потом эут шняго развозишь по форуму Интеграция между системами - это не логика модели. Периодическая проверка в неком сервисе и апдейт поля по какому-то признаку и рассылка - это не логика модели. Наличие признака и проверка его - это логика. У тебя каша в голове. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 17:21 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУ, Модель это просто передатчик (транспортная абстакция) если смотреть в дуплексном виде, между вьюхой и контроллером логику там зашивать я не вижу смысла, ну окромя валидации или трансляции подписки на изменение модели в двух словах это выглядит примерно так. Код: c# 1. 2. 3. 4. 5.
тут имеем все для проводки, результаты вкидываем обратно, вся логика на стороне. логика тут вообще по стороне, ее вообще может не быть если контроллер транслирует в одну сторону в плане модели Код: c# 1. 2. 3. 4.
[/SRC] ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 17:44 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
Где-то в степиМСУ, Модель это просто передатчик (транспортная абстакция) если смотреть в дуплексном виде, между вьюхой и контроллером Если называть дата-модель (классы ORM) - моделью (в терминах MVC), то да. Но использовать дата-модель в качестве модели в MVC - моветон. Выльется боком. Итого, модель не просто передатчик, а именно класс с бизнес-логикой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 17:55 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУ, Почему использование дата модели в трансляции в одностороннем порядке может выльется ? дата это простая абстракция, я ведь могу подкинуть сахарку, и будет как в первом классе: Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 18:32 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУ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); В общем понятно, что ничего подобного ты не делал. Ковыряйся в говнокоде дальше и не вякай. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 18:37 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
Где-то в степи, имхо я не согласен ни с тобой ни с севой, с моего имхо модель это "транспортный протокол" для функционирования системы представления, можно всунуть в нее бизнеслогику, можно и в контроллер ( это все стерпит) но все же если какие то действия нужно предпринимать на основе данных модели с клиента, все это надо выносить отдельно. что бы можно было, менять эти действия не трогая модель и контроллер. Если бл в контроллере предполагает это, почему бы нет, если в модели опять почему бы нет. Исходить нужно из изоляции -> тестирования и понятности кода для сопровождения. зы если рассуждать по стеку то стек всегда поднимется в контроллер, отсюда можно пошутить ( прагматично), что бл всегда будет в сонтроллере ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 18:47 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVa автор PaymentSystem<Payment>>.ActivatePayment(item); В общем понятно, что ничего подобного ты не делал. Ковыряйся в говнокоде дальше и не вякай. Сева ты как упрямый фома В одном переулке Стояли дома. В одном из домов Жил упрямый Фома. Ни дома, ни в школе, Нигде, никому - Не верил Упрямый Фома Ничему. Приведи хоть пример своего - говнокода, вот честно сказать смотрю на твои посты где соглашаюсь где нет Но не разу в жизни не видел ни одной пделки от тебя ни одного примера. ну как так можно голословно и безапеляционно AAAA? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 18:57 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaЭто у вас каша и писсуары в головах. Сударь, оторви голову от зеркала и прочти ссылку, которую я тебе дал. SeVaВ огороде бузина, а в Киеве дядька. Все "если,то" выше - это и есть бизнес-логика, которую нужно обеспечивать и делается это не в Model и не в одной строчке очередного маразма из серии DataService Ты просто ушлепок - логика в контроллере не маразм? Иди читай буквари, недоросль, рано тебе еще на форумах выступать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 20:12 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
Где-то в степиМСУ, Почему использование дата модели в трансляции в одностороннем порядке может выльется ? Я сто раз уже писал - независимость от ORM , бесшовная имплементация любого хранилища. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 20:14 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУ, а ты в этом смысле, ну почему же нет, вот и придумал к нему застежку ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 20:28 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
Где-то в степиМСУ, а ты в этом смысле, ну почему же нет, вот и придумал к нему застежку Да в любых смыслах, база - это база, предметный слой - это предметый слой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 20:53 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУГде-то в степиМСУ, Почему использование дата модели в трансляции в одностороннем порядке может выльется ? Я сто раз уже писал - независимость от ORM , бесшовная имплементация любого хранилища. Детский потуги говнокодера. Муся, предлагаю этому чудо-сервису дать название "Сделайте мне красиво". Чистый маппинг никому не нужен. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 21:28 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
Где-то в степиSeVaпропущено... В общем понятно, что ничего подобного ты не делал. Ковыряйся в говнокоде дальше и не вякай. Сева ты как упрямый фома В одном переулке Стояли дома. В одном из домов Жил упрямый Фома. Ни дома, ни в школе, Нигде, никому - Не верил Упрямый Фома Ничему. Приведи хоть пример своего - говнокода, вот честно сказать смотрю на твои посты где соглашаюсь где нет Но не разу в жизни не видел ни одной пделки от тебя ни одного примера. ну как так можно голословно и безапеляционно AAAA? С моими поделками даже с тебя можно было бы стакан молока поиметь, после недели дрессировки, чтобы выучил несколько незамысловатых правил, тк кода нужно минимум ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 21:34 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaДетский потуги говнокодера. Муся, предлагаю этому чудо-сервису дать название "Сделайте мне красиво". Чистый маппинг никому не нужен. Иди в зоопарк, предложи писать логику в контроллере. Звери посмеются. SeVaС моими поделками даже с тебя можно было бы стакан молока поиметь, после недели дрессировки, чтобы выучил несколько незамысловатых правил, тк кода нужно минимум Да нету у тебя никаких поделок и небыло, все твои посты на форуме - пук в кусты. Да и чмырят тебя все кому не лезь, что не пост - то в мемориз. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 21:43 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУSeVaДетский потуги говнокодера. Муся, предлагаю этому чудо-сервису дать название "Сделайте мне красиво". Чистый маппинг никому не нужен. Иди в зоопарк, предложи писать логику в контроллере. Звери посмеются. SeVaС моими поделками даже с тебя можно было бы стакан молока поиметь, после недели дрессировки, чтобы выучил несколько незамысловатых правил, тк кода нужно минимум Да нету у тебя никаких поделок и небыло, все твои посты на форуме - пук в кусты. Да и чмырят тебя все кому не лезь, что не пост - то в мемориз. Ты еще не дорос, чтобы что-то понимать. Даже принцип единичной ответственности и то не осилил, да ты о нем даже не слышал. Одним говоришь, что применяй такой-то и такой-то паттерн, другим приходится полчаса объяснять что они из себя представляют, а ты у нас особый случай, тк нужен минимум год, чтобы до тебя что-то дошло. Ты до простого контроллера не дорос, а если начать рассказывать и показывать, что в действительности нужно, то у тебя крышу снесет. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 22:11 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaТы еще не дорос, чтобы что-то понимать. Даже принцип единичной ответственности и то не осилил, да ты о нем даже не слышал. После того, как подсрачниками нашпиговали, ты можешь говорить что хочешь, у нас один принцип ответственности - опущенец Сева. SeVaОдним говоришь, что применяй такой-то и такой-то паттерн, другим приходится полчаса объяснять что они из себя представляют, а ты у нас особый случай, тк нужен минимум год, чтобы до тебя что-то дошло. Ты как был тупизднем, так им и останешься - я рассуждал только об одном паттерне, MVC (и MVP как производная). О IDataService это не паттерн, модель это не паттерн, контроллер это не паттерн. Перечитай ссылку на MS определения, хотя с твоим английским только кур ходить смешить. Даже дети поняли о чем речь, только у тебя у одно возникают вопросы. О чем это говорит? SeVaТы до простого контроллера не дорос, а если начать рассказывать и показывать, что в действительности нужно, то у тебя крышу снесет. У меня уже ее снесло. От твоего красноречия, являющимся ничто иным как беспросветной тупостью. Балбес ты, шурик. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 23:12 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVa... А теперь нарисуй диаграмму для такого Use case: 1.Провести оплату через провайдера. 2. Если оплата прошла успешно, то сопоставить ее с неоплаченными счетами. Если нет, то показать ошибку пользователю 3. Передать данные об оплате в 1С 4. Всем полностью оплаченным Счетам изменить статус на Оплачено. 5. Если есть полностью оплаченные Счета, то : - произвести уведомление Менеджеров по e-mail - запустить складской процесс по резервированию на складе - etc - etc Где здесь бизнес-логика и как ты ее будешь реализовывать исключительно в Мodel? Процессов несколько, возможны ветвления кто и как будет проводить их оркестровку? Попробовал запилить согласно подходу DDD (Eric Evans - Domain Driven Design). В инфраструктурном слое, считаем что для интерфейсов реализации тупо ставят в очередь и возвращают управление сразу (а уже другие системы никак не связанные с этой занимаются рассылкой и т. п.). Иначе долго это все набивать на клаве всякие асинхронные вызовы/воркфлоу и т. п.. В приложении также портянка Sequence диаграм. Пример только чтобы показать какая логика где находится при подходе DDD. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 14:27 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
Я совершенно не не знаком с предметной областью типа - банковская сфера, бухгалтерия и т. п.. Потому не зная, как оно семантически правильно называется на английском писал на русском. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 14:29 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
Слои разбиты по неймспейсам, для примера не принципиально, в голове можем считать что это сборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2013, 14:36 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
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.
SyncPaymentData,_notificationService.Notify,_stockSystem.StartReservationProcess лучше всего выполнять в отложенном режиме и здесь весьма неплохо подходит CQRS и очереди сообщений с гарантированной доставкой. Сейчас поздно, завтра продолжим ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2013, 00:51 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVa, Читаю сейчас о CQRS и Event Sourcing Фаулера и Грега Янга. Пока нет полной картины где ему место. Можете рассказать об опыте применения CQRS или может быть хорошо теоретически знаете этот подход было бы интересно почитать мнения о границах применимости, о целях применения и т. п.. И где ему место в этом примере. Пока что видится на основе прочитанного, что пытаются разделить писателей и читателей на всех уровнях, вероятно, с целью оптимизации отдельно Write БД и Read БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2013, 22:52 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
В этом примере хоть я и брякнул, что авторВ инфраструктурном слое, считаем что для интерфейсов реализации тупо ставят в очередь и возвращают управление сразу (а уже другие системы никак не связанные с этой занимаются рассылкой и т. п.). На деле из задействованных в примере сервисов при таких вызовах авторvar systemLike1cResponse = _systemLike1C.SyncPaymentData(new SystemLike1CSpecificParameter()); var notifyResponse = _notificationService.Notify(new NotificationSystemSpecificParameter()); var stockResponse = _stockSystem.StartReservationProcess(new StockSystemSpecificParameter()); это прокатит только для сервиса уведомлений/сообщений менеджеров по почте. только в этом случае достаточно получить статус успешности постановки в очередь. тут действительно отдал в очередь и пусть другая система рассылки выбирает и отправляет до посинения не столь критично. хотя от требований бизнеса зависит. для остальных сервисов, насколько я понимаю мало получить статус успеха постановки в очередь. дле сервиса оплаты (что-то вроде банк клиента?) - надо получить возможно еще какие-то данные от платежной системы и т. п.. потому одной очередью тут не отделаться. для сервиса синхронизации с 1С или ей подобной - я даже не знаю что это за процесс, но уверен он долгоиграющий и данные от 1С тоже нужны про резервирование на складе - тоже самое я темный лес в этой специфике, но уверен от складской системы тоже какие-то данные получать нужно. и процесс долгоиграющий. Потому мне не совсем понятно где здесь возникнет CQRS, например. Было бы очень хорошо если бы в ветку набежали, кто с этим сталкивался и завязалась дискуссия . Опять же цель примера была посмотреть какая логика каком слою относится. Но теперь итересно уже другое - вот те моменты что описаны выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2013, 23:36 |
|
|
start [/forum/topic.php?fid=17&msg=38113162&tid=1350110]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 302ms |
total: | 566ms |
0 / 0 |