我在 Biztalk 中发布了一个编排作为 Web 服务。有谁知道我如何使用 XML 序列化或其他东西从文件中加载 XML 并将其“转换”为 web 服务期望的消息类型?人们通常如何使用这个网络服务?我尽量避免使用无类型消息,因为我同时使用 XML 和平面文件,并且读到这可能意味着麻烦。
2 回答
好吧,我想一般来说,Web 服务的想法是您向它们添加一个 Web 引用,这将生成一组您可以用来与 Web 服务交互的代理类。
您通常不必担心将 xml 文件与 Web 服务格式进行序列化,生成的代码会为您完成。
但是,如果您确实希望使用 XML,您可以使用 .net 序列化将 xml 文件反序列化为生成的代理类型(以及序列化您收到的任何响应)。
这是一个如何将 xml 反序列化为类实例的基本示例,然后您可以将此实例传递给生成的代理中的方法。
System.Xml.Serialization.XmlSerializer xser = new System.Xml.Serialization.XmlSerializer(typeof(<generated request type here>));
xser.UnknownAttribute += new System.Xml.Serialization.XmlAttributeEventHandler(xser_UnknownAttribute);
xser.UnknownElement += new System.Xml.Serialization.XmlElementEventHandler(xser_UnknownElement);
xser.UnknownNode += new System.Xml.Serialization.XmlNodeEventHandler(xser_UnknownNode);
xser.UnreferencedObject += new System.Xml.Serialization.UnreferencedObjectEventHandler(xser_UnreferencedObject);
<generated request type here> request = (<generated request type here>)xser.Deserialize(<xml stream here>);
我希望这是有道理的
你的问题有点混乱。您开始说您将编排发布为 Web 服务,但提出了关于使用它的问题。
如果您谈论的是已发布 的 Web 服务:由 BizTalk Web 服务向导生成的 Web 服务与您在 .NET 中编写的 Web 服务没有什么不同。根据您编排所期望的消息类型以及您在向导中如何构建操作。该向导将使用 WSDL 和模式为您自动生成一个 Web 服务(内部会有一些 BizTalk 特定位,但您无需担心实现)。
您的消费者(独立于平台)应该能够使用该 Web 服务而不会出现任何重大问题。
如果您尝试使用 Orchestration 中的 Web 服务, 请查看本文http://msdn.microsoft.com/en-us/library/ms935219(BTS.10).aspx