2

我开始使用 RIA 服务和 SilverlightFx 在 Silverlight 中编写应用程序。现在这个应用程序是一个相当大的一个有很多控件之间的交互。

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

  1. 选择.Net Ria 和 SilverlightFx 好不好?(我的观点是......它不会很快投入生产。而且由于它是一个大的,一旦框架被正确理解,使用框架将有助于单元测试并节省开发时间。)

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

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

4

2 回答 2

2

前言回答的注意事项 - 我是 Silverlight.FX 的作者,也是 RIA 服务的架构师......所以在回复中考虑偏见:-)......

我写了两篇关于两者结合的博文,您可能会觉得有帮助:这里这里。这些涵盖了使用 DomainContext 的基本视图模型方案和使用 Silverlight 单元测试框架的视图模型的基本单元测试。

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

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

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

Silverlight.FX 中还没有此功能,但有望很快推出。我最近在我的 TechEd South Africa 演讲中展示了这种交流方式 - 查看幻灯片和代码以实现这一点:http ://www.nikhilk.net/TechEd09-South-Africa-Samples.aspx 。

希望有帮助。

于 2009-08-25T18:40:12.417 回答
0

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

  1. 从 SL3 界面进行单元测试意味着您必须有一种方法来模拟用户输入,有很多方法可以做到这一点。最简单的方法之一是 MVVM 方法,从而模拟视图模型的输入。对 SL3 的 prism 支持将与 WPF 4.0 的发布同时进行。prism 目前确实支持 SL3,但不支持导航框架,因为它与 prism 的区域导航有很多冲突,但它们执行不同的任务并且它们不重叠功能。

    1. 如果您有用户控件“S”和“R”,那么它们将共享一个公共数据源,即视图模型,因此视图模型中的属性可以相互通信,这主要发生在触发 OnPropertyChanged 事件时。或单击按钮,然后使用 prism 的命令,您可以将按钮控件单击方法连接到视图模型中的方法。

    2. 这实际上取决于很多事情,例如并发性,因为来自 SL3 的所有调用都是异步的,这意味着您可以在同一个域上下文中一次拍摄 3 个查询,以及您希望为 WCF 服务创建多少连接。我没有充分使用 RIA 来理解您所选择的含义,所以我不能给您一个确切的答案,但一般规则是将 db 连接保持在最低限度(域上下文回收不会自动转换为更少的连接,因为 WCF 是无国籍,除非另有设计)

于 2009-08-16T08:11:09.330 回答