如何编写在.NET中返回动态变量集的Web服务?

时间:2011-09-22 15:58:37

标签: c# .net web-services dynamic asmx

我当前的设置是一个ASMX网络服务,其中包含Item个对象,并返回List<>Items

Item有114个不同类型的字段。它由.NET Web应用程序以及Java Web应用程序(使用Axis2生成客户端代理)使用。

我的问题是每次我们想要在结果集中添加字段时,我们必须修改服务以将字段添加到对象,以及为java端生成新的客户端代理。此外,sql字段到对象字段的映射是将每个字段从datareader加载到对象中的一个大方法,确保转换为正确的数据类型。

有更动态的方法吗?我查看了一个Dictionary列表,但无法序列化。另一种方法是发送List<> StructKeyValue字段。现在,这需要将类型解析到客户端,这不一定是最佳的。

是否存在处理此类内容的模式,或者除此之外,是否有人有一个很好的解决方案来帮助使其更易于维护?我愿意将它转换为WCF(虽然我对WCF不太熟悉),如果我们的Java应用程序有一个很好的方式来使用该服务。

如果您需要更多详细信息,请询问。谢谢!

1 个答案:

答案 0 :(得分:4)

除了使用像List<KeyValuePair<string, object>>这样的东西之外我不认为你会找到任何其他解决方案;在这方面,WCF不会提供太多帮助。

我认为这实际上是一个很好的解决方案,它会使您的数据读取变得更加简单和可扩展,并且您在添加新字段时无需更改服务器端代码。

您可以在客户端编写代码,将值对映射回实际结构,然后将大多数代码更改(添加字段时)与客户端隔离。此外,如果您的客户不需要新字段,您可以忽略更改而不会破坏任何内容。