Тёмный

Unit of Work: от простого к сложному 

Sergei Calabonga
Подписаться 6 тыс.
Просмотров 8 тыс.
50% 1

Ключевые понятия:
#паттерны, #repository, #unitOfWork, #UML, #программирование, #calabonga, #OOP
Вопросы для видео:
* Надо ли реализовывать паттерны «Unit of Work» и «Repository», если вы уже используете EntityFramework Core (или другой ORM)?
* Почему про «Unit of Work» нельзя говорить отдельно от «Repository»?
Слайды:
* Что такое Unit of Work?
* Причем тут Repository?
* Зачем нужен Unit of Work?
* UML диаграмма паттерна Repository?
* UML диаграмма паттерна Unit of Work?
* Как работает Unit of Work?
* Когда использовать Unit of Work?
Ссылки:
www.martinfowler.com/eaaCatal...
www.martinfowler.com/eaaCatal...
www.calabonga.net/blog/post/e...
docs.microsoft.com/en-us/aspn...
github.com/Calabonga/UnitOfWork
Благодарности и помощь каналу принимаются:
www.calabonga.net/site/thanks

Опубликовано:

 

11 фев 2022

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 40   
@andrewbirs2046
@andrewbirs2046 Год назад
Сергей, как всегда отлично!
@SergeiCalabonga
@SergeiCalabonga Год назад
Спасибо
@Eldiablo-bp8zr
@Eldiablo-bp8zr 2 года назад
Спасибо большое за видос
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Спасибо много! Лучше деньгами!
@burningdaylight9171
@burningdaylight9171 2 года назад
шааас посмотрим. спасибо за труд.
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Спасибо - это много! А вот спонсорская помощь помогла оплатить подписку Adobe Premiere 😄
@alekseev74
@alekseev74 2 года назад
По своему опыту: нет серебряной пули. Использую сам в крупных проектах или кто до меня делал архитектуру и надо поддерживать данный код. В мини проектах не вижу смысла строить ещё один слой в приложении.
@SergeiCalabonga
@SergeiCalabonga 2 года назад
👍
@semen083
@semen083 2 года назад
15:14 какими принципами Вы руководствуетесь, когда присваиваете номер версии пакета? У Вас была предыдущая версия 2.1.0, Вы модифицировали ее каким-либо образом и как Вы определили, что она заслуживает версии 3.0.0, а не например 2.2.0?
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Есть чёткие правила, описаны на сайте semver.org. их и использовал. В данном случае , вопрос совместимости. Потому что только net6 теперь поддерживает в 3.0.0
@BigPandaBigRules
@BigPandaBigRules 2 года назад
Здравствуйте! А можно такое же видео про Mediator? Очень интересно и полезно слушать про библиотеки и паттерны, которые Вы используете в своих проектах.
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Мне кажется много видео уже есть про Mediator. Хотя, смотря что вы имеете в виду: паттерн или nuget-пакет?
@BigPandaBigRules
@BigPandaBigRules 2 года назад
@@SergeiCalabonga Сам паттерн
@SergeiCalabonga
@SergeiCalabonga 2 года назад
@@BigPandaBigRules все паттерны описаны уже вдоль и поперёк. Не думаю, что найду время на это. Да там и показывать нечего.
@vitalii1279
@vitalii1279 Год назад
дякую
@SergeiCalabonga
@SergeiCalabonga Год назад
👍
@andreypukhkalo7831
@andreypukhkalo7831 2 года назад
Есть ли у вас опыт работы ef core для mongodb, и проектирования repository и uow. Или возможно вы встречали реализации? Спасибо
@SergeiCalabonga
@SergeiCalabonga 2 года назад
С mongoDb работал мало, и, на сколько я помню, никаких дополнительных инструментов не использовал. Да и зачем, ведь EntityFramework упрощает работу с реляциями, а в mongoDb их нет
@slavastsefanovich5161
@slavastsefanovich5161 2 года назад
Здравствуйте, почему в реализации класса UnitOfWork вызывается Dispose() на объекте DbContext, если объект контекста инжектится через конструктор?
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Хороший вопрос! Ответ простой, потому что можно использовать не только в Dependency Injection можно использовать сборку.
@TOXA_PYATNITSKY
@TOXA_PYATNITSKY 2 года назад
Интересно, но думаю о нем знают все , кто хотя бы немного занимался разработкой коммерческого продукта. Сергей, вот вы же архитектор, насколько мне известно, как вы решаете проблему консистентности данных в распределенных системах ? Саги самый простой способ, а есть что-то необычное или редко используемое, было бы интересно про это послушать)
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Хороший вопрос! Сага, действительно не единственный способ, который подпадает под паттерн. Но есть и "самописки", которые я видел. Они, так или иначе, костыльная реализация саги. А ещё есть возможность реализовать на более низком уровни, то есть на базе инструментов. Посмотрите на FoundationDB. Распределенные транзакции реализованы в ней "из коробки". В любом случаи, решение нужно искать для каждого проекта индивидуально. Сага не панацея. 😁
@denis_penis
@denis_penis 2 года назад
в общем и целом :D :D :D спасибо "svetosransk" :D
@SergeiCalabonga
@SergeiCalabonga 2 года назад
😉
@MrAndrucci
@MrAndrucci 2 года назад
Всё классно, только покрупнее бы. Все хорошее происходит на 1/4 экрана - ресурсы ютуба расходуются неэкономно :P
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Буду делать ещё крупнее, спасибо
@misters6451
@misters6451 2 года назад
Спасибо за видео, только не очень понимаю зачем нужен этот фасад над EF... Абстракции от ORM нет, EF Всё равно "протекает" наружу, а так все эти методы есть в EF из коробки.
@SergeiCalabonga
@SergeiCalabonga 2 года назад
Спасибо за комментарий Фасада нет в моей сборке, но реализовать его не составит особого труда и не займет много времени. А то чего не хватило именно мне в EntityFrameworkCore, так это я как раз описал на видео: pagination, проверка прав доступа и и т.д.
@kandreyk9159
@kandreyk9159 Год назад
@@SergeiCalabonga мне вот тоже не хватает опыта понять - а почему нельзя в наследнике DbContext реализовать недостающее, зачем именно отдельный слой над EF ?
@SergeiCalabonga
@SergeiCalabonga Год назад
@@kandreyk9159 потому что можно в unit of Work притащить не только EntityFramework, но и любой другой ORM, или даже txt-reader-writer.
@kandreyk9159
@kandreyk9159 Год назад
@@SergeiCalabonga а, ясно, но случае, если кроме EF ничего не планируется, то абстрагироваться от него нет смысла? А свой провайдер для EF сложно реализовать?
@SergeiCalabonga
@SergeiCalabonga Год назад
@@kandreyk9159 когда у вас возникнут проблемы типа "объект управляется в другом контексте ", тогда вы вспомните про unit of Work:)
@GDrakula
@GDrakula Год назад
Не для начинающих))) Напоминает ответ на экзамене
@SergeiCalabonga
@SergeiCalabonga Год назад
С чего-то надо начинать... 🤭
@GDrakula
@GDrakula Год назад
@@SergeiCalabonga ну это для продвинутых и даже очень продвинутых, которые уже давно работают с UnitOfWork
@SergeiCalabonga
@SergeiCalabonga Год назад
@@GDrakula время начать работать с UnitOfWork
@GDrakula
@GDrakula Год назад
Смешно. Зажал исходники Console приложения. Без исходников смысла смотреть нет. Видео без исходников бесполезное, так не с чем работать и нечего разбирать, получается беготня урывками по коду отображенному на экране, здесь рыбу заворачивали, а здесь пиво пролили. Или рассказывать все или вообще в этом нет никакого смысла. Прошу прощения если как-то обидел.
@SergeiCalabonga
@SergeiCalabonga Год назад
Не понял, простите.
Далее
Как натянуть DDD на систему?
0:55
Просмотров 2,6 тыс.
The Unit of Work Design Pattern Explained
12:37
Просмотров 21 тыс.
Doctrine ORM: Entity, Identity Map, Unit Of Work
47:29
Просмотров 3,4 тыс.
Unit of Work in ASP.NET Core
14:57
Просмотров 18 тыс.
Nimble Framework v6.1
59:23
Просмотров 4,3 тыс.
DB + EF + Repository + UnitOfWork
2:01:13
Просмотров 1,2 тыс.