Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, уважаемые! Делаю приложение на ASP.NET MVC из 2-ух проектов: 1-ый для работы с БД, так называемый Репозиторий. В нём функции выдающие данные и сохраняющие их. 2-ой для всего остального: т.е. для Контроллеров, Моделей представлений, Представлений. Постепенно методы контроллеров загромоздились логикой приложения, стали очень большими, трудными для восприятия. Может, правильно будет добавить 3-й проект, чисто для логики приложения? Чтобы он связывался с Репозиторием. А проект для web-интерфейса, чтоб ничего про Репозиторий не знал, вызывал бы только методы приекта-логики. Как грамотно построить приложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 10:09 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VPМожет, правильно будет добавить 3-й проект, чисто для логики приложения? Можно проект, можно неймспейс, зависит от масштаба. Расслаивать логику это правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 11:00 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VPА проект для web-интерфейса, чтоб ничего про Репозиторий не знал, вызывал бы только методы приекта-логики. 1. Так не надо делать. Зачем дублировать в болшьей части доступ к данным, особенно если это касается банальных CRUD. 2. Приложение должно общаться и с репозиторием (датасервисом) и с сервисом логики. 3. Сервис логики, как уже сказали, можно размещать как в отдельной сборке, так и в отдельном неймспейсе твоего репозитория (датасервиса). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 11:06 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы! Но есть один затык. Логика приложения тесно общается с Репозиторием. Связь с Репозиторием я поддерживаю через DI Ninject, слелав его DefaultControllerFactory (я получаю доступ к Репозиторию в конструкторе контроллера). Если же я вынесу логику за пределы контроллера, то как сделать её общение с Репозиторием? Мне бы хотелось прямо в логике работать с БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 11:43 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
1. Делаешь базовый контроллер 2. В нём прокидываешь 2 ленивых свойства Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 3. Всё. Все твои контроллеры могут общаться со слоем данных и со слоем логики. Никаких дефолтных фабрик, никакого мусора в конструкторах унаследованных контроллеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 11:56 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
А если я перенесу логику в сборку Репозитория, тогда я не смогу получить доступ к моделям представления. (Многие методы логики возвращают модель или List<модель> представления). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 12:00 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VPА если я перенесу логику в сборку Репозитория, тогда я не смогу получить доступ к моделям представления. (Многие методы логики возвращают модель или List<модель> представления). 1. Моделям представления вообще нечего делать в репозитории - это уровень твоего mvc приложения. Ты должен маппить в контроллере выхлоп от репозитория в модель представления и скармливать её во вью. 2. Возвращать List<T> дурной тон. Используй подобное в реализации, а наружу в сигнатуры тащи IEnumerable или IList. 3. Методы логики могут возвращать IEnumerable<T>, да. А контроллер должен это отдавать в модель пресставления. Код: c# 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 12:19 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VPЛогика приложения тесно общается с Репозиторием.Вот и вынеси работу с репозиторием в отдельный слой логики. В MVC это называется Model Контроллер ничего не должен знать о репозитории, только о модели (слой логики). Пример: Код: 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. 27. 28. IPage и IPageService - это Model (слой логики), IPageConverter - это mapper из Model во ViewModel и обратно. Пример реализации IPageService: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 12:53 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VPМногие методы логики возвращают модель или List<модель> представления. cooldeveloper2Ты должен маппить в контроллере выхлоп от репозитория модели в модель представления и скармливать её во вью. +1 В MVC (Model View Controller) логика == Model. То есть методы логики НЕ могут возвращать модель представления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 12:58 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Что касается неймспейсов, то IPage, IPageService, их реализации: Page и PageService, - а также IPageRepository - это Код: c# 1. а конкретная реализация IPageRepository - это или Код: c# 1. или Код: c# 1. или Код: c# 1. или Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:09 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAAndrey_VPМногие методы логики возвращают модель или List<модель> представления. cooldeveloper2Ты должен маппить в контроллере выхлоп от репозитория модели в модель представления и скармливать её во вью. +1 В MVC (Model View Controller) логика == Model. То есть методы логики НЕ могут возвращать модель представления. Догика может находиться в репозитории (датасервисе). Контроллер может обращаться к репозиторию (датасервису) через IoC, забирать результат и намапливать на модель представления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:17 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:19 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
cooldeveloper2Догика может находиться в репозитории (датасервисе). Контроллер может обращаться к репозиторию (датасервису) через IoC, забирать результат и намапливать на модель представления.О какой логике речь? В MVC бизнес-логика - это Model. А репозиторий инкапсулирует логику работы с данными и их распределением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:25 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, что-то я запутался. Прошу учесть, что я ещё новичок в этом. У меня сложилось мнение, что модель представления - это всего лишь описание передаваемых в представление данных, вроде: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А Вы пишите, что логику, включая работу с Репозиторием, надо писать в модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:26 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VP, вы не путайте модель и модель представления. Это две разные вещи. Насчёт модели представления Вы всё правильно поняли. Но Вы не разобрались, что такое Model в MVC. Почитайте хотя бы ВикипедиЮ: Model-View-Controller . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:30 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, почему "методы логики НЕ могут возвращать модель представления." ? Вот например: [HttpPost] метод контроллера получил модель представления. Мне её надо как-то обработать, и уже модифицированную послать обратно в представление. Модификация - это и есть логика. Результат модификации - модель представления. А раз логика - это модель, то почему "методы логики НЕ могут возвращать модель представления." ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:39 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VP, приведи пример кода контроллера, где формируется то, что ты называешь моделью представления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:41 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAcooldeveloper2Догика может находиться в репозитории (датасервисе). Контроллер может обращаться к репозиторию (датасервису) через IoC, забирать результат и намапливать на модель представления.О какой логике речь? В MVC бизнес-логика - это Model. А репозиторий инкапсулирует логику работы с данными и их распределением. О логике работе с данными. А логику в терминах MVC можно и в представлении сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:46 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA Код: c# 1. А в каком слое у вас маппинг (IPageConverter) ? Как происходит общение между слоями? К примеру: DbModel => DTO => ViewModel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:55 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
cooldeveloper2skyANAпропущено... О какой логике речь? В MVC бизнес-логика - это Model. А репозиторий инкапсулирует логику работы с данными и их распределением. О логике работе с данными. А логику в терминах MVC можно и в представлении сделать.Ясно. Я же предлагаю "логику в терминах MVC" из контроллера вынести в модель (Model), куда же и знание о каком-то там репозитории переедет. Выдержка из статьи , что я упоминал выше.Наиболее частые ошибкиНачинающие программисты (особенно в веб-программировании, где аббревиатура MVC стала популярна) очень часто трактуют архитектурную модель MVC как пассивную модель MVC. В этом случае модель выступает исключительно совокупностью функций для доступа к данным, а контроллер содержит бизнес-логику. В результате код моделей по факту является средством получения данных из СУБД, а контроллер представляет собой типичный модуль, наполненный бизнес-логикой, или скрипт в терминологии веб-программирования. В результате такого понимания MVC разработчики стали писать код, который Pádraic Brady, известный в кругах сообщества Zend Framework, охарактеризовал как ТТУК — «Толстые тупые уродливые контроллеры» (Fat Stupid Ugly Controllers)[6]: Среднестатистический ТТУК получал данные из БД (используя уровень абстракции базы данных, делая вид, что это модель) или манипулировал, проверял, записывал, а также передавал данные в вид. Такой подход стал очень популярен потому, что использование таких контроллеров похоже на классическую практику использования отдельного php-файла для каждой страницы приложения.Но в объектно-ориентированном программировании используется активная модель MVC, где модель — это не только совокупность кода доступа к данным и СУБД, а вся бизнес-логика. В свою очередь, контроллеры представляют собой лишь элементы системы, в чьи непосредственные обязанности входит приём данных из запроса и передача их другим элементам системы. Только в этом случае контроллер становится «тонким» и выполняет исключительно функцию связующего звена (glue layer) между отдельными компонентами системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:55 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, ну хотя бы вот: Код: c# 1. 2. 3. 4. 5. Сейчас getProcessMenuViewModel - это privat метод этого же контроллера: Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 13:56 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VP, ну и наименования классов и переменных Вы используете. Хрен прочитаешь код. Насколько я могу судить, классы Ga, Ga2 и gaRepository - это у Вас Model (может gaRepository и нет, тут надо смотреть его реализацию). Код, что Вы привели - это mapping модели (Model) в модель представления (ViewModel). В моём примере этот mapping вынесен в IPageConverter. Код: c# 1. То есть это слой представления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 14:08 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAAndrey_VP, ну и наименования классов и переменных Вы используете. Хрен прочитаешь код. Насколько я могу судить, классы Ga, Ga2 и gaRepository - это у Вас Model (может gaRepository и нет, тут надо смотреть его реализацию). Код, что Вы привели - это mapping модели (Model) в модель представления (ViewModel). В моём примере этот mapping вынесен в IPageConverter. Код: c# 1. То есть это слой представления. В таком случае БЛ просачивается в слой представления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 14:15 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VP, идеальным для себя нашёл следующий подход: 1. MyProject — веб-приложение 2. MyProject.Data — данные 3. MyProject.Data.Access — доступ к данным 4. MyProject.Infrastructure — оснастка ... суперпозиция: — никогда ни при каких случаях, не делать из базового контроллера средство для доступа к данным, у контроллера должно быть минимум ответственности, что в свою очередь отменяет всякую необходимость делать собственную реализацию базового контроллера — ни при каких условиях не должен существовать некий базовый сервис (IDataService), откуда будут доступны любые данные приложения — сервисы доступа к данным ни при каких обстоятельствах не должны уметь сохранять изменения в данных, для этого должен быть отдельный сервис, IUnitOfWork — слой данных не должен ничего знать о способе хранения данных, однако предоставляет интерфейсы доступа к данным, с которым слой данных работать в состоянии — слой доступа к данным реализует интферфейсы слоя данных, касательно самого доступа, и не более того — вся остастка, провайдеры, менеджеры, и прочие нужные классы уходят в Infrastructure, очищая содержание основного проекта до минимума — Unit тесты!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 14:21 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, я не считаю mapping из Model во ViewModel бизнес-логикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 14:21 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAПарамон, я не считаю mapping из Model во ViewModel бизнес-логикой. Так все это к бизнесу отношения не имеет? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 14:43 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, Вы написали, что getProcessMenuViewModel - это слой представления. Что это значит? Убрать из контроллера в отдельный класс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 14:50 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, в приведённом Вами месте идёт подсчёт баллов у участников теста. Я тоже за то, что это БЛ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 14:52 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Andrey_VPПарамон, в приведённом Вами месте идёт подсчёт баллов у участников теста. Я тоже за то, что это БЛ. по хорошему там должно быть нечто вроде: Код: c# 1. То есть маппинг работает с БЛ слоем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 15:00 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, +1) детский сад! коммент о своем владельце говорит о многом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 15:50 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANAПарамон, я не считаю mapping из Model во ViewModel бизнес-логикой. Так все это к бизнесу отношения не имеет? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Я не так внимательно разбирался в коде автора, как Вы. По его мнению - это бизнес-логика. Не вопрос. Где ей место я вроде достаточно ясно объяснил. То есть часть кода автора должна быть пересена в класс маппинга из Model во ViewModel, часть в модель Model. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 16:06 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо за просвещение! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 16:35 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
У меня тоже есть вопрос по архитектуре приложения на ASP.NET MVC, поэтому чтобы не плодить темы, напишу его сюда. У меня есть некоторый объект данных (модель) : EntityObject, который представляет собой пользователя системы, Customer. С ним связана сущность CustomerPenalty, которая доступна в нем как свойство-коллекция Penalties. Мне нужно в представлении вывести все пенальти кастомера, у которых дата истечения меньше чем, допустим, сегодня. Какой вариант правильный: 1) Передать экземпляр кастомера (или его Penalties) как модель в представление и уже в нем сделать что-то вроде: Код: c# 1. 2. 3. 4. 5. 2) Отфильтровать коллекцию Penalties по нужным критериям в действии контроллера и передать IEnumerable<CustomerPenalty> как модель в представление. 3) Ваш вариант. Как поступить правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 14:43 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Lamo2012, представьте, что потребуется предоставить пользователю возможность определять критерии фильтрации и сортировки. Где Вы реализуете методы обработки и применения этих критериев? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 16:58 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, Значит 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 17:32 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Lamo2012, Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Схематично как то так. Важно - получать из базы уже отфильтрованные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 17:41 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон[src C#] // Controller var penRepo = new PenaltiesRepo(); -1 public class PenaltiesController : Controller { private >>>IPenaltiesRepo<<< Repo; [DefaultConstructor] public PenaltiesController(>>>IPenaltiesRepo<<< repo) { this.Repo= repo; } ... var castModel = new CustomreViewModel { PenaltiesList = this.Repo.GetPenlities(), Customer = "Some Name" } return View(castModel); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 17:54 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон Код: c# 1. 2. -1 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 17:55 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ПарамонСхематично как то так. Код: c# 1. 2. 3. 4. 5. 6. 7. Что есть Model внутри реализации репозитория? И почему объект query захардкожен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 18:08 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУ, Не обязательно, автор на простых примерах поймет лучше. Не нужно его про зависимости грузить. skyANAЧто есть Model внутри реализации репозитория? И почему объект query захардкожен? 1. датаконтекст 2. где там хардкод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 18:23 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон2. где там хардкод? Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 18:44 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, проблема здесь не в «хардкоде», а в DateTime.Now кстати да, почему хардкод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 18:54 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA Код: c# 1. Почему это хардкод? По вашему дату нужно только передавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 18:56 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttпроблема здесь не в «хардкоде», а в DateTime.Now кстати да Проблема, что это - "сейчас", а не "сегодня" ? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 19:01 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, проблема в том, то все люди не живут в одном часовом поясе, при разработке веб-приложений про DateTime.Now надо забыть навсегда, и не использовать даже в примерах :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 19:03 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANA Код: c# 1. Почему это хардкод? По вашему дату нужно только передавать?Не дату, а условие, condition, query. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 19:12 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttпроблема в том, то все люди не живут в одном часовом поясе, при разработке веб-приложений про DateTime.Now надо забыть навсегда, и не использовать даже в примерах :) DateTime.Now активно и хорошо используется, про локализацию отдельная тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 19:25 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Бывают методы и без входящих параметров :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 19:37 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ПарамонhVosttпроблема в том, то все люди не живут в одном часовом поясе, при разработке веб-приложений про DateTime.Now надо забыть навсегда, и не использовать даже в примерах :) DateTime.Now активно и хорошо используется, про локализацию отдельная тема. локализация? О_о DateTime.Now используется не от большого ума. либо DateTime.UtcNow, либо DateTimeOffset.Now и точка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 20:57 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, а, ну да DateTime.UtcNow правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 22:32 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ПарамонМСУ, Не обязательно, автор на простых примерах поймет лучше. Не нужно его про зависимости грузить. skyANAЧто есть Model внутри реализации репозитория? И почему объект query захардкожен? 1. датаконтекст 2. где там хардкод? А почему ты получаешь IQueryable и ретурнишь его? А где ты диспоузишь контекст? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 22:44 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ПарамонskyANA Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Бывают методы и без входящих параметров :) А ещё бывают методы без входных параметров и ниндзя-кода внутри :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 23:38 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУА почему ты получаешь IQueryable и ретурнишь его? А где ты диспоузишь контекст? 1. IQueryable конвертится в IEnumerable, типа нужна форвард онли коллекция с отложенной загрузкой. 2. Соединение закрывается автоматом, остальное сборщик заметает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2013, 00:16 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ПарамонМСУА почему ты получаешь IQueryable и ретурнишь его? А где ты диспоузишь контекст? 1. IQueryable конвертится в IEnumerable, типа нужна форвард онли коллекция с отложенной загрузкой. 2. Соединение закрывается автоматом, остальное сборщик заметает. 1. Твой пример "IQueryable cast to IEnumerable" всё-равно не считывает данные с таблицы. Зачем тебе отложенный IQueryable, который на самом деле скрыт за IEnumerable? Странный неочевидный подход, который вызывает больше путаницы. Обычно принято отдавать IEnumerable как прочитанную коллекцию данных с БД. Если нужно отложенное чтение, то для этого есть честный IQueryable, который и нужно прокидывать. Странно это всё... 2. Плохой подход. Диспоузить нужно всё, что реализовано от IDisposable. Закон, который не требует комментариев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2013, 09:06 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУ, 1. согласен, стоит отдавать прочитанную коллекцию. 2. EF сам диспозит или GC на край, но обычно деалю MyRepository : IDisposable Вот где dispose в этом букварике? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2013, 11:32 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон2. EF сам диспозит или GC на край EF ничего не диспоузит. Зачем ожидать сборщика, если можно освободить ресурс тогда, когда он не нужен? Сборщик может быть занят другими более важными делами, зачем растягивать память и накручивать ссылки в куче? Твой репозиторий может работать и с более трудозатратным ресурсом, напр. открытое соединение в веб сервисом. ПарамонВот где dispose в этом букварике? ) Суть этого примера заключается не в том, чтобы показать, как работать с освобождением ресурсов и IoC. Поэтому не нужно надеяться на наличие полной картины архитектуры кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2013, 11:40 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
всем привет. небольшой вопрос для обсуждения по поводу архитектуры. если построить в asp.net приложении слой, работающий с данными, на базе entity или linq 2 sql (с репозиторием или без) то естественно в приложении это слой будет работать с экземплярами классов Entity - соответстсвие между таблицей в БД и классом C# в проекте. вопрос - стоит ли эти классы использовать как классы модели или нужно для модели делать свою реализацию экземпляров модели? тут что смущает 1. такой класс модели будет сильно похож на класс Entity 2. но одинаковыми они не будут - то есть если в базе есть запись о пользователе User (login, email), то в модели может быть так описана запись о пользователе UserInfo(login, email, displayName), где displayName = login ?? email. 3. наличие классов модели , отличных от объектов Entity позволит использовать их в любой библиотеке, где нужно работать с классами модели и не нужен доступ к БД 4. если приложение работает со слоем, который отдает классы модели, отличные от entity (например скрыто за фасадом), и внутри слоя приложение работает с объектами entity,то это позволит в случае необходимости поменять логику работы слоя с данными на xml, и не трогать реализацию web приложения 5. наличие разных объктов слоя доступа к данным и слоя модели требует создания двунаправленного конвертора, а это может быть довольно много. так что стоит разделять классы, представляющие объекты БД и классы модели - у кого какой опыт и какое мнение на это счет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 11:03 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Всё зависит от масштаба бедствия. Если приложение будет активно развиваться, обрастать внешним API, сервисами и интеграцией со сторонними системами, то разделять. А ежели написали, работает и забыли, то можно и не заморачиваться. И кстати в EF жеж добавили возможность работы с так называемыми сущностями POCO . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 12:05 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
В РБД модель размыта на множество связанных таблиц, посему у меня модели сгенеренные в EF, в основном используются только для составления запросов. Типа DAL и все. Модель у меня anemic ) В представление отдаю только вью модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 12:38 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
monstrU, с самого старта проекта удобно накидывать черновой прототип, используя DAL классы напрямую, без обёртывания во вью-модель, если конечно не требуется собирать разрозненные данные в кучу, или раскидывать по нормалям формы. но в итоге всё сводится к вью-моделям. в какой-то альфа-бете вью уже не видят классов из DAL и не подозревают об их существовании. на счет маппинга. существуют хорошие библиотеки (например, Automapper), позволяющие рутину свести к минимуму. кроме того, проводить логику связывания DAL-ViewModel хорошо в одном месте, снимая груз лишней ответственности с контроллеров. одна из основных задач в проектировании — свести к минимуму ответственность отдельных компонентов. контроллеры должны быть на столько легкими (можно даже сказать, тупыми), на сколько это вообще возможно, если мы говорим о модели MVC конечно же. ну и т.д. by design — ему нужно быть, хоть какому-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 13:24 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, это уже давно не просто возможность. это целая инфраструктура. Code First же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 13:26 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
вот прям очень хороший набор простых рекомендаций от вяндора: https://wiki.asp.net/page.aspx/1014/aspnet-mvc-best-practices/ советую. Isolate Controllers Isolate the controllers from dependencies on HttpContext, data access classes , configuration, logging etc. Isolation could be achieved by creating wrapper classes and using an IOC container for passing in these dependencies ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 13:55 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt кроме того, проводить логику связывания DAL-ViewModel хорошо в одном месте, снимая груз лишней ответственности с контроллеров. У вас на этом уровне есть запросы к базе, или DAL возвращает какие-то DTO? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 14:31 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttпроводить логику связывания DAL-ViewModel хорошо в одном местеЧто это за логика такая? Будь любезен, приведи пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 14:31 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttэто уже давно не просто возможность. это целая инфраструктура. Code First же.Я не пользуюсь EF, для меня это просто возможность. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 14:32 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, skyANA, упрощенный до безобразия пример: Код: 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. 27. конфигурация Mapper в отдельно слое. если что-то требуется по-сложнее, то и конфигуратор настраивается соответствующим образом. таким образом, вью-модели могут быть вложенными, и код контроллера лишается лишних обязанностей, и как следствие зависимостей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 14:52 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, если _service у тебя DAL, то где слой бизнес-логики? Если при этом ещё и контроллер тупой. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 14:55 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, В общем это слой маппинга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 15:02 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAhVostt, если _service у тебя DAL, то где слой бизнес-логики? Если при этом ещё и контроллер тупой. :) _service — и есть слой бизнес-логики. в примере он выглядит как простой DAL, ну так пусть воображение дорисует _service.GetAndDoSomethingWithMyBusiness(...) сам же объектъ _service работает с IXXXRepository, ничего идеологически не нарушено :) и да, сервису совсем не обязательно дублировать репу, достаточно выставить интерфейс репы наружу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 15:04 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt ну так пусть воображение дорисует _service.GetAndDoSomethingWithMyBusiness(...) Мое дорисовывает целый слой DTO, а у вас там что передают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 15:19 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, а у меня там domain business layer transfer data object и business-logic flow, не пугайте людей :) человек же учится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 15:29 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, это ты человека не путай своим DAL - ViewModel, тогда как у тебя из DAL - Model, Model - ViewModel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 15:55 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, ах вон вы про что. ну ладно, ладно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 15:56 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttах вон вы про что. ну ладно, ладно :)Чего ладно? Ты читать пробовал, что пишешь? hVosttс самого старта проекта удобно накидывать черновой прототип, используя DAL классы напрямую, без обёртывания во вью-модель, если конечно не требуется собирать разрозненные данные в кучу, или раскидывать по нормалям формы. но в итоге всё сводится к вью-моделям. в какой-то альфа-бете вью уже не видят классов из DAL и не подозревают об их существовании. У нормальных людей DAL классы - это DAL классы. А у тебя фиг знает что, судя по твоим последующим постам. То ли ты их просто везде используешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 16:01 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, по-подробней про DAL-классы пожалуйста. просвятите несведущих ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 16:10 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, конкретные вопросы будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 16:27 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAhVostt, конкретные вопросы будут? У нормальных людей DAL классы - это DAL классы. что за DAL классы такие у нормальных людей, и какие видятся несостыковки с тем, что написал я? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 16:33 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, DAL классы - это те классы, что используются на уровне доступа к данным и за пределами репозитория их не видно. На языке EF - это означает, что репозиторий не должен возвращать сущности, завязанные на EntityObject и ObjectContext. Нестыковки у тебя в том, что до конца не понятно, что возвращает твой _service и избавился ли ты от использования DAL классов в представлении и контроллере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 17:29 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, всё правильно. DAL не светит на ружу Data Context-ом. пример структуры размещения: сборка MyProj.Data — содержит определения классов модели (кот. в тоже время являются DTO) — ничего не знает о DataContext и Entity Framework — содержит интерфейс IRepository — содержит публичный интферейс IXXXService и закрытую (internal) реализацию XXXService — содержит публичный интерфейс IUnitOfWork сборка MyProj.Data.Access — референсит MyProj.Data и EF — содержит реализацию Data Context — реализует IRepository из MyProj.Data — реализует IUnitOfWork основной проект ссылается на обе сборки. регистрирует их как модули и работает исключительно с интерфейсами через IoC. в следствие этого Data.Access заменить можно (на что угодно, хоть на Redis реализацию), Data — заменить нельзя, так как это суть есть модель. через IXXXService доступ к бизнес-логике. все операции над моделью XXX и связанными сущностями. через IUnitOfWork получаем доступ к сохранению изменений. если контроллер не владеет IUnitOfWork, он ни при каких обстоятельствах, что бы он не делал, не может произвести никаких изменений с моделью. какие несостыковки? или вы предлагаете еще один слой классов Модели над DTO, а только затем уже ViewModel ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 18:00 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, просто да, так получается, что классы domain модели являются DTO в EF Code First. и через навигационные свойства можно получить доступ к связанным объектам. и это огромный плюс. если на этом завязываться, то мы поимеем зависимость от такого поведения, которую не-EF может не реализовывать и придется реализовывать кастомно (хотя тот же BLToolkit это умеет из каропки и другие игроки тоже могут). правда, мне не приходилось работая с Code First на горячую менять ORM. базу данных можно легко поменять при наличии провайдера. вообще эт все ради TDD. приведенная модель отлично подходит для полного покрытия тестами всей инфраструктуры. модель отлично существует и работает отдельно от основного проекта. писался онлайн мониторинг на десктопе с использованием одной и той же модели, не говоря уже о различных загрузчиках, реализованных отдельными сервисами. что здесь плохо? может посоветуете, что можно улучшить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 18:10 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, плохо то что все в коде в коде может быть только то, что создано тобою что создано богом должно быть расширяемо и интерпретируемо через контексты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 18:57 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosплохо то что все в коде в коде может быть только то, что создано тобою что создано богом должно быть расширяемо и интерпретируемо через контексты я проникся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 19:05 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, просто да, так получается, что классы domain модели являются DTO в EF Code First. и через навигационные свойства можно получить доступ к связанным объектам. и это огромный плюс. если на этом завязываться, то мы поимеем зависимость от такого поведения, которую не-EF может не реализовывать и придется реализовывать кастомно (хотя тот же BLToolkit это умеет из каропки и другие игроки тоже могут). правда, мне не приходилось работая с Code First на горячую менять ORM. базу данных можно легко поменять при наличии провайдера. вообще эт все ради TDD. приведенная модель отлично подходит для полного покрытия тестами всей инфраструктуры. модель отлично существует и работает отдельно от основного проекта. писался онлайн мониторинг на десктопе с использованием одной и той же модели, не говоря уже о различных загрузчиках, реализованных отдельными сервисами. что здесь плохо? может посоветуете, что можно улучшить?Я не понял, у тебя объекты завязанны на EF, или таки нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 19:19 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, MyProj.Data совершенно ничего не знает о EF (нет референса), а работаю из проекта я именно с ним. хотя и Business Objects выглядят примерно вот так: public class Order { ... [MaxLength(Basis.Number)] public string Number {get;set;} ... public virtual ICollection<Service> Services { get; set;} ... } что какбы намекает :) но прямой взаимосвязи нет, только соглашения (для удобства, но это вовсе не обязательно). конечно из DAL я получаю на самом деле инстанс прокси-класса (заэммиченный наследник Order, реализующий Lazy-навигационные свойства) — это щитается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 19:29 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, всё правильно. DAL не светит на ружу Data Context-ом. пример структуры размещения: сборка MyProj.Data — содержит определения классов модели (кот. в тоже время являются DTO) — ничего не знает о DataContext и Entity Framework — содержит интерфейс IRepository — содержит публичный интферейс IXXXService и закрытую (internal) реализацию XXXService — содержит публичный интерфейс IUnitOfWork то есть IRepository в этом случае у тебя работает с объектами модели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 22:11 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
monstrU, да Get, Query, Add, Update, Remove... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2013, 22:18 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, какой смысль одно и то ж дублировать на разных уровнях? мыслишь в таблицах, так и работай с таблицами модель блин, которая = таблица в БД в лучшем случае какой то ДТО придумали от бессилия ужость ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 10:00 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 11:08 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, а че? нормально, никаких левых абстракций ради абстракций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 11:10 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRos, Когда-то так и было. С абстракциями порядка больше, багов меньше ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 11:17 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttmonstrU, да Get, Query, Add, Update, Remove... Бред сивой кобылы репозиторий затачивать под дженерик от модели с лапидарными гет, апдейт и иже с ним. Тот же контекст еф уже обслуживает весь этот функционал и даже больше. Репозиторий или датасервис не должен зависеть от модели. Это полновесный слой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 11:17 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRos, о смысле шаблона Repository (Репозиторий) могли бы и прочитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 11:17 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУРепозиторий или датасервис не должен зависеть от модели. Это полновесный слой.Будь любезен, раскрой мысль. "Не должен зависеть от модели" - это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 11:27 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAМСУРепозиторий или датасервис не должен зависеть от модели. Это полновесный слой.Будь любезен, раскрой мысль. "Не должен зависеть от модели" - это как? Я же раскрыл уже. Речь о генерик репозитории. Раскрыть мысль, что такое генерик? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 11:31 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУ, а, понял, ты под моделью ты понимаешь отдельную сущность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:02 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, вот вот че за Модель то? потеряв месяц на изучение всего этого барахла понял что "модель" это та фигня, которая передается для визуализации все крутится вокруг - как бы че нить показать и при том показать хреновенько :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:12 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosвот вот че за Модель то? потеряв месяц на изучение всего этого барахла понял что "модель" это та фигня, которая передается для визуализации все крутится вокруг - как бы че нить показать и при том показать хреновенько :(ВикипедиЯКонцепция MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента: - Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать. - Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами. - Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции. Вы потратили месяц на то, чтобы понять, что в представление передаётся информация, которую надо отобразить (визуализировать)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:23 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosче за Модель то? Да, тут часто непонятки, EF model, MVC model, DATA model, View model, Business Model, Entity Model и тд. Каждый своё поразумевает ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:25 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, в АСП НЕТ МВС я не видель у модели никаких методов под моделю подразумевается данные которые помешается во вьюдата и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:25 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ПарамонViPRosче за Модель то? Да, тут часто непонятки, EF model, MVC model, DATA model, View model, Business Model, Entity Model и тд. Каждый своё поразумевает ) во во а Модель то воще то модель предметной области вроде бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:27 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Напомните как в один солюшен добавить несколько проектов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:31 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAВы потратили месяц на то, чтобы понять, что в представление передаётся информация, которую надо отобразить (визуализировать)? Я потратил месяц на изучение стека АСП НЕТ и пришел к выводу что предел этой технологии ASP DynamicData :):) т.е. отображение таблиц БД на рожу скоко блабла, а в конце опять таблички из бд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:31 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosskyANAВы потратили месяц на то, чтобы понять, что в представление передаётся информация, которую надо отобразить (визуализировать)? Я потратил месяц на изучение стека АСП НЕТ и пришел к выводу что предел этой технологии ASP DynamicData :):) т.е. отображение таблиц БД на рожу скоко блабла, а в конце опять таблички из бдНу не знаю, почитайте книжку "Шаблоны интеграции корпоративных приложений" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:35 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, да пофиг кто там че написал ради бабла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:36 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosда пофиг кто там че написал ради баблаas you wish :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:51 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosа в конце опять таблички из бдЕсли данные хранятся только в одной реляционной бд, то да, сложно понять для нахуа понапридумывали шаблоны проектирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 12:54 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, не при чушь, при чем тут РМД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 13:16 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRos, перефразирую: "Если данные хранятся только в одной реляционной бд не распределены, то да, сложно понять для нахуа понапридумывали шаблоны проектирования репозиторий." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 13:27 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAViPRos, перефразирую: "Если данные хранятся только в одной реляционной бд не распределены, то да, сложно понять для нахуа понапридумывали шаблоны проектирования репозиторий."Да, так лучше. А то опять глаза тереть начал:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 13:33 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
какие данные? почему распеределны так а не этак? откуда блин эти догмы в башке? нафига мне какой то репозитарий обязательно если данные распределены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 13:44 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosкакие данные? почему распеределны так а не этак? откуда блин эти догмы в башке? нафига мне какой то репозитарий обязательно если данные распределены?Слушай. Прочитай опредление и попытайся понять о чём там речь. Я же уже писал, что всё зависит от масштаба бедствия. Где-то применение того, или иного шаблона - это лишняя абстракция. А где-то вполне логичное решение. Ты ошибочно полагаешь, что у меня какие-то догмы в башке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 14:14 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, а, понял, ты под моделью ты понимаешь отдельную сущность? Repository<T> В данном случае репозиторий жестко прибивается к одной "модели". Для примеров hello world еще пойдет, но в реалиях такая жесть просто неприемлема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 14:25 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУ, один Repository на всех тоже плохо. Рекомендуется, цитирую: отдельный объект Repository создавать только для корня агрегации (aggregation root), к которому нам нужен непосредственный доступ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 14:40 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, один Repository на всех тоже плохо. Рекомндуется, цитирую: отдельный объект Repository создавать только для корня агрегации (aggregation root), к которому нам нужен непосредственный доступ. Не на всех, на абстракцию. Например, EmployeeDataService сервис для работы с эмплоями, в котором не обязательно модель Employee должна ходить. Там может быть что угодно, в той или иной степени коррелирующее с эмплоями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 14:44 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, один Repository на всех тоже плохо. Рекомендуется, цитирую: отдельный объект Repository создавать только для корня агрегации (aggregation root), к которому нам нужен непосредственный доступ. а если корней много? и как ты будешь определять какие корни и какие ветки? где метаописание понятия? где OCL? и кто воще все это рекомендует? на основе какого опыта? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 15:06 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRos, сходите в гугл с запросом: "domain driven design aggregate root". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 15:51 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Коротко: aggregate root - это понятие логическое. Вон почитайте, что МСУ пишет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 15:53 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, да мне то нефиг гуглить, мои макротипы лет 5 уже работают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 16:32 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosда мне то нефиг гуглить, мои макротипы лет 5 уже работаютА DDD уже лет 10 с лишним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 17:03 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, а коболу еще больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 17:47 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУskyANAМСУ, а, понял, ты под моделью ты понимаешь отдельную сущность? Repository<T> В данном случае репозиторий жестко прибивается к одной "модели". Для примеров hello world еще пойдет, но в реалиях такая жесть просто неприемлема. бред сивой кобылы. интересно было бы посмотреть на репозиторий в твоих реалияхъ. но ты же не покажешь, зассикаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 17:49 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУБред сивой кобылы репозиторий затачивать под дженерик от модели с лапидарными гет, апдейт и иже с ним. Тот же контекст еф уже обслуживает весь этот функционал и даже больше. Репозиторий или датасервис не должен зависеть от модели. Это полновесный слой. какой там функционал обслуживает еф контекст — до лампочки и до фонаря. даже если он при этом будет еще стирать носки и варить борщ. контекста еф вообще может и не быть, модель о нём совсем ничего не знает. поэтому не втыкай его куда попало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 17:58 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, кроме безумного поноса, что-то по теме будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 20:18 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУ, ты сам начал с фразы: "Бред сивой кобылы". Вот он тебе той же монетой и ответил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 20:22 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУ, я по теме сказал очень много. если ты слепой, то тут уже ничем не поможешь. а твой репозиторий «в реалиях» мы так и не увидели. как я и предполагал, ты только языком ворочать можешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 21:50 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, ты сам начал с фразы: "Бред сивой кобылы". Вот он тебе той же монетой и ответил. Я объяснил, почему эти дженерик сервисы и репозитории идут лесом. hVosttМСУ, я по теме сказал очень много. если ты слепой, то тут уже ничем не поможешь. а твой репозиторий «в реалиях» мы так и не увидели. как я и предполагал, ты только языком ворочать можешь. Ты по теме промычал что-то невнятное про обобщенный слой. Я тебе сказал, что это годится только для детского сада. Что мне тебе еще нужно показывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 21:58 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
МСУ, пока все это голословно. и ничего ты не объяснил. про aggregate root сущность было уже сказано, но ты видимо не в курсе о чем это, поэтому пихаешь все что попало, и дженерики тебе не подходят. если что, то дженерики подходят к репо на все 100%, таким образом в самом обобщенном случае реализацией репы может выступать даже обычный List<T>, что крайне хорошо для тестирования, таким образом логика не размазывается и каждый класс совершенно точно знает с чем работает, и выполняет сугубо свою задача, на залезая не на чьё поле. все, что выходит за рамки репы — в бизнес-логику. не надо мешать одно с другим и пытаться что-то нагородить кривобокое. посему, пропихивать говнокодинг, МСУ, не надо. или приводи пример, подтверждающий свои слова, или иди лесом, пока все твои слова высер умственно отсталого, который ляпает сам не зная чего. примеры давай. ссылки, пруфы, шо там у тебя есть за пазухай. или не умничай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2013, 23:47 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Репозиторий. Ссылка была уже приведена, но я повторю: http://design-pattern.ru/patterns/repository.html Цитата: Паттерн Repository посредничает между слоем области определения и слоем распределения данных, работая, как обычная колекция объектов области определения. и оно понятно, сам термин Repository переводится, как «хранилище» Почему здесь уместны generics? Давайте посмотрим типичное переопределения DataContext: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. В данном случае каждый DbSet<T> является репозиторием отдельной сущности. Если T имеет навигационные свойства, то через полученный объект/коллекцию, можно получить доступ к связанным объектам. Поэтому каждому отдельному репозиторию нет нужды предоставлять доп. набор методов для связанных сущностей. Правда и здесь не все так идеально, как хотелось бы. Remove() выполненный для коллекции навигационного свойства не является равнозначной инструкцией Remove() репозитория (объект не удаляется, а лишь уничтожается связь). Что логично, в принципе. Для учебных примеров вроде сойдёт. Но теперь к боевым «реалиям». Определяем интерфейс: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Этого базиса хватит с головой для выполнения любых операций. Update технически не нужен для работы с EF, но должен присутствовать и использоваться. Реализация для EF: Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Плюсов в таком подходе достаточно: 0. Самое главное! Тестирование! Очень легко генерить коллекции и подсовывать их как источник данных. 1. Реализацию полностью можно подменить на любую другую, сменив не только базу данных, провайдер, но и ORM. 2. В отдельных случаях можно подменить реализацию репы одной сущности на другую, допустим какие-нибудь сверхогромные блобы могут храниться совсем в другой базе данных. Или отдельные данные должны храниться в более защищенном хранилище (особенно учитывая некоторые пункты Кодекса по обработке персональных данных)... 3. Можно изготовить фабрику, которая будет выдавать репу для любой запрошенной сущности, и это легко реализовать. Далее. Расширение. Код: c# 1. 2. 3. 4. Поясню, никто не запрещает расширять репу кастомными методами, для оптимизации тех же тяжелых запросов (для которых возможностей LINQ может не хватать), в том числе если надо избавиться в некоторых случаях от Lazy-поведения. Репозиторий должен делать только то, что должен: «достижение полного разделения и односторонней зависимости между уровнями области определения и распределения данных» . Все остальные задачи ложатся на другие слои бизнес-логики: менеджеры, сервисы, управление процессами, правилами и прочая хрень, что выходит за рамки хранилища . Пытаться пихнуть на репу каких-то еще задач, выйдет боком для сопровождения, развития и самое главное — для тестирования. Дженерики здесь очень даже уместны. Есть возражения? Примеры плз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 05:40 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Еще одно уточнение. Если какому-то сервису треба работать с несколькими сущностями, радя бога: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Если конструктор получается перегружен кучей зависимостей, значит в дизайне творится какая-то каша и требуется срочный рефакторинг. Для приложения не должен существовать какой-то мега-сервис, напичканный доступом ко всем данным. Ни в коем случае. Если такое имеет место быть, архитектура однозначно плохая и оправданий этому не может быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 06:08 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttЕсть возражения? Примеры плз.Да. Смотри первые две проблемы тут . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 09:37 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, проблем не вижу. хотите, используйте спецификации (я использую). не хотите, делайте «фабрику запросов». специфика DAL не вылазит за пределы репы, если этого не сделать умышленно (всякие IsChanged инкапсулируются в прокси, и без специальных методов доступ к ним не получить). на счет того, делать или не делать специфичный репо для поголовно для каждого домена, согласен с принципом aggregation root, т.е. делать только для root, но с другой стороны, имя под рукой фабрику, генерирующую репу для домена, вообще проблем не имеем. делаем специфику там, где требуется. где не требуется, обходимся фабрикой или вылизываем архитектуру. ссылкой на репу доменный объект не обладает. не считая навигационные свойства. использовать их или не использовать зависит от требуемого уровня абстрагирования. можно не использовать. про UnitOfWork я уже говорил. делаем IUnitOfWork и получаем его только там, где требуется изменение данных. в плюсах — если не видим у потребителя наличия IUnitOfWork, значит на все 100% знаем — данные он не изменяет. это неимоверный гуд. репа и UnitOfWork не связаны вообще никак. заботиться об этом не нужно, если правильно употреблять IoC. никаких затрапезных студенческих поделок типа using(...) { } итого: недостаток шаблона Repository только в его неправильном употреблении, и попытка сделать из него монстра с огромной кучей примитивных методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 09:54 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttпроблем не вижу. хотите, используйте спецификации (я использую). не хотите, делайте «фабрику запросов».У тебя полтора человека в команде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 09:57 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, вот об этом и речь :) я использую, но не пишу. четкое разделение ответственности в коде, позволяет организовать работу команды, понимать и использовать наработки друг друга. если писать единоличный проект, там можно творить все щто угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 10:03 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttUpdate технически не нужен для работы с EF, но должен присутствовать и использоваться. А почему не нужен? Как и где он реализуется? ps При работе с DbContext напрягает вся эта тема с Property.IsModified. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 10:20 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttЕсли конструктор получается перегружен кучей зависимостей, значит в дизайне творится какая-то каша и требуется срочный рефакторинг. РБД это уже каша, которую таки придется расхлебывать. ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 10:25 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, Update не нужен, потому что изменения отслеживаются. Update должен применяться, чтобы не зависеть от этого поведения. если вы не хотите отслеживания (IsModified внутрях), можете получать объекты AsNoTracking(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 10:27 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttесли вы не хотите отслеживания (IsModified внутрях), можете получать объекты AsNoTracking(). А если я не хочу получать объекты, а просто приаттачить по айди? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 10:41 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, интересен сам механизм, в результате которого вы хотите приатачить объект по айди. мне вот такого ни разу не потребовалось. если у меня есть айди, я получая объект, апдейчу его, затем сохраняю. зачем атачить? там щто пару тыщей полей? расходы на эту операцию в масштабах приложения вообще не существенны, это не то, на чем стоило бы экономить. хотя приатачить таки можно. контекст это позволяет. но тогда будет дыра в абстракции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:07 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt зачем атачить? там щто пару тыщей полей? расходы на эту операцию в масштабах приложения вообще не существенны, это не то, на чем стоило бы экономить. Да полно операций, которые выполняют чисто апдейт, таблица на 40 - 50 полей (полно nvarchar), есть нагрузка. Мне каждый раз делать селект перед этим? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:17 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, нифига ты не понимаешь репозитарий в твом примере один - dbcontext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:22 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, не зная реальной специфики и нагрузки, трудно сказать, почему бы и нет. функцию, которая опдейтит нужные данные (ч/з аттач или через процедуру) можно сделать, ничего не мешает. если еще есть возможность проектировать/изменять схему данных, если полей так много стоит может задуматься уже и о нормировании :) видал я базы с таблицами over 200 полей. ниче так. я такие системы называю «системами поддержания работообеспечения персонала» ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:28 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRoshVostt, нифига ты не понимаешь репозитарий в твом примере один - dbcontext если работать напрямую только с ним, то да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:29 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, только с ним и работаешь как токо начинается транзакция так что все остальное нафиг не нужно и не каждый dbcontext есть полноценный репозитарий (полноценный должен дать возможность зафиксировать любую транзакцию если нет конкурренции) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:32 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttПарамон, не зная реальной специфики и нагрузки, трудно сказать, почему бы и нет. функцию, которая опдейтит нужные данные (ч/з аттач или через процедуру) можно сделать, ничего не мешает. если еще есть возможность проектировать/изменять схему данных, если полей так много стоит может задуматься уже и о нормировании :) видал я базы с таблицами over 200 полей. ниче так. я такие системы называю «системами поддержания работообеспечения персонала» Да я вижу сколько систем ты видел если, предлогаешь два обращения вместо одного. Выходит прийдется нарушать концепцию и размазывать логику, а? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:33 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRos, ради бога. называйте что хотите, как хотите :) получаете UoW, и работаете с ним. забываете о транзакциях и конкуренции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:37 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, ничего идеального не бывает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:39 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttViPRos, ради бога. называйте что хотите, как хотите :) получаете UoW, и работаете с ним. забываете о транзакциях и конкуренции. когда получиш уов твой, то заранее надо знать а зафиксируется ли оно :) а ты нифига не знаешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:41 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
все эти пустые слова придумали дебилы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:43 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRos, вернее слова то верные- а вот интерпетация - говно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:44 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosкогда получиш уов твой, то заранее надо знать а зафиксируется ли оно :) а ты нифига не знаешь если не получу исключения, начит все зафиксировалось. может стоит еще манетку подбрасывать и гадать на луже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:46 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, вот вот ты ВСЕГДА будешь монетку кидать,так как твой репо не знает - может ли он че то там удалить писать читать на самом деле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:53 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRos, хм... а ведь верно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:54 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVostt, я и грю - не читайте дебилов - начиная с буча, кончая фулером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 11:55 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosвернее слова то верные- а вот интерпетация - говноЭто твоя интерпретация - говно. У нас основное хранилище - это MS SqlServer, часть данных лежит в MongoDB, часть в Couchbase. Репозиторий - это dbcontext, ну ну. Я же говорю, что пока у тебя данные не распределены, ты не поймёшь суть репозитория. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:20 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, дл блин это у него репозитарий дбконтекст а не у меня и сунь свой моного и т.д. куда подальше инвалид фигов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:23 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosskyANA, дл блин это у него репозитарий дбконтекст а не у меня и сунь свой моного и т.д. куда подальше инвалид фиговНажрался с утра, или кто нахер послал? Или просто остопиздело всё и бана захотелось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:24 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
С репозиторием опять непонятки. У одних это обертка над конетекстом, у других там БЛ, у третих корень :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:30 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ПарамонС репозиторием опять непонятки. У одних это обертка над конетекстом, у других там БЛ, у третих корень :)Эээ, жолубчик, определение прочитай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:35 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Сахават, я буду тыкать тем, чем считаю нужным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:37 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANAопределение прочитай. Прослойка между прослойками не? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:39 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Парамон, можно и так сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:40 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
Прослойка, посредник, медиатор... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:42 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
skyANA, хто то сказал, слойка? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 12:57 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, пока все это голословно. и ничего ты не объяснил. про aggregate root сущность было уже сказано, но ты видимо не в курсе о чем это, поэтому пихаешь все что попало, и дженерики тебе не подходят. Ты либо в космосе, либо читать не умеешь. 14542061 Впрочем, как всегда. hVosttесли что, то дженерики подходят к репо на все 100% Для задач Hello world, бесспорно. hVosttтаким образом в самом обобщенном случае реализацией репы может выступать даже обычный List<T>, что крайне хорошо для тестирования, таким образом логика не размазывается и каждый класс совершенно точно знает с чем работает, и выполняет сугубо свою задача, на залезая не на чьё поле. Ничего не понял. Ты как в тумане. Какой List, причем тут тестирование, о каком размазывании идет речь? hVosttвсе, что выходит за рамки репы — в бизнес-логику. не надо мешать одно с другим и пытаться что-то нагородить кривобокое. А это тут причем? hVosttпосему, пропихивать говнокодинг, МСУ, не надо. или приводи пример, подтверждающий свои слова, или иди лесом, пока все твои слова высер умственно отсталого, который ляпает сам не зная чего. примеры давай. ссылки, пруфы, шо там у тебя есть за пазухай. или не умничай. Я уже всё объяснил, все поняли, о чем речь и как нужно писать репозитории. У одного тебя как всегда крыша перевернута на 180 градусов. Что тебе еще объяснить? Перечитай еще раз, что я писал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 16:02 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
hVosttПарамон, ничего идеального не бывает :) Речь не об идеальности, просто в очередной раз форум учит тебя, бестолочь, уму разуму. Заметь, по любому вопросу тебя приходится шпынять как мячик. Иди букварь читай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 16:16 |
|
||
|
Грамотная архитектура приложения на ASP.NET MVC
|
|||
|---|---|---|---|
|
#18+
ViPRosрепозитарий в твом примере один - dbcontext Сахават, кончай бредить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2013, 16:18 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1358286]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
159ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 515ms |

| 0 / 0 |
