【问题标题】:How to consume data in large scale business application如何在大规模业务应用中消费数据
【发布时间】:2011-08-24 12:15:00
【问题描述】:

我只是想知道,从多层大型应用程序中使用数据的最佳方法是什么。老实说,我仍然没有足够的经验来选择正确的方式。我们已经开始我们的项目,认为 RIA 服务将通过网络分发实体,起初我们对 RIA 没意见,但是在我们不得不发送某种复杂的 DTO 作为服务的响应和作为参数发送到服务调用。

在这一点上,使用 RIA 服务似乎就像与框架打架,我们决定在前端使用原始 WCF 服务和生成的客户端。我们已经尝试这样做了一个星期,这是一种积极的体验,但最终它也显示出它的缺点,例如客户端无法重新生成,某些类不可重用,Visual Studio 必须在客户端重新生成它们一次再等等。

我已经开始寻找解决方案,并找到了一篇关于如何在运行时生成异步客户端的精彩文章。所以想法是将描述 WCF 服务的接口放在共享程序集中,然后使用自动生成(发出)的方法创建 WCF 客户端,以支持与服务的异步工作。从我所见,它已被证明是最好的解决方案,但我还没有足够的时间来发现它的缺点,因为......

新架构师加入了我们的团队,现在我们正在考虑使用他自己编写的 ServiceBus 实现。它看起来更加成熟,但它是围绕 DuplexPushService 构建的,我真的不知道它是否会像作者所说的那样具有可扩展性和健壮性。

我为什么要写这个? - 我只是想听一个成功地将模式或技术集成到最终解决方案中的故事,您使用什么样的技术来支持业务逻辑? 你能说说它的优缺点吗?如果您现在开始一个新的 Silverlight 项目,您会怎么做?

非常感谢您的回答,感谢您阅读这堵文字墙,也很抱歉缺少代码示例和链接。

所以真正的问题是如何在应该为大约 5 万人服务的 silverlight 应用程序中使用数据。

【问题讨论】:

  • 哦,伙计...我真的很喜欢这个讨论,但不幸的是,您的帖子中没有问题。 “如果您提出问题的动机是“我想参加关于______的讨论”,那么您不应该在这里提问。(非常欢迎您在我们的实时网络聊天中进行此类讨论。)但是,如果您的动机是“我希望其他人向我解释______”,那么您可能还可以。”...“对软件开发的专业讨论感兴趣的专家程序员,请向程序员提问。”通过 stackoverflow.com/faq#dontask
  • 话虽如此...我们将传统的 WCF 与 EF 结合使用,并且目前正在避免 RIA。该应用程序的第一个版本使用传统的 WCF 和传统的 POCO(无 EF)。
  • 我会考虑把这个问题重新组织成一个真正的问题。感谢您在评论中的回答:) 不过,在答案中提供更广泛的描述会很棒。您是通过电线传输实体,还是将它们包装在 DTO 中,我会很高兴了解更多细节。希望问题不会被关闭。

标签: .net silverlight wcf


【解决方案1】:

黄金法则

  • 在性能确实出现问题之前不要做任何事情。

奖励规则

  • 设计 DTO,以便每个用例只需要一次 WCF 调用(如果可能)。

DTO 不是对象,因此在任何一端都不要这样对待它们。将它们转换成更有用的东西,而不是直接使用它们。

当性能确实是个问题时

  1. 在 silverlight 应用程序中尽可能多地缓存
  2. 使用Local Storage 和同步来保持会话之间的数据。

【讨论】:

    【解决方案2】:

    类似于 JGauffin。我们采用 DTO 并将它们“引导”到继承 OnPropchange、DataErrorInfo 等的“模型”中。然后我们在 ViewModel 中使用它们。最纯粹的人会说我们的模型实际上是一个轻量级的 ViewModel,但我认为它们是模型。我们从 LINQ2SQL 中获取记录,并将它们转换为 CRUD 对象(因为我们曾经这样做过),然后通过一个普通的旧 SilverLight WCF 服务发送它。该 DTO 对象在所有属性指向的对象中成为我们的“.Source”(设置 Source.Property = value; 并返回 Source.Property; )。使用 EF,我们肯定不会使用 include,因为我们的关联,我们最终会进入递归循环,A 有一个 B,B 有一个对其父级的引用,它有一个 B.... 等等等等等等

    【讨论】:

      猜你喜欢
      • 2016-06-07
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多