Jas*_*son 13 c# silverlight wcf design-patterns silverlight-3.0
我正在寻找一种通过互联网处理大型数据集的设计模式,并定期更新这些对象.我正在开发一个应用程序,它将一次在UI中显示数千条记录.此外,这些对象上的各种属性非常短暂,需要在客户端上进行更新,以使用户了解系统中这些记录的更改状态.我有一些想法如何处理这个问题,但想到可能有一个处理这种情况的设计模式(或模式).
限制:
关于如何解决这个问题的全部或部分的想法?就像我提到的那样,我已经考虑了一些想法,但到目前为止,我所做的一切都没有让我对这个项目的成功有一个很好的感觉.
编辑:
我认为困难的部分实际上归结为两件事,我可能需要两种截然不同的模式/做法/策略:
有几种设计模式可用于其他一切.
编辑2:
感谢Silverlight中各种"推送"实现的链接.我可以发誓套接字已从Silverlight中取出,但根据下面的答案找到了Silverlight 3参考.这对我来说真的不是一个大问题,而且我没有花太多时间研究,所以我正在编辑原始文本.无论是通过民意调查还是通过推送进行更新,一般的设计问题仍然存在.很高兴知道我有选择权.
编辑3:推动技术的后续行动.
我怀疑Silverlight WCF双工实现是类似于彗星的推送.这不会扩展,并且有很多关于它在现实世界中如何不存在的文章.
Silverlight中的套接字实现以多种方式瘫痪.看起来它在我们的场景中将毫无用处,因为Web服务器可能位于任何给定的客户端防火墙后面,不允许非标准端口,并且Silverlight套接字不会连接到80,443等.
我仍在考虑以有限的方式使用WCFduplex方法,但看起来轮询将成为答案.
编辑4:找到一个模式来解决我的一半问题
我发现这个模式(PDF)说明了使用迭代器模式从服务器检索数据页并将它们呈现为一个简单的迭代器.在.Net中我想象这将实现为IEnumerable(示例代码在Java和Oracle SQL中).我特别感兴趣的是异步页面预取,基本上缓冲结果集客户端.使用5k对象时,所有内容都不会同时出现在屏幕上,因此我可以使用一种策略,即不会立即获取所有内容,而是从UI中隐藏实现细节.应用程序将检索的核心对象位于数据库中,然后需要其他查找才能完全填充这些对象.这种方法似乎是一种快速将一些数据输出到客户端的好方法.
我现在正在考虑使用这种模式+某种代理对象模式,它监听结果集的增量并相应地更新对象.这里可以采取一些策略.我可以加载所有数据前期,然后发送变化的增量(这可能需要在子系统中一些额外的代码,以提供改变的通知).这可能是我的第一种方法.我还在寻找.感谢到目前为止的所有想法.
我对几个好的答案投了赞成票,但提出了一个解决方案,对后端数据进行了一些更改,并提供了一种从 Silverlight 检索数据的新方法。以下是为解决这个问题正在采取的措施:
这种模式还可以改进。我只能将增量发送到 Silverlight 进行更改。我仍然可以尝试使用某种推送技术。但这个解决方案为我提供了一个 Web 服务调用,可以返回各种情况的数据。轮询也非常简单,只需一件事即可完成所有数据检索。没有很多活动部件。这通过相同的机制在初始数据加载期间和轮询期间处理对象状态更改。这似乎也可以很好地扩展。初始调用似乎是最昂贵的,后续调用运行得越来越快。我认为这是因为每次通过时保留在后端的数据变得越来越小。
对于我在此处发布的这一实施方式,我仍然有一个问题。
感谢您的所有建议。虽然我没有听取所有建议,但有几个想法要么直接帮助了我,要么让我思考如何实现这一目标的不同路径。
| 归档时间: |
|
| 查看次数: |
2707 次 |
| 最近记录: |