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

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

好的,继续我关于ASP.NET Web服务结果,代理类和类型转换的其他问题。 我参与了我的项目,我需要在思考上限。

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

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

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

所以,它让我思考, 我们还能怎么做呢?

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

你对此有何看法?

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

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

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

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

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

javascript和服务器之间的通信

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

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

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

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