1

我正在构建一个应用程序。我正在 MVVM Light 的帮助下创建 Silverlight 4 客户端。我正在从 WCF 服务获取数据。至少,这是计划。

在 WCF 服务中,我定义了我需要在我的应用程序中使用的“实体”。当我在 Silverlight 客户端中添加对我的 WCF 服务的引用时,Visual Studio 会在客户端重新创建服务中标记有属性 [DataContract] 的所有类。

我想知道的是这是否是一种不好的做法,以及在客户端内部创建模型是否更好。据我了解,在第一种情况下,我应该只在 Silverlight 客户端中创建 ViewModels 和 Views,而在第二种情况下,我应该在 Silverlight 客户端中创建 Views、ViewModels 和 Models,并使用来自 WCF 服务的值。

感谢您的帮助。

干杯,G。

更新

好的,我认为我的问题不够清楚,因为我没有收到很多反馈。但是,我想提供有关此的更新。我一直在寻找的答案是“不!数据传输对象!”。

我正在考虑将我的实体类(映射到数据库表的那些)用作 WCF 服务中的 DataContract。在客户端中添加对此 WCF 服务的引用也会在客户端上创建所有用 DataContract 修饰的类。

就我而言,最大的问题是数据层基于 Hibernate,它有时会在“数据代理”类的运行时广泛使用(参见 Castle Proxy)。好吧,事实证明这些数据代理存在序列化问题,据我所知,最好的方法是采用数据传输对象模式,以便将“复杂”实体映射到类似但“更轻”的类(DTO)。

我希望这可以帮助别人。

祝你今天过得愉快!詹卢卡。

4

1 回答 1

0

你看过 Nhibernate 的 WCF RIA 吗?但要尝试回答这个问题:我不会尝试直接从 WCF 服务返回实体,我个人会创建 DTO。然后我可能会将这些 DTO 映射到某种客户端模型。所以,如果我不能利用 RIA,我会尝试这样做。

于 2011-02-13T16:42:56.110 回答