这是否正确使用WCF和数据合同?

时间:2010-07-22 13:16:58

标签: silverlight wcf

我仍然是Silverlight的新手,对于WCF来说还是一个新手,我正试图将我的视野扩大到两者。我想在这样做时学习什么是好的做法。

在客户端,我有一个Silverlight应用程序。在服务器端,我有一个Silverlight应用程序将使用的数据库。在两者之间(好吧,它是服务器端,但是......),我有一个客户端调用的WCF服务从数据库中获取数据。

我创建了一个标记为DataContract的类,并由WCF服务使用。该类是使用数据库中的数据填充的对象模型。在客户端,当它请求并接收此类的实例时,它使用实例数据来实例化并填充具有其他客户端定义成员的客户端定义对象。

这是我最担心的DataContract的用法。要创建要序列化和发送的对象的实例,只能为其数据进行掠夺,以便创建另一个对象似乎......效率低下。但是,如果它被认为是一种很好的做法,我可以超越它。

我确实考虑过Web处理程序(.ashx)的路由并使用专有的二进制标准来传递数据,但我认为WCF路由可能在将来更适用和可用(思考:工作)。

1 个答案:

答案 0 :(得分:2)

我认为您的方法没有任何特殊问题。

在我看来,您所描述的是将数据从服务传输到客户端作为DTO(数据传输对象),然后使用该DTO填充视图模型对象。对于DTO和视图模型对象来说,根据它们所代表的数据使用不同级别的粒度(通常DTO将更粗粒度化),并且视图模型将包含特定于UI的行为,这也是很常见的。 / p>

您可能希望查看有助于DTO和视图模型对象之间映射的工具和框架。我最喜欢的一个是AutoMapper。