具有.net Ria服务和SilverlightFX的Silverlight应用程序

时间:2009-08-15 18:59:03

标签: silverlight silverlight-3.0 mvvm wcf-ria-services silverlight.fx

我开始在Silverlight中使用RIA服务和SilverlightFx编写应用程序。  现在这个应用程序非常庞大,在控件之间有很多交互。

据估计,它将拥有大约60-70个用户控件。现在我的问题是......

  1. 选择.Net Ria和SilverlightFx是否合适? (我的观点是......它不会很快投入生产。因为它是一个很大的使用框架将帮助单元测试并在框架被正确理解后节省开发时间。)

  2. 阅读完博客后,我不太清楚SilverlightFx如何处理用户控件之间的交互。例如,我有一个用户控件(比如“S”),它具有搜索功能...自动完成和所有...现在我有另一个UserControl(说“R”)显示搜索结果。显示结果面板可以用于搜索用户控件或另一个用户控件(Say F),它提供特定类别的所有项目。我无法将搜索和选择类别归为一个用户控件。那怎么办呢? 如果我创建不同的ViewModel,它们将如何互相交流?

  3. 在每个ViewModel中创建域服务上下文或在整个应用程序中使用单个服务上下文是否更好?

2 个答案:

答案 0 :(得分:2)

注意前言答案 - 我是Silverlight.FX的作者,也是RIA Services的架构师...因此在回复中考虑偏见:-) ...

我做了两篇关于你可能会发现有帮助的组合的博客文章:herehere。它们使用DomainContext和使用Silverlight单元测试框架对视图模型进行基本单元测试来涵盖基本视图模型场景。

Silverlight.FX提供的不仅仅是图形交互。从网站(http://projects.nikhilk.net/SilverlightFX):

  • 应用程序模型 - SilverlightFX 具有更丰富的Application对象 提供服务模型,IoC 容器,支持主题,查看 型号(M-V-VM),导航和MVC, 其他各种功能。
  • 用户界面组件 - SilverlightFX 提供了一小组增强功能 控制,支持表格和 Windows,主页,如容器, 布局控件和数据绑定 控件。
  • 声明性观点 - SilverlightFX提供了一个框架 写作行为,行动, 触发器和命令,以及 提供了一套开箱即用的功能 的实施方式。
  • 效果和 过渡 - SilverlightFX提供 程序动画框架 能够实现补间和 插值和缓和行为。 此外,它提供简单但 广泛适用的动画 可以作为效果和 过渡到标准控件 完全陈述的方式。

跨视图模型处理通知的方法是使用某种事件聚合器模式,允许视图模型以解耦方式发布和订阅事件。

此功能尚未在Silverlight.FX中使用,但预计很快就会进入。我最近在TechEd南非演讲中展示了这种沟通方式 - 查看幻灯片和代码以实现这一点:http://www.nikhilk.net/TechEd09-South-Africa-Samples.aspx

希望有所帮助。

答案 1 :(得分:0)

嘿那里,首先我不知道除了图形交互之外SLFX是否提供任何有用的功能,我建议你看看prism是否有适当的MVVM集成以及在你的设计中正确使用Regions,然后进行通信区域(简单来说,用户控制,但加载时更有动态)

  1. SL3界面的单元测试 意味着你必须有办法 模拟用户输入,有相当的 有几种方法可以解决这个问题。其中一个 最容易的是MVVM方法和 从而模拟输入到 视图模型。棱镜支持SL3 将与释放合作 WPF 4.0。棱镜目前的确如此 支持SL3只是没有导航 框架,因为它与很多人发生冲突 棱镜的区域导航,但他们 执行不同的任务和他们 不要重叠功能。

    1. 如果你有usercontrols“S”和“R”那么,他们都会分享一个 通用数据源,是 viewmodel,因此属性 在viewmodel中可以进行通信 相互之间,这种情况经常发生 当OnPropertyChanged事件发生时 被解雇。或点击按钮,然后 使用棱镜的指挥,你可以 连接按钮控件单击方法 到viewmodel中的方法。

    2. 这真的取决于很多事情,例如并发性,因为 来自SL3的所有呼叫都是异步的, 意思是你可以拍摄3个查询 同时在同一个域名上 上下文,以及有多少连接 您想要创建到您的WCF 服务。我没有足够使用RIA 理解的含义 你有选择,所以我不能给你 确切的答案,但一般 规则是保持数据库连接 最小(域上下文回收 不会自动转换为 自WCF以来连接较少 无国籍,除非另有设计)