В многоуровневом приложении клиенту разрешено отправлять свои собственные выражения linq на сервер? - PullRequest
3 голосов
/ 25 августа 2009

Обоснование:

Критерии HQL и NH являются специфическими конструкциями NHibernate и как таковые являются подробностями реализации DAL на стороне сервера. Я не хочу, чтобы они «просачивались» на сторону клиента. Таким образом, наша клиентская часть предоставляет LINQ-выражения для обработки сервером.

Мне кажется законным, однако некоторые думают иначе, и поэтому я хотел бы знать, почему.

Спасибо.

1 Ответ

3 голосов
/ 27 августа 2009

Аргумент против принятия выражений от (или предоставления IQueryable<> клиентской стороне) заключается в том, что он допускает не-клиентскую логику, такую ​​как фильтрация и объединение, в «неправильном» месте. Если клиент выставляет неверные данные, теперь у вас есть два способа проверки: логика на стороне клиента и логика DAL. По сути, это слишком просто, чтобы не разделять ваши проблемы.

Тем не менее, бывают случаи, когда осознанное и осторожное использование этих методов может улучшить ваше приложение. Например, использование IQueryable<> является отличным способом поддержки сортировки и разбиения на стороне клиента (пропустить / взять), которые выполняются сервером эффективно, а не в наборе результатов. Встречный аргумент в том, что вы должны просто указать параметры сортировки и разбиения в DAL.

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

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