大型复杂对象作为Web服务的结果
女士们,女士们,我们好!
好的,接下来是我关于ASP.NET Web服务结果,代理类和类型转换的其他问题。我参与了我的项目,需要加倍思考。
基本上,我们有一个大型的,复杂的自定义对象,需要从Web服务返回并在客户端应用程序中使用它。
现在,基于前面的讨论,我们知道这将采用代理类的形式作为返回类型。为了克服这个问题,我们需要基本上将属性从一个复制到另一个。
在这种情况下,这就是我会真的,真的,真的!喜欢避免!
所以,这让我开始思考,我们还能怎么做呢?
我当前的想法是使对象能够完全序列化为XML,然后从Web服务以字符串形式返回XML。然后,我们在客户端反序列化。这将意味着相当多的属性修饰,但是至少两个端点处的代码都是轻量的,即仅使用.NET XML Serializer。
我们对此有何看法?
解决方案
回答
昨天,我对一个非常相似的主题有一些不错的答案,这些答案可能对我们有用:
javascript与服务器之间的通信
回答
.Net XML(反)序列化已很好地实现。乍一想,我根本不认为这是个坏主意。
如果两个应用程序导入相同的Cclass定义,则这是一种免费获取复制构造函数行为的相对不错的方法。如果类结构发生变化,那么当双方都获得新的类定义时,一切都将工作,而无需在Web服务使用/构造方面进行任何其他更改。
打包和解组XML会有一些开销,但是与远程Web服务调用的开销相比,这可能相形见war。 .Net XML序列化已为大多数程序员所熟知,并应提供易于维护的解决方案。
回答
我喜欢这种事情的JSON。我刚刚使用jQuery与启用了脚本服务的Web服务联系来完成我公司的POC物联网门户。消息是轻量级的,并且解析等已得到处理。我读过的jQuery ajax东西(喜欢它!):jquery ajax文章
回答
Rob,在看另一个问题以及这个问题时,听起来就像我们在环境中遇到的确切情况一样。但是,我们所做的是从ASP.Net Web服务转移到WCF Web服务,并在此过程中(大部分情况下)解决了此问题。
如果Web服务有可能被实现为WCF Web服务,那么这也可能对我们有用。我应该提到,同时,我们通过使用WCF basichttp绑定进行服务传输,从而与某些需要" ASP.Net Web服务样式"实现的客户端应用程序保持了向后兼容性。最终结果是,"较新的"客户端应用程序能够通过将实际的业务对象(通过引用仅包含这些共享库的程序集)用作Web服务调用的返回类型,因为它们进行了实际的WCF调用。
为此,我们不使用自动生成的代理类,而是构建自己的客户端通道来与WCF服务进行通信。
如果我们可以使用WCF,请告诉我可以发布一些其他信息。