Вопрос

У меня есть трехуровневое приложение: 1-й уровень: БД SQL. 2-й слой: App Sever (dotnet) 3-й уровень: умный клиент wpf.

Я использую NHibarnate (свободно) в качестве источника данных для уровня сервера приложений. (Сервер приложений - 2-й уровень общается с БД с использованием NH)

Прикладной уровень общается с клиентом, используя WCF.

Полезно ли мне что-нибудь от использования NH - поскольку WCF не поддерживает отложенную загрузку NH (по крайней мере, это не выглядит так) и - если я использую статический объект сеанса - мне нужно сделать один экземпляр сервера единым параллелизм - в противном случае в NH все становится грязно, когда одновременно поступает более одного звонка. Если я открываю объект сеанса (NH) для каждого вызова и закрываю его в конце вызова - я теряю кэш 1-го уровня NHibarante ...

Итак - Вопрос в том, правильно ли я реализую NH? или это не должно быть эффективным в моем виде проекта?

Это было полезно?

Решение

Вы можете проверить uNhAddIns WCF project . Он использует сеанс для вызова, так как это рекомендуемый способ работы с WCF.

Вы правы, говоря, что нет никакой ленивой загрузки через WCF. Вам нужно заполнить граф объекта до нужного вам уровня и затем отправить его в путь. Если ваш сервисный уровень не ориентирован на объект, поведение может быть излишним. Это сложный вызов без большого контекста.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top