powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Грамотная архитектура приложения на ASP.NET MVC
25 сообщений из 167, страница 3 из 7
Грамотная архитектура приложения на ASP.NET MVC
    #38316477
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУ,

Не обязательно, автор на простых примерах поймет лучше.
Не нужно его про зависимости грузить.

skyANAЧто есть Model внутри реализации репозитория? И почему объект query захардкожен?
1. датаконтекст
2. где там хардкод?
А почему ты получаешь IQueryable и ретурнишь его? А где ты диспоузишь контекст?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316501
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANA
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class PenaltyRepository
{
     public IEnumerable<Penalty> FindAll()
     {
          // возвращаем всё
     }

     public IEnumerable<Penalty> Find(IQueryObject query)
     {
          // возвращаем только те данные, что удовлетворяют условию
     }
}


Бывают методы и без входящих параметров :)
А ещё бывают методы без входных параметров и ниндзя-кода внутри :)
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316520
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА почему ты получаешь IQueryable и ретурнишь его? А где ты диспоузишь контекст?
1. IQueryable конвертится в IEnumerable, типа нужна форвард онли коллекция с отложенной загрузкой.
2. Соединение закрывается автоматом, остальное сборщик заметает.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316596
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУА почему ты получаешь IQueryable и ретурнишь его? А где ты диспоузишь контекст?
1. IQueryable конвертится в IEnumerable, типа нужна форвард онли коллекция с отложенной загрузкой.
2. Соединение закрывается автоматом, остальное сборщик заметает.
1. Твой пример "IQueryable cast to IEnumerable" всё-равно не считывает данные с таблицы. Зачем тебе отложенный IQueryable, который на самом деле скрыт за IEnumerable? Странный неочевидный подход, который вызывает больше путаницы. Обычно принято отдавать IEnumerable как прочитанную коллекцию данных с БД. Если нужно отложенное чтение, то для этого есть честный IQueryable, который и нужно прокидывать. Странно это всё...
2. Плохой подход. Диспоузить нужно всё, что реализовано от IDisposable. Закон, который не требует комментариев.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316838
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

1. согласен, стоит отдавать прочитанную коллекцию.
2. EF сам диспозит или GC на край, но обычно деалю MyRepository : IDisposable

Вот где dispose в этом букварике? )
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316858
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон2. EF сам диспозит или GC на край
EF ничего не диспоузит. Зачем ожидать сборщика, если можно освободить ресурс тогда, когда он не нужен? Сборщик может быть занят другими более важными делами, зачем растягивать память и накручивать ссылки в куче? Твой репозиторий может работать и с более трудозатратным ресурсом, напр. открытое соединение в веб сервисом.

ПарамонВот где dispose в этом букварике? )
Суть этого примера заключается не в том, чтобы показать, как работать с освобождением ресурсов и IoC. Поэтому не нужно надеяться на наличие полной картины архитектуры кода.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38323792
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет. небольшой вопрос для обсуждения по поводу архитектуры.
если построить в 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. наличие разных объктов слоя доступа к данным и слоя модели требует создания двунаправленного конвертора, а это может быть довольно много.
так что стоит разделять классы, представляющие объекты БД и классы модели - у кого какой опыт и какое мнение на это счет ?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38323895
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё зависит от масштаба бедствия.
Если приложение будет активно развиваться, обрастать внешним API, сервисами и интеграцией со сторонними системами, то разделять.
А ежели написали, работает и забыли, то можно и не заморачиваться.

И кстати в EF жеж добавили возможность работы с так называемыми сущностями POCO .
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38323939
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В РБД модель размыта на множество связанных таблиц, посему у меня модели сгенеренные в EF, в основном используются только для составления запросов. Типа DAL и все.
Модель у меня anemic )
В представление отдаю только вью модели.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38323999
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monstrU,

с самого старта проекта удобно накидывать черновой прототип, используя DAL классы напрямую, без обёртывания во вью-модель, если конечно не требуется собирать разрозненные данные в кучу, или раскидывать по нормалям формы. но в итоге всё сводится к вью-моделям. в какой-то альфа-бете вью уже не видят классов из DAL и не подозревают об их существовании.

