Уровень обслуживания: 1 экземпляр на приложение или на модель представления? (Или: предоставление каждой модели представления собственного контекста данных) - PullRequest
0 голосов
/ 22 июня 2010

Я создаю приложение C # /. Net 3.5, используя три уровня: пользовательский интерфейс (просмотр / просмотр моделей), сервис и доступ к данным / постоянство.

Сервисный уровень : Каждый экземпляр сервисного уровня связан с уникальным экземпляром персистентности.Сервисный уровень ссылается на персистентный уровень через интерфейс.

Уровень персистентности : В настоящее время интерфейс уровня персистентности имеет единственную конкретную реализацию, в которой используется (Свободно) NHibernate.Все экземпляры персистентного уровня используют один и тот же ISessionFactory.Каждый экземпляр персистентности открывает собственную ISession, используя эту фабрику.

Цель : для каждой модели представления работать в своем собственном контексте данных (он же ISession), как предложено Ayende Rahien .Чтобы это произошло, мое приложение предоставляет каждой виртуальной машине свой собственный экземпляр уровня сервиса (который, в свою очередь, имеет свой собственный экземпляр уровня персистентности).Для меня наличие такого количества экземпляров одного и того же класса сервисного уровня пахнет подозрительно.

Вопросы : Это хороший подход?Будет ли лучше отказаться от одного экземпляра службы на виртуальную машину и перейти к одному экземпляру службы на приложение?Если да, то как мне это сделать, и при этом дать каждой виртуальной машине свой собственный контекст данных?

Спасибо,
Бен

1 Ответ

0 голосов
/ 23 июня 2010

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

...