Или они должны быть в верхнем слое (клиентский интерфейс)? При использовании луковой архитектуры (ASP.Net MVC) следует поместить мои модели просмотра со всеми моими объектами домена в ядре. Как на картинке ниже?Должны ли мои модели просмотра быть объектами моего домена в ядре в архитектуре лука?
Мой вопрос: если да, то когда я передаю модель представления из моей службы моему клиенту, это не клиентский (верхний слой), зависящий от первого слоя, который находится на двух уровнях, и не будет сломать всю зависимость с каждым слоем, только разговаривая со слоем под ним?
Что происходит, когда у меня есть viewmodel (в слое представления), который должен ссылаться на объект на уровне домена (два слоя вниз), не нарушает ли он архитектуру лука, ссылаясь только на слой ниже.
public class YogaSpaceListViewModel
{
// YogaSpaceResults is in the domain layer two layers down
public IPagedList<YogaSpaceResults> YogaSpaces { get; set; }
public string LocationResults { get; set; }
}
// this is in the domain layer with all my other entities
// this is being filled by entity framework in the DAL, which I'm calling from the service layer.
public class YogaSpaceResults
{
public string Title { get; set; }
public string Summary { get; set; }
public DateTime Date { get; set; }
public DbGeography LocationPoints { get; set; }
}
IMHO, посмотреть модель принадлежит к виду. Каждый пользовательский интерфейс будет иметь другой набор моделей просмотра. Иногда они могут быть похожими на модель домена, но в то время как модель домена представляет собой концепцию, модель представления - это просто DTO для пользовательского интерфейса. –