【问题标题】:WCF Service call to multiple rows. How to architecture it?WCF 服务调用多行。如何架构它?
【发布时间】:2010-12-22 13:39:02
【问题描述】:

假设我有一个场景,我有一个服务负责检索给定 ID 的单个产品的价格,另一个服务给我它的当前库存位置。

我只查看一种产品没关系,但我有 60 种产品的列表页面呢?在这种情况下我该怎么办?按产品调用服务产品以检索其当前价格和库存位置?

我认为这会非常缓慢并且会耗费大量资源。但是我该怎么做才能让它看起来不错,同时又有性能呢?

目前,我们在数据库中产品旁边的列中保存了这些信息。这些价格和库存列由 sql 服务更新,该服务会在必要时对其进行更新,因此当我需要同时获取大量产品的价值时,我只需要再选择两列。它真的很快,但现在我们有更多的系统需要这些信息,我想将所有这些东西转换成一个服务。

非常感谢!

【问题讨论】:

    标签: wcf performance architecture loops


    【解决方案1】:

    嗯,你总是可以有多种服务方法:

    • 已有的,检索单品,单品价格
    • 创建一个新的服务方法,该方法将获取产品 ID 列表,并返回产品对象列表 - 或包含产品和价格的新 DTO(数据传输对象)

    这样,您既可以让当前用户满意,也可以做一些事情来提高批处理请求的工作效率。

    【讨论】:

    • 我想到了marc_s,但在我看来它不是很“SOA”,你懂我的意思吗?我知道这很奇怪,但看起来并不好。可能我的心态不对。但是,假设我会这样做。调用批处理服务后,我必须将从服务返回的数据与我拥有的其余数据合并,而且它也不好闻。你听起来如何?非常感谢,伙计。
    • 我不同意 - 无论哪种方式,如果您必须检查 60 种产品的价格和产品信息,这将是一个循环或什么的。我不明白那个额外的服务方法应该如何“不是 SOA”......
    • 我知道这是有道理的,但我就是不喜欢它...eeheheheh 我想这是我的心态。你对合并有什么看法?你会怎么做?再次感谢。
    • 我不完全理解你的“合并”问题部分......合并在哪里,为什么和什么?你不能让你的服务返回你需要的所有信息吗?如果不是 - 好吧,是的,那么你必须以某种方式将来自服务的信息与其他信息合并 - 这完全不依赖于 WCF 或你的服务设计......
    【解决方案2】:

    您的服务方法可以采用一组 ID 吗?并返回一个值数组?这样,如果你想要一条记录,你的数组只有 1 项,如果你想要更多,你只需用多个值填充数组?

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 2018-01-31
    • 2011-07-02
    • 1970-01-01
    相关资源
    最近更新 更多