Привет
Я создавал бэкэнд моего приложения (используя nHibernate для доступа к данным).
До сих пор у меня было несколько простых веб-сервисов для манипулирования моими данными, но теперь мне нужно разработать веб-интерфейс для моего приложения (с использованием веб-форм).
Я смотрел на некоторые различные веб-фреймворки ( webformsMVP , spring.net web ), а также на некоторые клиентские JS-фреймворки ( knockout , angular ), и я не могу действительно решить, что будет лучше для меня, и как все это интегрировать.
Я надеялся получить от вас понимание, ребята.
Думаю, мне хотелось бы, чтобы мой общий рабочий процесс был примерно таким:
- Вид создан, вызывает его докладчик.
- Presenter связывается с бизнес-уровнем для получения информации (которая в свою очередь связывается с DAO и т. Д.)
- Presenter возвращает объект модели представления, который отображает представление.
- Пользователь манипулирует данными (возможно, используя некоторый AJAX для получения дополнительной необходимой информации)
- Просмотр отправляет модель представления измененных данных обратно в докладчик
- Presenter преобразует модель представления в сущность модели и отправляет ее на бизнес-уровень
Теперь вот части, которые я нахожу хитрыми:
A. Как сопоставить объекты представления модели и модели
Я думаю, что я должен использовать ID права, чтобы извлечь неизмененный объект из DAO (который фактически хранит его в кэше 2-го уровня nHibernate), и внести изменения в него.
(Другой вариант - сохранить сущность, которую я в данный момент редактирую, в сеансе пользователя. Но я боюсь, что этот вид кэширования создаст двойственность с кешем nHibernate.)
B. Как преобразовать изменения в модели представления в изменения в объектах модели
Я хотел бы иметь некоторую логику при изменении свойств объекта модели.
Например, для перевода сотрудника из одного отдела в другой я не хочу этого делать -
department1.Employees.Remove(employee);
department2.Employees.Add(employee);
а вот так:
employee.MoveToDepartment(department2);
Боюсь, это может осложниться при переводе модели из вида в модель.
Любые мысли по вышеупомянутым двум вопросам, а также по поводу любой клиентской / серверной инфраструктуры будут оценены.
P.S. немного информации о моем приложении:
- одна страница веб-приложения отображает структуру компании (отделы, отделы и т. д.) в виде дерева и позволяет пользователю щелкать и редактировать различные узлы, а также перетаскивать узлы, чтобы изменить их местоположение.
- на другой странице отображается текущее состояние склада (для каждого склада - сколько у него товаров, сколько машин в настоящее время работает на этом складе и т. Д.)
- (еще несколько страниц, которые в основном отображают данные и позволяют редактировать ...)
спасибо
Jhonny