gpt4 book ai didi

wcf - 在使用 WCF 进行对象图序列化时,是否有一些最佳实践?

转载 作者:行者123 更新时间:2023-12-04 06:44:50 25 4
gpt4 key购买 nike

我将 WCF 与 Entity Framework v4 和 POCO 实体一起使用。我们的实体拥有大量相关实体。一个对象可以有许多不同类型的子对象,然后又可以有许多不同类型的子对象。例如,一辆车有 1 个或多个驱动程序。每个司机有0个或多个 child 。然后每个 child 有 0 个或多个 friend 。 (可怜的 child ,有 0 个 friend )。这个例子有点愚蠢,但你明白了。

如果客户想要一辆车,那么将汽车与司机名单一起归还是有意义的。填充和返回每个驱动程序的 child 可能有意义也可能没有意义。而且问题还在继续。

因为您的数据库几乎总是仅由互连的表(导致互连的实体)组成,我们应该序列化多少对象图?

  • 在 SOA 方面是否有最佳实践?
  • 应该只是直接相关的实体吗?
  • 是否有某种命名约定?
  • 我们是否应该使用不同的方法,例如 GetCar() 和 GetCarWithDrivers()?
  • 最佳答案

    我认为没有任何经验法则,我不喜欢返回客户端不需要的数据的想法。您的服务设计应该由提供给客户的业务功能驱动。因此,如果您希望客户端经常只需要 Car,您应该定义将只返回 Car 的操作。如果客户端有时还需要 Car with Drivers,您应该定义第二个操作,该操作将返回 Car with Drivers。

    如果您的服务主要作为高级 CRUD 工作,那么至少返回第一级相关对象是合理的,但这也只是基于提供的功能的概括。另一种有用的技术可以是聚合。在没有父实体的情况下,聚合相关实体没有意义。例如 Car with Driver 不是聚合的,因为 Driver 是单独的实体。但是 Invoice 和 InvoiceLine 是聚合的,因为你不能在没有 Invoice 的情况下定义 InvoiceLine。在这种情况下,返回带有所有 InvoiceLines 的 Invoice 会很有用。同样,这并非在所有情况下都是如此。我从事审批应用程序,其中允许用户仅查看和批准来自其成本中心的 Invoice header 和 InvoiceLines,因此如果 Invoice 包含 50 多个 InvoiceLines 但用户只能看到单行,则没有理由将它们全部转移。

    考虑一下您的服务提供的功能,传输对象所需的复杂性会更加清晰。

    关于wcf - 在使用 WCF 进行对象图序列化时,是否有一些最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3864212/

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