大型复杂对象作为Web服务结果

时间:2008-08-20 10:46:21

标签: c# asp.net xml web-services serialization

女士们和男士们再次问好!

好的,继续关于ASP.NET Web Service Results, Proxy Classes and Type Conversion的另一个问题。我参与了我的项目,我需要考虑上限。

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

现在,基于之前的讨论,我们知道这将采用代理类(es)的形式作为返回类型。为了解决这个问题,我们需要基本上将属性从一个复制到另一个。

在这种情况下,这是我真的,​​真的,真的!喜欢避免!

所以,它让我思考,我们还能做到这一点吗?

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

您对此有何看法?

4 个答案:

答案 0 :(得分:5)

.Net XML(de)序列化非常好地实现了。首先想到的是,我认为这根本不是一个坏主意。

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

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

答案 1 :(得分:4)

我喜欢JSON这种事情。我刚刚使用jQuery为我的公司完成了POC drop-things类型门户,以便在启用了脚本服务的情况下联系Web服务。消息是轻量级的,解析等几乎是处理的。我读过的jQuery ajax内容就在这里(爱它!):jquery ajax article

答案 2 :(得分:1)

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

Communication between javascript and the server

答案 3 :(得分:1)

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

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

我们这样做是因为没有利用自动生成的代理类并构建我们自己的客户端通道来与WCF服务进行通信。

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