Попытка определить, подойдет ли NHibernate или что-либо еще для доступа к веб-сервису. - PullRequest
0 голосов
/ 14 июля 2010

Вот ситуация.

У нас есть стороннее промежуточное программное обеспечение (использующее SQLServer в качестве серверной части), с которым мы взаимодействуем с помощью ссылки на службу HTTP и обмена сообщениями в стиле XMLRPC.

Служба всегда возвращает набор данных в качестве результата любых команд, которые что-то возвращают. Существует способ передать встроенный оператор SQL в службу.

Итак, у нас нет прямого доступа к базе данных.

Я пытаюсь изолировать этот сервис слоем, который упростил бы доступ. Я думал об использовании ORM, как NHibernate.

Этот сценарий поддерживается NHibernate или NH всегда нуждается в прямом доступе к базе данных?

Если у вас есть какие-либо другие предложения, у меня все уши открыты ...

Ответы [ 2 ]

1 голос
/ 15 июля 2010

Если я вас правильно понимаю, вы вынуждены использовать стороннее промежуточное ПО - но с этим нелегко иметь дело?

Я никогда не использовал NHibernate, поэтому не могу за это говорить.

Звучит так, будто вы хотите добавить новый "слой обслуживания" (если не хватает лучшего термина) сверху, с которым легче иметь дело; шаблон фасада приходит на ум (хотя он часто используется для объединения различных и разнородных интерфейсов под единой связной точкой интеграции).

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

Я бы также предложил превратить этот новый слой в пару подразделов.: вы не хотите создавать новый слой, тесно связанный с промежуточным программным обеспечением (или базой данных) - используйте Внедрение зависимостей , чтобы изолировать внешний фасад от конкретной реализации и поддерживать слабая связь .Таким образом, если промежуточное ПО исчезнет, ​​вы не окажете непосредственного влияния на потребителей нового уровня обслуживания, который вы создали.

И наконец, помните о Принципе разделения интерфейса (ISP)проектирование новых внешних служб.

Бесплатный хостинг изображений http://www.freeimagehosting.net/uploads/89e5a8a47a.jpg ( Изображение в полном размере здесь )

0 голосов
/ 15 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...