gpt4 book ai didi

jquery - 如何使用 MVC 和 WCF 进行客户端验证而不重复逻辑?

转载 作者:行者123 更新时间:2023-12-01 01:19:23 26 4
gpt4 key购买 nike

我可能正在寻找一个不存在的 chalice ,但它值得一试。对于初学者来说,以下是我们架构的快速概述:

  • 数据访问:通过以下方式与 SQL Server 交互的存储库类 Entity Framework
  • 业务逻辑:管理器类调用数据层并将数据映射到域模型
  • 域模型:代表我们域的 POCO
  • 服务库/服务外观:公开 POCO 的 CRUD 操作
  • 演示:ASP.NET MVC(v2,但如果需要,可以移至 v3 - 我们的项目仍处于早期阶段)

我们要解决的问题是如何自动创建客户端验证来处理基本问题,例如必填字段、最小和最大长度、数字范围等——只是您的基本第一道防线东西。

如果我们要在域模型 POCO 上使用 DataAnnotations(这听起来很吸引人),我们可以让 jQuery 的不显眼的验证为我们完成工作。为了使其工作,我们必须在服务层和表示层中引用域模型库,因为 DataAnnotations 不会通过 WCF 传递。不幸的是,我们需要在多个应用程序中重用 WCF 服务,如果我们走这条路,我们可能会产生版本锁定问题。

因此,我们不能在服务边界两侧引用域模型,并且我们不想将验证规则的定义移至表示层,因为 future 的应用程序可能会使用相同的服务,并且验证将被忽略。那里也需要。

这让我们寻找另一种方法来将通过 WCF 的域模型定义的验证规则(或验证元数据,如果您愿意)传递到客户端应用程序。

我知道这听起来像是我们想要鱼与熊掌兼得。如果没有合理的解决方案,我们就会硬着头皮重复验证逻辑。我认为这比紧密耦合我们的应用程序层更可取。

考虑到上述场景,您将如何处理客户端验证并仍然避免重复逻辑?

编辑:

感谢您迄今为止的想法。还有一个方面,我意识到在谈论 DataAnnotations 时我忘记了:我们研究了使用反射来获取注释并通过对单独服务的方法调用将它们返回,但这行不通,因为它们不是标记为可序列化,因此无法通过 WCF 返回。

最佳答案

WCF 不处理客户端验证,因为它无法了解服务另一端客户端的功能。如果您想做这样的事情,您需要:

  1. 将额外的函数写入您的 WCF 服务,使您的客户端能够以某种格式请求验证规则,然后使用一些自定义代码实现它们。

  2. 您的客户端需要实现自己的验证逻辑。

如果 WCF 能够像您想要的那样将验证规则传递给客户端,那么这将是一个 killer 级功能,但它就是不能。 :(

关于jquery - 如何使用 MVC 和 WCF 进行客户端验证而不重复逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6232131/

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