自动序列化

时间:2011-08-08 07:08:01

标签: vb.net serialization xsd

我想从Web服务下载xsd规范并自动将这些模式转换(序列化)到类(visual studio - vb.net)。如果负责xsd模式的组织改变它们的方式只需要改变与xsd相对应的类(而不是我的其余代码),我想自动更新我的xsd对应类。这可能吗?如果是这样,有人可以告诉我该怎么做吗?

谢谢!

我使用vs2010。我想要做的是:调用一个Web服务,我可以在服务中输入一个输入参数来指定我要检索的xsd(该服务是GetShemaDefenition并在对象的字符串属性中返回一个具有模式规范的对象) )。我必须从字符串属性中读取xsd字符串并将其转换为此xsd规范的类表示形式。是否可以自动执行此操作?我已使用xsd.exe手动完成此操作。如果xsd的所有者组织改变了xsd规范,我必须测试是否有新规范,如果有,我必须构建这个xsd的新类表示?有可能做我想要的吗?我怎么知道它是否在xsd中发生了很大变化,这也会影响我代码的其他部分,而不仅仅是xsd的类表示?

坦克很多你的回复!所以你所说的,如果我理解你是正确的,那就是没有一个很好的解决方案来自动化这个功能,因为如果xsd改变我很可能(在某些情况下)必须手动更改我的代码?所以我必须在我的应用程序或我的中间服务中选择?但是在Web服务中提供xsd的目的是什么?我可以使用Web服务做什么?我只是想知道,也许它很清楚,但我是网络服务的新手,并渴望了解更多。

更新

谢谢!但你能解释一下吗?我要做的是:我使用一个Web服务,其中一个属性是一个字符串。该字符串是CDATA块内的XML。提供Web服务的组织不会将CDml块中的xml削减,而是将其转发给将使用xml数据的另一个组织。使用xml数据的组织指定了我必须遵循的xsd schem才能生成正确的xml。这是我可以从其他Web服务获得的xsd架构。我真的不明白我可以用这个来自Web服务的xsd文件做什么。我该怎么办?当我无法自动使用它时,为什么我要从网络服务下载它?因为我必须在xsd更改时手动执行更改,所以我可以轻松地从组织的主页下载xsd架构,并使用xsd.exe创建新类。我知道有些事情我不明白:o),你能请求澄清吗?

1 个答案:

答案 0 :(得分:0)

您正在使用哪种Visual Studio版本?通常您可以单击项目的引用和添加Web服务。在这种情况下,Visual Studio会自动创建使用服务所需的对象。您可以通过右键单击参考文件随时更新它。

但是,如果它很可能经常更改,一种解决方案是实现适配器类。使用创建提供相同功能的接口并调用实际的Web服务。在您的应用程序中,您只使用代理类而不是Web服务。稍后当Web服务接口发生更改时,您所要做的就是更改此中间类的内部。

更新

您可以使用this tool在代码中创建对象模型。然后你可以compile your new object model并在你的应用程序中使用它。您想要做的事情有很多并发症,而且最重要的是;当对象模型更改时,您的代码将失败。绝对没有办法想象界面将如何变化,所以当你可以自动完成所有这一切时,如果函数的名称发生变化则无所事事。

然而,你的情况的答案是间接的。如果您无法保证外部服务的稳定性。为什么不创建一个稳定的中间服务来调用实际的服务?这种方式将来你不需要触摸你的应用程序。您所要做的就是修改中间服务,同时保持其界面兼容。