Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Грамотная архитектура приложения на 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 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38323792&tid=1358286]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 334ms |

| 0 / 0 |
