我当前的设置是一个ASMX
网络服务,其中包含Item
个对象,并返回List<>
个Items
。
Item
有114个不同类型的字段。它由.NET Web应用程序以及Java Web应用程序(使用Axis2生成客户端代理)使用。
我的问题是每次我们想要在结果集中添加字段时,我们必须修改服务以将字段添加到对象,以及为java端生成新的客户端代理。此外,sql字段到对象字段的映射是将每个字段从datareader加载到对象中的一个大方法,确保转换为正确的数据类型。
有更动态的方法吗?我查看了一个Dictionary列表,但无法序列化。另一种方法是发送List<>
Struct
个Key
和Value
字段。现在,这需要将类型解析到客户端,这不一定是最佳的。
是否存在处理此类内容的模式,或者除此之外,是否有人有一个很好的解决方案来帮助使其更易于维护?我愿意将它转换为WCF(虽然我对WCF不太熟悉),如果我们的Java应用程序有一个很好的方式来使用该服务。
如果您需要更多详细信息,请询问。谢谢!
答案 0 :(得分:4)
除了使用像List<KeyValuePair<string, object>>
这样的东西之外我不认为你会找到任何其他解决方案;在这方面,WCF不会提供太多帮助。
我认为这实际上是一个很好的解决方案,它会使您的数据读取变得更加简单和可扩展,并且您在添加新字段时无需更改服务器端代码。
您可以在客户端编写代码,将值对映射回实际结构,然后将大多数代码更改(添加字段时)与客户端隔离。此外,如果您的客户不需要新字段,您可以忽略更改而不会破坏任何内容。