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

Posted

技术标签:

【中文标题】大型复杂对象作为 Web 服务结果 [关闭]【英文标题】:Large, Complex Objects as a Web Service Result [closed] 【发布时间】:2010-09-06 06:33:25 【问题描述】:

女士们,先生们,你们好!

好的,继续我在ASP.NET Web Service Results, Proxy Classes and Type Conversion 上的另一个问题。我已经进入了我的项目的一部分,我需要提高我的思考能力。

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

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

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

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

我目前的想法是启用对象以将其完全序列化为 XML,然后将 XML 作为字符串从 Web 服务返回。然后我们在客户端反序列化。这将意味着相当多的属性装饰,但至少两个端点的代码会很轻,即仅使用 .NET XML 序列化器。

您对此有何看法?

【问题讨论】:

【参考方案1】:

昨天我在一个非常相似的主题上得到了一些很好的答案,可能对你有用:

Communication between javascript and the server

【讨论】:

【参考方案2】:

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

如果两个应用程序导入相同的 C# 类定义,那么这是一种免费获得复制构造函数行为的相对好方法。如果类结构发生变化,那么当双方都得到新的类定义时,一切都会正常进行,而无需在 Web 服务消费/构建端进行任何额外的更改。

编组和解组 XML 的开销很小,但这可能与远程 Web 服务调用的开销相比相形见绌。 .Net XML 序列化已为大多数程序员所熟知,应该会产生易于维护的解决方案。

【讨论】:

【参考方案3】:

我很喜欢 JSON 这种事情。我刚刚使用jQuery 为我的公司完成了一个POC 拖放类型门户,以联系启用了脚本服务的Web 服务。消息是轻量级的,解析等几乎可以处理。我读到的jQuery ajax 的东西在这里(喜欢它!):jquery ajax article

【讨论】:

【参考方案4】:

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

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

我们通过不使用自动生成的代理类并构建我们自己的客户端通道来与 WCF 服务进行通信来做到这一点。

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

【讨论】:

以上是关于大型复杂对象作为 Web 服务结果 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 RESTful Web 服务的结果作为 Crystal Reports 中的数据

HTTP协议详解

如何设计一个包含 Web 服务结果的类

处理大型数据集和内存限制 [关闭]

spring 14-Spring框架JDBC操作

存储 R 生成的大型结果的理想格式是啥?