на счет маппинга. существуют хорошие библиотеки (например, Automapper), позволяющие рутину свести к минимуму. кроме того, проводить логику связывания DAL-ViewModel хорошо в одном месте, снимая груз лишней ответственности с контроллеров.

одна из основных задач в проектировании — свести к минимуму ответственность отдельных компонентов. контроллеры должны быть на столько легкими (можно даже сказать, тупыми), на сколько это вообще возможно, если мы говорим о модели MVC конечно же.

ну и т.д. by design — ему нужно быть, хоть какому-то :)
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324003
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

это уже давно не просто возможность. это целая инфраструктура. Code First же.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324060
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот прям очень хороший набор простых рекомендаций от вяндора:

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
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324107
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt кроме того, проводить логику связывания DAL-ViewModel хорошо в одном месте, снимая груз лишней ответственности с контроллеров.

У вас на этом уровне есть запросы к базе, или DAL возвращает какие-то DTO?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324108
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttпроводить логику связывания DAL-ViewModel хорошо в одном местеЧто это за логика такая? Будь любезен, приведи пример.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324111
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttэто уже давно не просто возможность. это целая инфраструктура. Code First же.Я не пользуюсь EF, для меня это просто возможность. :)
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324164
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон, 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.
public ActionResult MyAction(...)
{
     var data = _service.Get(...);
     var model = Mapper.Map(data, new MyViewModel());
     return View(model);
}

[HttpPost]
public ActionResult MyAction(MyViewModel model)
{
     if(ModelState.IsValid)
     {
          var data = _service.Get(...);
          // check exists data...
          try {
               Mapper.Map(model, data);
               _service.Update(...);
               _unitOfWork.Save();
               return Redirect...
          }
          catch(...)
          {
              ...
          }
     }
     return View(model);
}



конфигурация Mapper в отдельно слое. если что-то требуется по-сложнее, то и конфигуратор настраивается соответствующим образом. таким образом, вью-модели могут быть вложенными, и код контроллера лишается лишних обязанностей, и как следствие зависимостей.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324171
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, если _service у тебя DAL, то где слой бизнес-логики? Если при этом ещё и контроллер тупой. :)
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324194
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
В общем это слой маппинга.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324196
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, если _service у тебя DAL, то где слой бизнес-логики? Если при этом ещё и контроллер тупой. :)

_service — и есть слой бизнес-логики. в примере он выглядит как простой DAL, ну так пусть воображение дорисует _service.GetAndDoSomethingWithMyBusiness(...)

сам же объектъ _service работает с IXXXRepository, ничего идеологически не нарушено :) и да, сервису совсем не обязательно дублировать репу, достаточно выставить интерфейс репы наружу.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324219
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt ну так пусть воображение дорисует _service.GetAndDoSomethingWithMyBusiness(...)

Мое дорисовывает целый слой DTO, а у вас там что передают?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324243
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон,

а у меня там domain business layer transfer data object и business-logic flow, не пугайте людей :) человек же учится...
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324303
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, это ты человека не путай своим DAL - ViewModel, тогда как у тебя из DAL - Model, Model - ViewModel.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324310
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ах вон вы про что. ну ладно, ладно :)
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324323
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttах вон вы про что. ну ладно, ладно :)Чего ладно? Ты читать пробовал, что пишешь?
hVosttс самого старта проекта удобно накидывать черновой прототип, используя DAL классы напрямую, без обёртывания во вью-модель, если конечно не требуется собирать разрозненные данные в кучу, или раскидывать по нормалям формы. но в итоге всё сводится к вью-моделям. в какой-то альфа-бете вью уже не видят классов из DAL и не подозревают об их существовании.
У нормальных людей DAL классы - это DAL классы. А у тебя фиг знает что, судя по твоим последующим постам. То ли ты их просто везде используешь.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38324347
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

по-подробней про DAL-классы пожалуйста. просвятите несведущих
...
Рейтинг: 0 / 0
25 сообщений из 167, страница 3 из 7
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Грамотная архитектура приложения на ASP.NET MVC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]