Я создаю веб-приложение ASP.Net MVC с использованием подхода n-уровня. Моя структура выглядит следующим образом:Расчеты в бизнес-слое или контроллерах Для просмотра конкретной информации
Business Objects - Model
Data Access Layer - DAL
Business Logic Layer - BLL
Mapping Layer
ViewModels
Controllers
Views
Я обычно ставлю расчеты в бизнес-уровне, но что расчеты, которые используются только для целей презентации? Например, при представлении в моем приложении я показываю счет-фактуру, любые сделанные платежи и баланс. Balance Owing - расчетная сумма. Поскольку я часто использую Balance Owing в своем приложении, я склонен создавать общий метод BalanceOwing в моем BLL, но есть и другие случаи, когда расчет только когда-либо будет использоваться для одного представления. В этом случае следует ли вместо вычисления перейти в контроллер или в моем случае слой отображения? (У меня есть слой отображения, который я использую для преобразования моделей доменов в viewmodels, что делает контроллер более аккуратным).
Действительно ли это разделительная линия? То есть, если я могу обобщить расчет и использовать его более одного раза, он должен идти в BLL, но если он специфичен для одного представления, он должен быть в контроллере или картографе?
РЕЗЮМЕ:
Я пошел с @ trailmax отвечает, потому что он видел, что некоторые вещи, которые я думал, как логика представления были в бизнес-логике фактов и, следовательно, принадлежат к УСКУ. В тех случаях, когда что-то действительно представляет собой логику представления и включает вычисления, такие как разбиение на страницы, я бы поставил их в класс полезности или метод расширения, как указано в @ramiramilu.
какой расчет вы считаете «специфичным для просмотра»? – trailmax
@trailmax Например, рассмотрите событие, у которого есть дата/время начала и дата/время окончания. Длительность, которая может быть рассчитана на основе этих двух входов, может быть рассчитана на конкретный вид. –
Я считаю, что продолжительность будет коммерческой. т. е. включает ли он выходные? Включает ли она какую-то другую логику, специфичную для вашего домена? Я рассматриваю конкретную операцию просмотра, чтобы выяснить, какое разрешение экрана используется. Что-то еще должно быть сделано в BLL. – trailmax