【发布时间】:2011-07-23 01:17:16
【问题描述】:
我可以在启用 AJAX 的 WCF 和我的 asp.net 页面之间传递自定义对象吗?
我在网上搜索但找不到任何示例。大多数显示简单类型,如字符串和整数。
我也不知道如何在客户端通过 JavaScript 填充自定义对象的属性。
我们有一个浏览器插件,我们必须从网络服务将数据传递给该插件,我研究过,看起来启用 AJAX 的 WCF 是可行的方法
使用 .net framework 3.5 和 VS 2008
【问题讨论】:
我可以在启用 AJAX 的 WCF 和我的 asp.net 页面之间传递自定义对象吗?
我在网上搜索但找不到任何示例。大多数显示简单类型,如字符串和整数。
我也不知道如何在客户端通过 JavaScript 填充自定义对象的属性。
我们有一个浏览器插件,我们必须从网络服务将数据传递给该插件,我研究过,看起来启用 AJAX 的 WCF 是可行的方法
使用 .net framework 3.5 和 VS 2008
【问题讨论】:
您不能传递实际的自定义对象,但您当然可以通过您的服务将它们的序列化版本传递给您的页面、javascript 等。基本上,您必须映射复杂的自定义 .NET 的字段类型到用 DataContract 属性修饰的类。这些类是您的服务将返回的类型。 DataContract 装饰的类将包含具有原始类型的字段,例如字符串、整数等。WCF 服务会将这些字段序列化为 XML 或 JSON。
在客户端,jQuery 将是您最好的朋友。我个人更喜欢 JSON,因为这样更容易获得对象的属性,而不必处理解析一堆 XML。因此,设置您的服务以输出 JSON。
此外,为了使您的服务 URL 更易于阅读,请确保使用 RESTful 方法。就像使用 WebGet 属性装饰您的服务方法并提供 UriTemplate 一样简单。一旦你看到一些例子,它会让你大吃一惊。注意:如果你遇到过带有 Method="GET" 的 WebInvoke,只需使用 WebGet 代替...它更紧凑...不需要方法规范。
当我开发 WCF 服务和使用它的 ASP.NET 应用程序时,这篇特别的文章对我非常有用:http://www.c-sharpcorner.com/UploadFile/sridhar_subra/116/
还有人和你问同样问题的人:http://social.msdn.microsoft.com/forums/en-US/wcf/thread/879d46af-9c78-4b5d-b746-82843d742a6f
希望这会有所帮助! WCF 万岁!
【讨论】:
使用 .NET 3.5,您最好的选择是 WebHttpBinding,它接受普通的旧 XML (POX),您需要将 XML 发送到 WCF 服务。
您还可以通过 REST 入门工具包来使用 WCF REST。如需样品,请查看here。这也支持 JSON。
如果您使用的是 .NET 4.0,那么启用 JSON 的 WCF HTTP 是不错的选择。带有 4.0 的 WCF REST 是一个替代方案,尽管我真的不喜欢它。
【讨论】: