Я разрабатываю веб-сервис с использованием NHibernate, WCF и Oracle 11g R1.Веб-сервис довольно прост: он отображает DTO в POCO и выполняет с ними различные операции CRUD в зависимости от вызванной операции.У каждой сущности есть свой набор методов CRUD - это временно, но пока необходимо.
Я ищу информацию о хорошем шаблоне репозитория, который теперь будет поддерживать этот сервисный уровень 1: 1 CRUD.и не быть полностью выброшенным, когда API должен стать более устойчивым.Прямо сейчас потребители будут обновлять объекты, используя эту услугу «по частям», но позже эти операции станут более надежными.Т.е. сервисная операция будет работать с более чем одним объектом.
Итак, в качестве примера у меня есть объекты A, B и C. Для A, B и C будут выполняться сервисные операции CRUD. В настоящее время, когдапотребитель работает с A локально, чаще всего он также работает с B и C. Когда он использует сервис для взаимодействия A, B и C, ему нужно сделать три отдельных вызова сервиса.Большая часть бизнес-логики в настоящее время находится на потребителе, но когда он переходит на уровень обслуживания, будет создана операция службы, чтобы она могла работать с A, B и C за один вызов.
Я выполнил довольно много поисков по шаблону Repository и NHibernate (и WCF), поэтому я прочитал:
http://daniel.wertheim.se/2009/10/21/nhibernate-hbmnhibcontext-fluentnhibcontext/ Управление сессиями NHibernate в приложении WCF http://davybrion.com/blog/2008/06/managing-your-nhibernate-sessions/ http://davybrion.com/blog/2009/12/using-nhibernate-in-your-service-layer/ http://jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/
И куча других.Две основные вещи, которые я хочу достичь:
- Одна ISession на запрос
- Одна ITransaction на запрос
Я подумал, что имеет смысл иметь репозиторийдля каждой сущности время от времени, в конце концов, может быть добавлен некоторый тип совокупного корневого репозитория, когда операции службы становятся более сложными.Будет ли это вообще необходимо?
Спасибо.