Silverlight 陷入MVVM架构问题

Silverlight 陷入MVVM架构问题,silverlight,mvvm,Silverlight,Mvvm,我正在使用MVVM模式构建一个silverlight应用程序,但我不明白这里缺少了什么 ViewsProject(Silverlight应用程序)包含用户控件和页面。参考ViewModelsProject ViewModelsProject(Silverlight类库)包含视图的后端代码。业务逻辑也将驻留在这里。它将参考该项目的模型 ModelsProject(Windows类库)包含:本地数据库的Ado.net实体模型和基于实体模型构建的WCF RIA DomainService。它的目的是从

我正在使用MVVM模式构建一个silverlight应用程序,但我不明白这里缺少了什么

  • ViewsProject(Silverlight应用程序)包含用户控件和页面。参考ViewModelsProject
  • ViewModelsProject(Silverlight类库)包含视图的后端代码。业务逻辑也将驻留在这里。它将参考该项目的模型

  • ModelsProject(Windows类库)包含:本地数据库的Ado.net实体模型和基于实体模型构建的WCF RIA DomainService。它的目的是从本地数据库获取数据,实体通过域服务公开

  • Web项目:包含ViewsProject的xap

  • 到目前为止,我做的一切都正确吗?如果是,请帮助我理解:

    如何调用 ViewsModel中的域服务 项目如果我引用 ModelsProject,我得到的错误是 只能使用silverlight项目 补充。 如果我将ModelsProject更改为 silverlight类库项目 那么我不能添加的实体模型
    我的数据库。

    将视图与视图模型分离没有多大意义。我以前见过这种方法,但视图模型(至少在我看来)代表了比域模型更“适合视图”的数据抽象。ViewModel提供了一个间接层,允许在模型不做相同操作的情况下更改表示,但它只不过是一种适配器/控制器的混合,与视图共存

    但要回答你的问题

    通常,您将让您的SL项目通过从视图到viewmodel的命令来调用域服务(通常是web服务)。然后,viewmodel命令将直接或间接地进行web服务调用。此web服务不需要是SL类库,因为它位于远离客户端的web服务器上

    我感觉到你在思考一个桌面应用程序。请记住,SL项目在客户端运行,而您的数据不在客户端。要连接所有这些,你需要一些远程服务来获取数据。因为数据不在客户机上,所以常规的库引用是不好的


    我算出了答案

    将ViewModelsProject(Silverlight类库)更改为Silverlight应用程序类型。 选中在项目创建期间启用Ria服务

    在视图模型类中,使用ModelsProject添加。 编译ViewModelsProject


    WCF Ria服务的所有方法都将出现在代码中。

    对于要使用WCF Ria服务的客户端项目,您需要在项目属性中设置WCF Ria服务链接

    对于使用WCF RIA服务时项目架构中的模块化和分离, 您可以使用WCF RIA类库


    MVVM并不要求您需要在不同的项目中分离模型、视图、模型和视图。这些可能都存在于不同文件夹中的同一个项目中,并且仍然可以实现MVVM设计。该解决方案预计会随着时间的推移而大大扩展,因此为了避免将来的麻烦,我决定将解决方案分解为程序集,而不是文件夹。首先让它变得简单,然后让应用程序开始工作。然后,您可以考虑在多个项目/程序集之间进行分布。我同意Aaron的观点。现在模型和视图模型位于同一个部件中。问题:我如何使用通过RIA webservice公开的数据模型?我认为您不理解我的问题。我的问题很简单:我如何从silverlight应用程序中使用WCF Ria服务?也许可以更改问题的标题,但这还不清楚。丹尼尔的回答可能就足够了。