2011-01-25 4 views
1

Hello Я хочу создать свой первый проект nhibernate. Это будет переход от проекта winform, связанного со старой dataacess без сильного отображения orm. Проект довольно большой, поэтому я хотел бы иметь хорошую архитектуру с самого начала.nhibernate architecture

у меня будет некоторый слой:

  • Repository: Создать сессию с NHibernate
  • Модель: Объект боб, в основном он состоит из свойств геттер/сеттер с тем же именем в базе

Но мне понадобятся некоторые советы, как вы будете обрабатывать операции? Если я хочу создать элемент, я должен получить доступ непосредственно к nhibernate из кода? Или я должен создать уровень бизнес-логики?

В основном я нашел эту простую архитектуру для бизнес-уровня. http://www.codeproject.com/KB/architecture/NHibernateArchitecture.aspx Что вы думаете об этом?

Другой вопрос, это программа с сильной проверкой (домен очков), где должна быть проверка? в проекте winform или в бизнес-слое?

ответ

4

Трудно сказать и дать полезные советы, не видя проекта и его актуальные проблемы. Это клиент-серверная архитектура, например? Что вы подразумеваете под «довольно большим»? Слишком много разных проектов, чтобы соответствовать всем правилам.

Вообще:

  • В большинстве случаев, это очень полезно иметь бизнес-слой.
  • Проверка должна быть в бизнес-слое. Существует также проверка NHibernate и некоторые другие рамки проверки, которые позволяют декларативную проверку.

Самая распространенная ошибка, которую я вижу при запуске с NH, заключается в том, что люди не понимают упорство невежества. Это означает, что вы должны написать свою бизнес-логику, не обращаясь к базе данных или NH. Изменения производятся на объектах, они не являются «временно», пока они не будут явно применяться к базе данных, они неявно сохраняются при совершении транзакции. Это оказывает огромное влияние на код. Во многих случаях нет «Store» или «Update» или что-то еще.

+0

довольно большой означает, что команда из 5 разработчиков будет потенциально развиваться. Они работают над несколькими проектами, но я считаю, что каждый год в проекте работает 2 человека. Это программное обеспечение для продавцов очков. У нас есть только 2 слоя. Один для IHM, один для DataAccess, и мы не будем сегментировать больше слоев. В основном это будет базовая CRUD-логика или конкретный SELECT или UPDATE (например: SELECT * FROM table INNER JOIN table2 и т. Д.). Структуры не являются сложными. но существует сложная логика ex: если исправление glas имеет Addition> 0, это особый тип glas (прогрессивный) –

+0

Пример проблемы.У нас очень сложная форма, которая позволяет выбрать весь предмет продажи (все части очков или объектива) с исправлениями и т. Д. Это вкладка, каждая вкладка является типом продукта. Если мы нажмем на некоторые параметры, некоторые элементы управления исчезнут и т. Д. Трудно поддерживать –

+0

и последний ответ, это архитектура клиентского сервера. В вашем примере, когда я хочу создать элемент, это поле, заполненное в модуле winform (например: var item = new Item(); item.prop1 = ..; item.prop2 = ...; Item.Add (пункт);) ? или в бизнес-модуле (например: Item.AddNew (prop1, prop2), а в AddNew есть предыдущий код)? –

1

Взгляните на SharpArchitecture. Это очень хорошая структура для NHibernate. Очень хороший пример того, как подключить все.

http://www.sharparchitecture.net/

+0

Я не знаю, но, похоже, он предназначен для ASP.net. Я не вижу никакого отношения к ASP в вопросе. –

+0

Основным проектом является полный проект winform –