|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУ, в EF контекст это UnitofWork. Но тут вопрос даже не конкретно к ЕФ, а теоретический) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 12:11 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVa Nhibernate LazyLoading в многослойном приложении Вот одна из типичных проблем при использовании всех ORM. Начинают лепить городухи для ленивой загрузки, а они рассчитаны только под чистый CRUD Если в процессе забивания гвоздя бьёшь молотком по пальцу, в этом молоток виноват, да? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 12:34 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
netivanМСУ, в EF контекст это UnitofWork Это не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 12:42 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУ, ну как же не так, когда так) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 14:56 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SolYUtorLord BritishДавайте все же вернемся к EF, UOW, REPO и потроллим друг-друга на тему надо/не надо. К сожалению, в тему заглянули только штатные тролли, поэтому развести дискуссию по существу будет напряжённо. :) Могу лишь изложить поподробнее своё мнение. Сам прошёл путь Stored Procedure -> NHibernate -> Repository over Nhibernate -> NHibernate -> NoSQL (в процессе). В общем, в процессе работы по принципу Repository over Nhibernate пришёл к пониманию, что мне просто не хватает возможностей, которые есть в NH, и я потихоньку привожу Repository к ISesson. В итоге просто выкинул ненужным мне слой. И чуть позже наткнулся на хорошие блоги по этой теме: раз , два , и (особенно для любителей SOLID'а) три . Сам я тоже любитель SOLID. Но кроме него, надо держать в голове и свой разум. Ибо видел совершенно "солидный", но абсолютно неподдерживаемый код. И вдогонку. Вся эта суета вокруг слоёв вообще, и репозитория в частности задумывалась ради одной цели - сделать код более поддерживаемым за счёт повышения его понятности. И еще повторного использования кода. На самом деле, обычно гораздо проще для поддерживаемсяости использовать не горизонтальное деление - слои, а вертикальное - разделы. При этом используя как можно меньше псевдоабстракций. С повторным использованием, всё еще проще - 90% кода повторно не используется. На практике это выглядит так: прямо в коде MVC-контроллера берём сессию, строим запрос, бросаме результат во ViewModel. Просто, понятно, быстро, тестируемо. Profit. В три говорится только о необходимости перехода на чистый sql в долгосрочной ретроспективе. С принципам SOLID это можно сделать безболезненно, если им не следовать придется все перелопачивать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 23:25 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SolYUtorSeVa Nhibernate LazyLoading в многослойном приложении Вот одна из типичных проблем при использовании всех ORM. Начинают лепить городухи для ленивой загрузки, а они рассчитаны только под чистый CRUD Если в процессе забивания гвоздя бьёшь молотком по пальцу, в этом молоток виноват, да? Бывают молотки, с которыми можно бить только себе по пальцам. Их нужно выбрасывать и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 23:27 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУSeVaЯ тебе миллион раз говорил, чтобы ты подтирался своей вики сам. Она только для этого пригодна. Я не собираюсь читать это и вникать в твою дурь. Дурень, тебе вникать просто нечем, это проблема не википедии, это проблема твой тупости. Обосрался ты сегодня знатно, очередной раз опускаем тебя на форуме. Какого оно, быть унылой кухаркой, поведай нем? SeVaЕсли не в контроллере, то где? В космосе, муфлон, она должна быть реализована? Во view и моdel ей не место Дятел тупорылый, в моделе и только в моделе. Не в контроллере, не во вью, не во вьюмоделе, не в репозитории. А в моделе. Заруби себе на носу, двоешник. Начинающий программист не делает различий между доменной логикой или бизнес-правилами(а'la: null, not null) и логикой приложения(бизнес логикой: отправить сообщение о поступлении оплаты, интеграция с внешними системами и тд). Это две большие разницы. Или ты предлагаешь интеграцию с платежной системой засунуть в модель Payment? Один уродец гадит, а второе дитятко эту каку в рот тащит. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 23:40 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaБывают молотки, с которыми можно бить только себе по пальцам. Их нужно выбрасывать и все. Один из таких молотков ты, бестолочь. SeVaНачинающий программист не делает различий между доменной логикой или бизнес-правилами(а'la: null, not null) и логикой приложения(бизнес логикой: отправить сообщение о поступлении оплаты, интеграция с внешними системами и тд). Бездарь типа тебя не понимает, что предметная область в контроллере не пишется. Контроллер - тонкий Glue Layer, которому до бизнес-логики, как тебе до объектно-ориентированного программирования. SeVaЭто две большие разницы. Или ты предлагаешь интеграцию с платежной системой засунуть в модель Payment? Один уродец гадит, а второе дитятко эту каку в рот тащит. Интеграция с платежной системой реализуется в предметной области - совокупность доменных объектов, один из которых - Payment . Шагом марш читать букварь, недоросль. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2013, 23:49 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУSeVaБывают молотки, с которыми можно бить только себе по пальцам. Их нужно выбрасывать и все. Один из таких молотков ты, бестолочь. SeVaНачинающий программист не делает различий между доменной логикой или бизнес-правилами(а'la: null, not null) и логикой приложения(бизнес логикой: отправить сообщение о поступлении оплаты, интеграция с внешними системами и тд). Бездарь типа тебя не понимает, что предметная область в контроллере не пишется. Контроллер - тонкий Glue Layer, которому до бизнес-логики, как тебе до объектно-ориентированного программирования. SeVaЭто две большие разницы. Или ты предлагаешь интеграцию с платежной системой засунуть в модель Payment? Один уродец гадит, а второе дитятко эту каку в рот тащит. Интеграция с платежной системой реализуется в предметной области - совокупность доменных объектов, один из которых - Payment . Шагом марш читать букварь, недоросль. Ну-ну, давай-ка подробней, умник. Есть модель Payment и большая куча поставщиков для проведения оплат. Что будут делать в этом случае детки, которые кроме вики ничего не видели? Расскажи и повесели на ночь ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 00:04 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaМСУпропущено... Один из таких молотков ты, бестолочь. пропущено... Бездарь типа тебя не понимает, что предметная область в контроллере не пишется. Контроллер - тонкий Glue Layer, которому до бизнес-логики, как тебе до объектно-ориентированного программирования. пропущено... Интеграция с платежной системой реализуется в предметной области - совокупность доменных объектов, один из которых - Payment . Шагом марш читать букварь, недоросль. Ну-ну, давай-ка подробней, умник. Есть модель Payment и большая куча поставщиков для проведения оплат. Что будут делать в этом случае детки, которые кроме вики ничего не видели? Расскажи и повесели на ночь Тупиздень, когда ты научишься думать. Создается новый конструктор, на входе которого будет подаваться Supplier, относительно которого будет поднотавливаться проводка. Причем тут контроллер? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 00:15 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУSeVaпропущено... Ну-ну, давай-ка подробней, умник. Есть модель Payment и большая куча поставщиков для проведения оплат. Что будут делать в этом случае детки, которые кроме вики ничего не видели? Расскажи и повесели на ночь Тупиздень, когда ты научишься думать. Создается новый конструктор, на входе которого будет подаваться Supplier, относительно которого будет поднотавливаться проводка. Причем тут контроллер? Ну, муфел, теперь осталось сделать последние потуги и выяснить, что никакой логики взаимодействия с платежными системами в Payment быть не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 00:46 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
Вернее, может, но только у мудаков, на которых ты ссылаешься ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 00:47 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaМСУпропущено... Тупиздень, когда ты научишься думать. Создается новый конструктор, на входе которого будет подаваться Supplier, относительно которого будет поднотавливаться проводка. Причем тут контроллер? Ну, муфел, теперь осталось сделать последние потуги и выяснить, что никакой логики взаимодействия с платежными системами в Payment быть не может. Кухарка, ты сказала, что Payment это модель. Не путай божий дар с яичницей - дай угадаю, твоё скудное воображение «моделью» называет «дата-класс», предоставляющий абстракцию от БД? А теперь пшел вон читать букварь, в MVC модель - класс с бизнес логикой, никакого отношения к дата классу (EF, NH, L2S) не имеет. Опять двойка, садись. Твоя детская задача даже второгодниками, а у тебя трудности. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 00:54 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaВернее, может, но только у мудаков, на которых ты ссылаешься Чудила, ты не ответил. Ну-ка, заряди еще раз напалмом - ты весь расчет хочешь запихнуть в контроллер? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 00:56 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУSeVaпропущено... Ну, муфел, теперь осталось сделать последние потуги и выяснить, что никакой логики взаимодействия с платежными системами в Payment быть не может. Кухарка, ты сказала, что Payment это модель. Не путай божий дар с яичницей - дай угадаю, твоё скудное воображение «моделью» называет «дата-класс», предоставляющий абстракцию от БД? А теперь пшел вон читать букварь, в MVC модель - класс с бизнес логикой, никакого отношения к дата классу (EF, NH, L2S) не имеет. Опять двойка, садись. Твоя детская задача даже второгодниками, а у тебя трудности. Опять путаница в показаниях, чмошник. То у тебя Payment, то Provider, а теперь бредни с EF. Что такое модель можешь писать статейки в русской вики , там твои бредни не будут выделяться на общем фоне. И так внятно объясни, что где и как. Приплюсуй сюда еще отправку сообщения после оплаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 01:25 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaОпять путаница в показаниях, чмошник. То у тебя Payment, то Provider, а теперь бредни с EF. Что такое модель можешь писать статейки в русской вики , там твои бредни не будут выделяться на общем фоне. И так внятно объясни, что где и как. Приплюсуй сюда еще отправку сообщения после оплаты. Чтобы что-то внятно объяснить унылой обезьяне, она должна обладать хоть малым представлением о уровене объектов предметной области. Учу неуча, классический MVP подход: IDataProvider нужен для извлечения информации из БД (PaymentDb, PaymentDetailDb, PaymentTypeDb) и намапливания на DTO болванки (PaymentDTO) Модель (Payment, а лучше назвать PaymentModel, чтобы не было путаницы с data-классами) взаимодействует с PaymentDTO и ISupplier и рассчитывает логику. new PaymentModel(ISupplier, PaymentDTO) Контроллер тупо обращается к IDataProvider, инстанциирует PaymentModel и снимает расчет. Отправку данных по счетам или что там у тебя, реализуется точно так же в PaymentModel. Сам контроллер ни в коем случае не реализует бизнес логику, дурень. P.S. Лишь в самых простых случаях некоторые идут на экономию (что-бы не плодить DTO) и пропихивают через контроллер в представление - сам data-класс (PaymentDb и иже). Впринципе, приемлемо для случаев, где особо никакой логики не нужно, кроме как вытащить данные из БД и отобразить их во вью. RTFM: Model-View-Controller Ты мне на вопрос ответишь? 13769830 Хочу еще поглумиться над идиотом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 09:55 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУSeVaОпять путаница в показаниях, чмошник. То у тебя Payment, то Provider, а теперь бредни с EF. Что такое модель можешь писать статейки в русской вики , там твои бредни не будут выделяться на общем фоне. И так внятно объясни, что где и как. Приплюсуй сюда еще отправку сообщения после оплаты. Чтобы что-то внятно объяснить унылой обезьяне, она должна обладать хоть малым представлением о уровене объектов предметной области. Учу неуча, классический MVP подход: IDataProvider нужен для извлечения информации из БД (PaymentDb, PaymentDetailDb, PaymentTypeDb) и намапливания на DTO болванки (PaymentDTO) Модель (Payment, а лучше назвать PaymentModel, чтобы не было путаницы с data-классами) взаимодействует с PaymentDTO и ISupplier и рассчитывает логику. new PaymentModel(ISupplier, PaymentDTO) Контроллер тупо обращается к IDataProvider, инстанциирует PaymentModel и снимает расчет. Отправку данных по счетам или что там у тебя, реализуется точно так же в PaymentModel. Сам контроллер ни в коем случае не реализует бизнес логику, дурень. P.S. Лишь в самых простых случаях некоторые идут на экономию (что-бы не плодить DTO) и пропихивают через контроллер в представление - сам data-класс (PaymentDb и иже). Впринципе, приемлемо для случаев, где особо никакой логики не нужно, кроме как вытащить данные из БД и отобразить их во вью. RTFM: Model-View-Controller Ты мне на вопрос ответишь? 13769830 Хочу еще поглумиться над идиотом. Тупая обезьянка, где ты в MVP нашел контроллер? То, что ты описываешь, никакого отношения к этому паттерну не имеет. И не скачи с ветки на ветку, ты утверждал, что вся бизнес-логика в МVС должна быть в Моdel. Опиши как этот бред будет выглядеть в этом случае. Забудь про свои DTO, EF и прочие мелочи, а то и так полный винегрет ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 12:10 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVa Или ты предлагаешь интеграцию с платежной системой засунуть в модель Payment? Не совсем понятно, что такое модель Payment, но интеграцию с платежной системой я инкапсулирую в некий класс. Оплата ведь может происходить в разных контроллерах, не дублировать же логику. У вас модель это просто структура + дал, как я понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 12:23 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaТупая обезьянка, где ты в MVP нашел контроллер? То, что ты описываешь, никакого отношения к этому паттерну не имеет. Глупая кухарка, а где я что-то сказал про "контроллер в MVP"? У тебя, как всега, галлюцинации, купи очки и еще раз прочитай: речь о IDataService - это чисто MVP-шная фишка. SeVaИ не скачи с ветки на ветку, ты утверждал, что вся бизнес-логика в МVС должна быть в Моdel. Опиши как этот бред будет выглядеть в этом случае. Забудь про свои DTO, EF и прочие мелочи, а то и так полный винегрет Дятел, я тебе обрисовал 100% реализации задачи, как это делается, что тебе еще непонятно? Винегрет у тебя в голове, которая в контроллеры "бизнес-логику" засовывает. Иди учи матчасть, бестолочь. Тебе уже и Парамон вдалбливает в твой неокрепший моск, что логика с платежной системой инкапсулируется в некий класс - я тебя битый час уже вменяю о PaymentModel. Логика только в нем, а никак не в контроллере. P.S. Сева, ты опущенец. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 12:40 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
ПарамонSeVa Оплата ведь может происходить в разных контроллерах, не дублировать же логику. Он этого не понимает. Более того, он не знает, что в том же ASP.NET MVC специфичный контроллер (только для этой платформы) и если потребуется логику перенести на тот же толстый клиент WPF, WinForms, Mobile, ... то контроллер уйдет в топку - нужен будет новый контроллер. В его случае он будет дублировать бизнес-логику. P.S. Очередный Севины бредни идиота... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 12:44 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVa, ты ссылку читал? Что не ясно из схемы? Контроллер через сервис (у меня это некий IDataService) взаимодействует с моделью (бизнес логика) и представлением, представление тупо берет из модели посчитанные данные и отрисовывает. Сходи в садик, там тебе дети разжуют. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 12:50 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
МСУSeVa, ты ссылку читал? Что не ясно из схемы? Контроллер через сервис (у меня это некий IDataService) взаимодействует с моделью (бизнес логика) и представлением, представление тупо берет из модели посчитанные данные и отрисовывает. Сходи в садик, там тебе дети разжуют. Ну, хоты бы что-то внятное. А теперь нарисуй диаграмму для такого Use case: 1.Провести оплату через провайдера. 2. Если оплата прошла успешно, то сопоставить ее с неоплаченными счетами. Если нет, то показать ошибку пользователю 3. Передать данные об оплате в 1С 4. Всем полностью оплаченным Счетам изменить статус на Оплачено. 5. Если есть полностью оплаченные Счета, то : - произвести уведомление Менеджеров по e-mail - запустить складской процесс по резервированию на складе - etc - etc Где здесь бизнес-логика и как ты ее будешь реализовывать исключительно в Мodel? Процессов несколько, возможны ветвления кто и как будет проводить их оркестровку? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 13:46 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
SeVaМСУSeVa, ты ссылку читал? Что не ясно из схемы? Контроллер через сервис (у меня это некий IDataService) взаимодействует с моделью (бизнес логика) и представлением, представление тупо берет из модели посчитанные данные и отрисовывает. Сходи в садик, там тебе дети разжуют. Ну, хоты бы что-то внятное. А теперь нарисуй диаграмму для такого Use case: 1.Провести оплату через провайдера. 2. Если оплата прошла успешно, то сопоставить ее с неоплаченными счетами. Если нет, то показать ошибку пользователю 3. Передать данные об оплате в 1С 4. Всем полностью оплаченным Счетам изменить статус на Оплачено. 5. Если есть полностью оплаченные Счета, то : - произвести уведомление Менеджеров по e-mail - запустить складской процесс по резервированию на складе - etc - etc Где здесь бизнес-логика и как ты ее будешь реализовывать исключительно в Мodel? Процессов несколько, возможны ветвления кто и как будет проводить их оркестровку? О, беседа вернулась в конструктивное русло. Пишу с утюга, потому немношословен буду. Что вы понимаете под Model? Если Domain Model, то помимо Entity и Value objects в ней могут быть Domain Services, в них можно выносить логику, которой необходимо взаимодействовать с несколькими Entity/другими domain service'ами/посредством интерфесов с другими системами. Картинка выше останется без изменений. Вы сможете вызвать при таком подходе логику откуда угодно в пределах приложения или в разных приложениях, также протестиоовать сможете легко. У всяких фаулеров описано же. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 14:28 |
|
EF, Repository, UnitOfWork
|
|||
---|---|---|---|
#18+
по ссылке As such some examples may help. Entities are usually big things like Customer, Ship, Rental Agreement. Values are usually little things like Date, Money, Database Query. Services are usually accesses to external resources like Database Connection, Messaging Gateway, Repository, Product Factory. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2013, 14:55 |
|
|
start [/forum/topic.php?fid=17&msg=38110159&tid=1350110]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 301ms |
0 / 0 |