如何在大规模业务应用程序中使用数据

时间:2011-08-24 12:15:00

标签: .net silverlight wcf

我只是想知道,从多层大规模应用程序中使用数据的最佳方法是什么。说实话,我仍然没有足够的经验来选择正确的方法。我们已经开始我们的项目,我们认为RIA服务将通过网络分发实体,起初我们对RIA很满意,但是在我们不得不发送某种复杂的DTO作为服务的响应并作为参数之后,问题就开始了。服务电话。

此时使用RIA服务似乎与框架斗争,我们决定在前端使用生成的客户端的原始WCF服务。我们试图这样做一个星期,这是一种积极的体验,但最后它也显示它的缺点,如客户端没有重新生成,一些类不可重用,视觉工作室不得不在客户端重新生成它们一次等等。

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

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

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

非常感谢您的回答,感谢您阅读此文本墙,并对缺少代码示例和链接感到抱歉。

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

2 个答案:

答案 0 :(得分:1)

黄金法则

  • 在表演确实存在问题之前不要做任何事情。

奖金规则

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

DTO不是对象,所以不要将它们视为两端。将它们转换为更有用的东西,而不是直接使用它们。

当效果确实存在问题时

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

答案 1 :(得分:1)

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