为什么我应该在内置riaservices功能时使用MVVM

时间:2010-06-09 19:20:04

标签: silverlight mvvm wcf-ria-services

我很难理解为什么MVVM真的是在riaserivces中实现的好模式,对我来说它只有麻烦,它只是添加了我必须编写的另一层。我知道我可以改变UI,但实际上我不需要。相反,我将无法使用riaservices,datagrid,dataform开箱即用的功能,所有控件都需要一些实现。为什么它不能简单?

真的没办法让MVVM自动设置“IsBusy”和所有数据形式编辑功能。这就像重新发明轮子一样,似乎我只能使用riaservices来更快地编写代码

2 个答案:

答案 0 :(得分:1)

有些人会问:“为什么我在破坏MVVM时应该使用RIA服务?” :-)我不足以让RIA服务专家回答您关于IsBusy的精确问题并保留MVVM的简单编辑功能,但请记住,MVVM和RIA服务现在都是大肆过山车的天堂,并且几乎任何博客或开发网站都会试图说服你为什么它们是自切片面包以来最好的东西。如果您认为不需要技术或模式,请不要使用它。

那说:在我看来,RIA服务真正要做的是让你在页面上打一个DataGrid,然后让你用它来查看数据库。这就是为什么几乎所有的样本就是这样做的,而且大多数都不会打扰MVVM,因为它会妨碍光滑的向导和拖放式开发,这是RIA真正发挥作用的地方。如果这就是你正在做的事情,没有MVVM的RIA可能更有意义,反之亦然。

答案 1 :(得分:1)

MVVM不会破坏RIAServices。它始终是关于如何实现模式的。请记住,MVVM是Model-View-ViewModel。 ViewModel执行繁重的工作,视图与模型绑定。

使用RIA + MVVM,ViewModel只处理RIA服务调用。它仍然可以使用RIA服务提供的模型并将这些模型绑定到视图。 IsBusy没有任何问题,这通常是你可以提出的视图状态。

为什么要将两者结合在一起?正是因为您不知道可能会发生什么变化以及测试和灵活性。我不了解你,我宁愿测试我的视图模型和逻辑,而不依赖于可用的服务和数据库。使用MVVM,View Model可以做到这一点 - 我可以存根“假”层,为我提供测试模型。这也意味着我可以构建代码并让设计人员设计即使我还没有制定服务或构建那部分。

一旦准备就绪,那么在生产版本中,我会在“真正的”RIA模型中连接并从那里开始。