由于明显增加了编码时间,因此刚开始使用breeze.js,即设法在Javascript中直接从服务器访问模型数据(我在这里是新手,所以显然还没有!)。

过去,我使用stock ajax调用来获取数据/将数据发布到服务器,并且过去,我使用了几种不同的客户端工具来提供一些查询本地数据的帮助,例如jLinq

我的问题是这个。使用Java本质上具有完全模型查询访问权限是否危险?我一定想念一些东西,因为它看起来像是一个经过深思熟虑的工具。过去,我至少控制了可以通过后端查询过程发送给客户端的内容,并再次使用诸如jLinq之类的东西,我可以过滤数据等。我还可以了解获得直接查询/没有重复的本地模型问题,那么是否有人可以对此提供一些见识?

谢谢!

编辑
显然我不是唯一的一个,但是我猜测会有一个合理的响应-也许限制使用DTO方法或其他方法请求的数据? The other question posted is here

最佳答案

暴露完整的业务模型可能很危险。允许不加限制地查询要公开给客户端的那部分模型可能很危险。无论您提供的是易于查询的API还是难以查询的API,都是如此。

这就是为什么我们的团队在构建服务时要谨慎。

您应该只公开客户端应用程序需要的类型。如果要限制对类型的授权实例的访问,则可以编写精心规定的不可查询服务方法。 Breeze 可以称他们为好。您不必为每个请求使用Breeze查询工具。您仍将受益于缓存,相关实体导航,更改跟踪,验证,保存 bundle ,缓存查询,脱机支持。

重复:服务方法不必返回IQueryable。即使它们确实返回IQueryable,您也可以轻松编写service方法以将查询结果限制为仅授权用户查看的那些实体。

幸运的是,您可以在同一服务或协作服务中融合这两种方法。

Breeze 为您提供选择。明智地行使这些选择取决于您。到那里去设计适合您需求的服务。

09-30 16:32
查看更多