Начало работы с пользовательским интерфейсом asp.net webforms для приложения c #, которое использует nHibernate - PullRequest
0 голосов
/ 25 января 2011

Привет
Я создавал бэкэнд моего приложения (используя nHibernate для доступа к данным).
До сих пор у меня было несколько простых веб-сервисов для манипулирования моими данными, но теперь мне нужно разработать веб-интерфейс для моего приложения (с использованием веб-форм).

Я смотрел на некоторые различные веб-фреймворки ( webformsMVP , spring.net web ), а также на некоторые клиентские JS-фреймворки ( knockout , angular ), и я не могу действительно решить, что будет лучше для меня, и как все это интегрировать.
Я надеялся получить от вас понимание, ребята.

Думаю, мне хотелось бы, чтобы мой общий рабочий процесс был примерно таким:

  1. Вид создан, вызывает его докладчик.
  2. Presenter связывается с бизнес-уровнем для получения информации (которая в свою очередь связывается с DAO и т. Д.)
  3. Presenter возвращает объект модели представления, который отображает представление.
  4. Пользователь манипулирует данными (возможно, используя некоторый AJAX для получения дополнительной необходимой информации)
  5. Просмотр отправляет модель представления измененных данных обратно в докладчик
  6. Presenter преобразует модель представления в сущность модели и отправляет ее на бизнес-уровень

    Теперь вот части, которые я нахожу хитрыми:

A. Как сопоставить объекты представления модели и модели
Я думаю, что я должен использовать ID права, чтобы извлечь неизмененный объект из DAO (который фактически хранит его в кэше 2-го уровня nHibernate), и внести изменения в него.
(Другой вариант - сохранить сущность, которую я в данный момент редактирую, в сеансе пользователя. Но я боюсь, что этот вид кэширования создаст двойственность с кешем nHibernate.)

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

department1.Employees.Remove(employee);
department2.Employees.Add(employee);

а вот так:

employee.MoveToDepartment(department2);

Боюсь, это может осложниться при переводе модели из вида в модель.

Любые мысли по вышеупомянутым двум вопросам, а также по поводу любой клиентской / серверной инфраструктуры будут оценены.

P.S. немного информации о моем приложении:
- одна страница веб-приложения отображает структуру компании (отделы, отделы и т. д.) в виде дерева и позволяет пользователю щелкать и редактировать различные узлы, а также перетаскивать узлы, чтобы изменить их местоположение.

- на другой странице отображается текущее состояние склада (для каждого склада - сколько у него товаров, сколько машин в настоящее время работает на этом складе и т. Д.)

- (еще несколько страниц, которые в основном отображают данные и позволяют редактировать ...)

спасибо
Jhonny

1 Ответ

0 голосов
/ 27 января 2011

Вы можете проверить Automapper для отображения вашей сущности. В качестве альтернативы вы можете написать свои собственные средства отображения сущностей и средства обновления сущностей. Затем вы можете инкапсулировать бизнес-логику, такую ​​как Move To Department, в свои классы сущностей.

Ваш подход звучит просто отлично, и я могу порекомендовать Webforms.MVP, так как это хорошая платформа для написания тестируемых приложений WebForms без развертывания собственной реализации.

...