Silverlight设计模式的性能 - 非常丰富的客户端UI

时间:2009-10-08 08:41:11

标签: silverlight performance architecture

this对Silverlight架构的初步调查后,我有一些新要求需要考虑。

我们希望我们的Silverlight客户端用户界面图形化很重,具有以Widget风格方式排列的GIS界面,多个图表,仪表和数据网格。新的小部件将由用户动态生成。

假设用户想要从预先填充数据的现有数据网格小部件动态创建图表小部件。在我看来,如果我们在服务器上使用带有视图模型的MVVM模式,当所需数据已经位于客户端时,这将导致不必要的回调回家。

现在显然服务器需要知道客户端上的这个新图表小部件,但是如何在客户端中首先创建小部件(使用现有的客户端数据),然后通知服务器有关新的更改?

在我们的Intranet中,客户端和服务器之间的网络链接不是特别好,因此性能至关重要。

从我最初的研究看来,常见的Silverlight架构模式需要将尽可能多的业务逻辑推回服务器。我理解这个的原因,但担心它会真正损害我们的应用程序的可用性。

是否有解决此问题的特定设计模式? MVVM,Prism或其他常见的Silverlight架构是否支持“客户端绑定”?

我试图描述的是否有更正式的名称?

我对Silverlight和MVVM等设计模式都很陌生,所以如果我的任何假设都错了,请纠正我。

1 个答案:

答案 0 :(得分:2)

MVVM模式用于分离关注点。它没有定义您获取数据的方式和位置。

模型,是数据。它可以是您从任意来源获得的数据。在Silverlight中,获取数据的最常用方法是通过Web服务(SOAP / REST)。但您的模型可以是来自任何地方的任何数据。

视图模型只是另一个可能实现INotifyPropertyChanged接口的类(因此您可以自动更新绑定)。此类是视图数据的抽象。让我们假装它有一个名为“FirstName”的字符串属性。

视图是您的UI(SL中的用户控件)。您可以在此处将绑定设置为ViewModel。 IE,。

在设置视图DataContext时,视图和视图模型会放在一起。 myView.DataContext = new MyViewModel();根据您的设置方式,有很多方法可以设置DataContext。

Prism只是一个帮助在WPF / SL中编写解耦应用程序的框架。它不强制使用任何UI模式(即MVP / MVC / MVVM)。它带来的是一堆类可用于协助MVVM开发,例如中介(EventAgggregator)和依赖注入容器(Unity)。

如此充分的离题...我建议,你有一个网络服务,你可以获得所有的数据。您的SL应用程序将获得该数据(最像是在视图模型中调用Web服务)。该数据现在存在于客户端,您可以将VM设置为在视图中绑定到此数据。