инфраструктура фильтрации для приложения Fluentnhibernate более 3-х уровней - PullRequest
1 голос
/ 10 июля 2009

У меня есть 3-уровневое приложение, которое должно быть способно выполнять фильтрацию данных в соответствии с запросами пользователей, я работаю с fluentnhibernate для управления большинством моих сущностей.

У меня вопрос, как я могу передать фильтр от клиента к серверу (через wcf).

классы фильтра fn не сериализуемы.

Любое решение?

1 Ответ

1 голос
/ 11 июля 2009

Вкратце: создайте сериализуемый объект, который содержит спецификацию фильтра. Для простых фильтров перечисление должно работать нормально. Затем в вашей службе WCF сопоставьте эту спецификацию фильтра с тем, что понимают нижние уровни приложения.

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

Некоторые приложения, которые я видел, имеют несколько уровней, каждый со своими собственными типами данных: одно для пользовательского интерфейса, одно для логики проверки в пользовательском интерфейсе, одно для передачи данных между клиентом и службой, одно для бизнес-логики в домене на сервере, и один для постоянства. Это может показаться экстремальным, но это означает, что объекты могут должным образом отражать потребности каждой конкретной проблемы.

Например, вам может потребоваться поставить под угрозу ваши типы данных, чтобы заставить ваши объекты сериализоваться через границы сервиса. Использование здесь объектов, отличных от тех, которые используются в слоях пользовательского интерфейса и бизнес-логики, скрывает любое уродство.

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