大型复杂对象作为 Web 服务结果 [已关闭]

Large, Complex Objects as a Web Service Result [closed]

提问人:Rob Cooper 提问时间:8/20/2008 最后编辑:CommunityRob Cooper 更新时间:6/30/2015 访问量:3193

问:


想改进这个问题吗?通过编辑这篇文章来更新问题,使其仅关注一个问题。

6年前关闭。

女士们,先生们,大家好!

好的,接下来是我关于 ASP.NET Web 服务结果、代理类和类型转换的另一个问题。我已经来到了我的项目的一部分,我需要把我的思维上限放在上面。

基本上,我们有一个大型的、复杂的自定义对象,需要从 Web 服务返回并在客户端应用程序中使用。

现在,根据前面的讨论,我们知道这将采用代理类的形式作为返回类型。为了克服这个问题,我们基本上需要将属性从一个复制到另一个。

在这种情况下,这是我真的,真的,真的! 想要避免的事情

所以,这让我开始思考,我们还能怎么做呢?

我目前的想法是使对象能够完全序列化为 XML,然后从 Web 服务中以字符串形式返回 XML。然后,我们在客户端进行反序列化。这将意味着相当多的属性修饰,但至少两个端点上的代码将是轻量级的,即仅使用 .NET XML 序列化程序。

您对此有何看法?

C# asp.net XML Web 服务 序列化

评论


答:

1赞 mercutio 8/20/2008 #1

昨天,我就一个非常相似的话题给出了一些很好的答案,可能对您有用:

javascript 和服务器之间的通信

5赞 Cheekysoft 8/20/2008 #2

.Net XML(反)序列化实现得非常好。乍一看,我认为这根本不是一个坏主意。

如果两个应用程序导入相同的 C# 类定义,那么这是免费获取复制构造函数行为的一种相对不错的方法。如果类结构发生变化,那么当双方都获得新的类定义时,一切都将正常工作,而无需在 Web 服务使用/构造方面进行任何其他更改。

编组和解组 XML 的开销略有,但与远程 Web 服务调用的开销相比,这可能相形见绌。大多数程序员都很好地理解了 .Net XML 序列化,并且应该产生一个易于维护的解决方案。

4赞 Peter Short 8/20/2008 #3

我很喜欢这种东西。我刚刚为我的公司完成了一个 POC drop-things 类型的门户,用于联系启用了脚本服务的 Web 服务。消息是轻量级的,解析等几乎得到了处理。我读到的东西在这里(喜欢它! jquery ajax 文章JSONjQueryjQuery ajax

1赞 Peter Meyer 8/20/2008 #4

Rob,在看你的另一个问题和这个问题时,这听起来像是我们在环境中的确切情况。然而,我们所做的是从 ASP.Net Web 服务转向 WCF Web 服务,并在此过程中(大部分)解决了这个问题。

如果你的 Web 服务有可能被实现为 WCF Web 服务,这可能也适用于你。值得一提的是,与此同时,我们通过使用 WCF basichttp 绑定进行服务传输,保持了与某些需要“ASP.Net Web 服务风格”实现的客户端应用程序的向后兼容性。最终结果是,我们的“较新”客户端应用程序能够使用我们的实际业务对象(通过引用仅包含这些共享对象的程序集)作为 Web 服务调用的返回类型,因为它们进行实际的 WCF 调用。

为此,我们不使用自动生成的代理类,而是构造自己的客户端通道来与 WCF 服务进行通信。

如果您可能使用 WCF,请告诉我我可以发布一些其他信息。