Я работаю над железнодорожным веб-приложением, и у меня есть следующие слои:
ASP.NET MVC 2 (Presentation Layer)
Services Layer
Repository Layer
Database & External Web Services as data sources (Using Entity Framework for Database)
Я передаю объекты Entity Object из уровня Repository на уровень Service и думаю о передаче View Models из уровня Service в уровень Presentation.
Веб-сайт требует входа в систему, и после успешного входа в систему я должен представить экран поиска с базовым поиском (по умолчанию) и опцией для расширенного поиска. Как только пользователь заполняет критерии поиска, мне нужно собрать данные из БД и веб-сервисов и представить результаты пользователю. Пользователь выберет конкретную опцию Rail и перейдет на страницу других дополнительных опций, НО ему будет разрешено изменить ранее выбранную опцию Rail, вернувшись к результатам поиска Rail. Я должен всегда держать и представлять первоначальные критерии поиска пользователя (базовые и расширенные параметры поиска, выбранные пользователем в мастере поиска) на каждом экране, и мне нужны эти критерии на уровнях обслуживания и репозитория.
Каков наилучший способ сохранить эти критерии поиска и передавать их со страницы на страницу в пределах уровня представления и между слоями? Должен ли я создать класс View Model для параметров поиска? Или объект сущности домена (я так не думаю)? Или DTO? и лучший способ передать его по слоям и от страницы к странице в слое презентации.