gpt4 book ai didi

c# - 是否有用于处理 Internet 上的大型数据集的设计模式?

转载 作者:可可西里 更新时间:2023-11-01 08:10:48 24 4
gpt4 key购买 nike

我正在寻找一种设计模式来处理互联网上的大型数据集,并定期更新这些对象。我正在开发一个应用程序,它将一次在 UI 中显示数千条记录。此外,这些对象的各种属性都是暂时的,需要在客户端上更新,以使用户了解系统中这些记录的状态变化。我有一些如何解决这个问题的想法,但我认为可能有一个(或多个)设计模式可以处理这种类型的场景。

限制:

  • 客户端是用 Silverlight 编写的。
  • 对象本身并不是很大(大约有 15 个值类型和字符串属性),但是查询所有数据的开销很大。 15 个左右的属性包含来自各种来源的数据;没有巧妙的连接语句或索引会加速查询。我正在考虑在初始加载时只填充属性的一个子集,然后在用户放大给定的对象分组时填充更昂贵的细节。想想谷歌地图,但它不是街道和建筑,而是显示对象。
  • 我将能够限制正在更新的数千个对象的部分。但是,我需要用户能够“缩小”一个允许粒度更新到显示所有数千个对象的上下文。我想当它们离开足够的缩放上下文时,对象的更新将再次被禁用。

  • 关于如何解决全部或部分问题的想法?就像我提到的那样,我已经在考虑一些想法,但到目前为止,我没有整理出任何东西让我对这个项目的成功感到满意。

    编辑:

    我认为困难的部分实际上归结为两件事,我可能需要两种不同的模式/实践/策略:
  • 通过互联网加载大量记录(~5k)。
  • 通过 Internet 保持这些对象的子集 (~500) 更新到最新。

  • 有几种设计模式可用于其他一切。

    编辑 2:

    感谢您提供有关 Silverlight 中各种“推送”实现的链接。我可以发誓 socket 已从 Silverlight 中取出,但根据以下答案找到了 Silverlight 3 引用。无论如何,这对我来说真的不是一个大问题,而且我没有花太多时间研究,所以我正在从原文中编辑它。无论更新是在民意调查中还是通过推送,一般的设计问题仍然存在。很高兴知道我有选择。

    编辑 3:对推送技术的跟进。

    正如我怀疑 Silverlight WCF 双工实现是 comet-like push .这不会扩展,并且有很多关于它在现实世界中如何不扩展的文章。

    Silverlight 中的套接字实现有几个方面的缺陷。看起来它在我们的场景中将毫无用处,因为 Web 服务器可能位于任何不允许非标准端口的给定客户端防火墙后面,并且 Silverlight 套接字不会连接到 80、443 等。

    我仍在考虑以某种有限的方式使用 WCFduplex 方法,但看起来轮询将成为答案。

    编辑 4:找到解决一半问题的模式

    我找到了 this pattern (PDF) 它说明了使用迭代器模式从服务器检索数据页并将它们呈现为一个简单的迭代器。在 .Net 中,我想这将作为 IEnumerable 实现(示例代码在 Java 和 Oracle SQL 中)。我特别感兴趣的是异步页面预取,主要是缓冲客户端的结果集。使用 5k 个对象时,所有内容都无法同时显示在屏幕上,因此我可以使用一种策略,即不立即获取所有内容,但从 UI 中隐藏该实现细节。应用程序将检索的核心对象位于数据库中,然后需要其他查找来完全填充这些对象。这种方法似乎是将一些数据快速发送给客户端的好方法。

    我现在正在考虑使用这种模式 + 某种代理对象模式,它监听结果集的增量并相应地更新对象。在这里可以采取几种策略。我可以预先加载所有数据,然后发送更改的增量(这可能需要子系统中的一些额外代码来提供更改通知)。这可能是我的第一种方法。我还在找。感谢到目前为止的所有想法。

    最佳答案

    proxy design pattern是有助于将数据从一个点传输到另一个点的模式。代理设计模式将允许您将远程对象视为本地对象。

    关于c# - 是否有用于处理 Internet 上的大型数据集的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670332/

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