gpt4 book ai didi

linq - 在多层应用程序中,是否应该允许客户端将自己的 linq 表达式发送到服务器?

转载 作者:行者123 更新时间:2023-12-02 00:44:23 24 4
gpt4 key购买 nike

理由:

HQL 和 NH 标准是 NHibernate 特定的构造,因此它们是服务器端 DAL 实现细节。我不希望他们“泄漏”到客户端。因此,我们的客户端提供了 LINQ 表达式供服务器处理。

对我来说似乎是合法的,但是有些人不这么认为,所以我想知道为什么。

谢谢。

最佳答案

反对从客户端接受表达式(或将 IQueryable<> 暴露给)的论据是它允许非客户端逻辑,如过滤和连接发生在“错误”的地方。如果客户端公开了错误的数据,您现在可以检查两个地方:客户端逻辑和 DAL 背后的逻辑。从本质上讲,不分离您的关注点太容易了。

也就是说,在某些情况下,有意识和谨慎地使用这些技术肯定可以改进您的应用程序。例如,使用 IQueryable<>是支持由服务器而非结果集高效执行的客户端排序和分区(跳过/获取)的好方法。反对意见是您应该只在 DAL 中提供排序和分区参数。

最终使用对您的应用有意义的东西。如果你给自己太多的绳索而发现自己悬而未决,你总是可以在以后重构。

关于linq - 在多层应用程序中,是否应该允许客户端将自己的 linq 表达式发送到服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1330432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com