我正在构建一个应用程序。我正在 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)。
我希望这可以帮助别人。
祝你今天过得愉快!詹卢卡。