powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Грамотная архитектура приложения на ASP.NET MVC
25 сообщений из 167, страница 2 из 7
Грамотная архитектура приложения на ASP.NET MVC
    #38304885
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAПарамон, я не считаю mapping из Model во ViewModel бизнес-логикой.
Так все это к бизнесу отношения не имеет?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 
...
            foreach (Ga2 g2 in ga2)
            {
                var listW = gaRepository.WordList(id_ga, g2.U);
                if (listW.Count()==0)
                    T = 0;
                else
                    T = listW.Sum(w => w.Cost);
                );
            }
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38304900
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA, Вы написали, что getProcessMenuViewModel - это слой представления.
Что это значит? Убрать из контроллера в отдельный класс?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38304908
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Парамон, в приведённом Вами месте идёт подсчёт баллов у участников теста.
Я тоже за то, что это БЛ.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38304922
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey_VPПарамон, в приведённом Вами месте идёт подсчёт баллов у участников теста.
Я тоже за то, что это БЛ.

по хорошему там должно быть нечто вроде:

Код: c#
1.
T = blService.GetCostSum();


То есть маппинг работает с БЛ слоем.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38305016
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
+1)
детский сад! коммент о своем владельце говорит о многом
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38305041
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANAПарамон, я не считаю mapping из Model во ViewModel бизнес-логикой.
Так все это к бизнесу отношения не имеет?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 
...
            foreach (Ga2 g2 in ga2)
            {
                var listW = gaRepository.WordList(id_ga, g2.U);
                if (listW.Count()==0)
                    T = 0;
                else
                    T = listW.Sum(w => w.Cost);
                );
            }

Я не так внимательно разбирался в коде автора, как Вы. По его мнению - это бизнес-логика.
Не вопрос. Где ей место я вроде достаточно ясно объяснил.

То есть часть кода автора должна быть пересена в класс маппинга из Model во ViewModel, часть в модель Model.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38305096
Andrey_VP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо за просвещение!
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38315829
Lamo2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня тоже есть вопрос по архитектуре приложения на ASP.NET MVC, поэтому чтобы не плодить темы, напишу его сюда.
У меня есть некоторый объект данных (модель) : EntityObject, который представляет собой пользователя системы, Customer. С ним связана сущность CustomerPenalty, которая доступна в нем как свойство-коллекция Penalties. Мне нужно в представлении вывести все пенальти кастомера, у которых дата истечения меньше чем, допустим, сегодня.
Какой вариант правильный:
1) Передать экземпляр кастомера (или его Penalties) как модель в представление и уже в нем сделать что-то вроде:
Код: c#
1.
2.
3.
4.
5.
@foreach (var item in Model.Penalties)
                {
                    var dateTo = item.CreatedDate + new TimeSpan(item.Duration);
                    if (dateTo.Date < DateTime.Now.Date) { continue; }
                    //.........



2) Отфильтровать коллекцию Penalties по нужным критериям в действии контроллера и передать IEnumerable<CustomerPenalty> как модель в представление.
3) Ваш вариант.

Как поступить правильно?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316069
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lamo2012, представьте, что потребуется предоставить пользователю возможность определять критерии фильтрации и сортировки.
Где Вы реализуете методы обработки и применения этих критериев?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316112
Lamo2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

Значит 2.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316126
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lamo2012,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
// Model
public class PenaltiesRepo
{
     public IEnumerable<Penality> GetPenlities()
     {
          return Model.Penalties.Where(t => t.CreatedDate <= DateTime.Now());
     }
}

// Controller
var penRepo = new PenaltiesRepo();
var castModel = new CustomreViewModel
{
    PenaltiesList = penRepo.GetPenlities(),
    Customer = "Some Name"
}
return View(castModel);



Схематично как то так.
Важно - получать из базы уже отфильтрованные данные.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316149
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон[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);
}
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316151
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон
Код: c#
1.
2.
// Controller
var penRepo = new PenaltiesRepo();


-1

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
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);
}
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316188
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонСхематично как то так.
Код: c#
1.
2.
3.
4.
5.
6.
7.
public class PenaltiesRepo
{
     public IEnumerable<Penality> GetPenlities()
     {
          return Model.Penalties.Where(t => t.CreatedDate <= DateTime.Now());
     }
}

Что есть Model внутри реализации репозитория? И почему объект query захардкожен?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316204
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

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

skyANAЧто есть Model внутри реализации репозитория? И почему объект query захардкожен?
1. датаконтекст
2. где там хардкод?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316226
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон2. где там хардкод?
Код: c#
1.
t => t.CreatedDate <= DateTime.Now()
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316247
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

проблема здесь не в «хардкоде», а в DateTime.Now
кстати да, почему хардкод?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316249
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Код: c#
1.
t => t.CreatedDate <= DateTime.Now()


Почему это хардкод? По вашему дату нужно только передавать?
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316258
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttпроблема здесь не в «хардкоде», а в DateTime.Now
кстати да
Проблема, что это - "сейчас", а не "сегодня" ? )
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316260
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон,

проблема в том, то все люди не живут в одном часовом поясе, при разработке веб-приложений про DateTime.Now надо забыть навсегда, и не использовать даже в примерах :)
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316268
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонskyANA
Код: c#
1.
t => t.CreatedDate <= DateTime.Now()


Почему это хардкод? По вашему дату нужно только передавать?Не дату, а условие, condition, query.

Код: 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
    #38316281
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttпроблема в том, то все люди не живут в одном часовом поясе, при разработке веб-приложений про DateTime.Now надо забыть навсегда, и не использовать даже в примерах :)
DateTime.Now активно и хорошо используется, про локализацию отдельная тема.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316303
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
    #38316357
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонhVosttпроблема в том, то все люди не живут в одном часовом поясе, при разработке веб-приложений про DateTime.Now надо забыть навсегда, и не использовать даже в примерах :)
DateTime.Now активно и хорошо используется, про локализацию отдельная тема.

локализация? О_о

DateTime.Now используется не от большого ума. либо DateTime.UtcNow, либо DateTimeOffset.Now и точка.
...
Рейтинг: 0 / 0
Грамотная архитектура приложения на ASP.NET MVC
    #38316468
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

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


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