3

将答案(集合)传回 Silverlight 的正确方法是什么?

例如,如果我有一个位于 Northwind 示例数据库之上的服务应用程序,并且该服务有一个名为 GetEmployees() 的方法。传递回 Silverlight 的正确“东西”是什么?一个 IQueryable ?

然后考虑到 Silverlight 方面的 Async/Result 转换内容,我还应该转换什么?一个 IQueryable ?

更新:
是否允许远程客户端从服务中查看结构(实体)的 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 声明?我不知道有像 Silverlight-friendly-WCF 类这样的东西,所以这不是我开始的。一旦我在解决方案中添加了该属性,没有它我将不再使用该服务。所以我无法测试我之前看到的内容。对AspNetCompatibilityRequirementsMode.Allowed的作用有什么想法吗?

更新 2:
查看对 Terry Donaghe 的评论。

4

3 回答 3

2

您是否只是尝试传递基本类型的数组?除非您创建 DataContract,否则 WCF 不知道您的任何对象是什么。当您尝试传递 List WCF 时,实际上只是传递了一个数组,因为它旨在尝试互操作。

定义一个DataContract以包含有关员工(或其他)的信息。尽量保持相对简单。当您创建代理(可能使用 svcutil 或添加服务引用)时,VS2008 将在您的客户端自动神奇地定义 DataContracts,然后您可以像使用常规对象一样使用它们。

我更喜欢手动使用 WCF - 我创建自己的合同、实现和代理 dll。就反序列化和其他方面而言,这样做给了我很大的灵活性。有关更多信息,请参阅以下两个参考资料:

WCF 手动方式,正确方式

手动 WCF - 扩展

另外,请参阅 Juval Lowy 的 WCF 圣经第 3 章“编程 WCF 服务”。它充满了关于 DataContracts 的信息。

于 2009-02-19T21:33:53.620 回答
0

在使用常规 Web 服务时,您必须返回诸如 List the SOAP formatter 之类的集合,以了解如何处理它。但是,我没有使用过 WCF,所以我不知道这是否会有所不同。

于 2009-02-19T19:05:55.950 回答
0

只需返回一个列表。如果可以返回单个T,则可以返回 List< T >。

于 2009-02-19T20:13:24.657 回答