私はBiztalkでオーケストレーションをWebサービスとして公開しました。XMLシリアル化などを使用してファイルからXMLをロードし、それをWebサービスが期待するメッセージタイプに「変換」する方法を知っている人はいますか?人々は通常、このWebサービスをどのように使用しますか?XMLとフラットファイルの両方を使用しているため、型指定されていないメッセージの使用を避けようとしています。これは問題を意味する可能性があることを読みました。
2 に答える
あなたの質問は少し紛らわしいです。あなたはオーケストレーションをWebサービスとして公開したと言うことから始めましたが、それを利用することについての質問を提起しました。
公開されたWebサービスについて話している場合: BizTalk Webサービスウィザードによって生成されたWebサービスは、.NETで作成したWebサービスと同じです。オーケストレーションが期待するメッセージタイプと、ウィザードでの操作の構造に基づいています。ウィザードは、WSDLとスキーマを使用してWebサービスを自動生成します(内部にBizTalk固有のビットがいくつかありますが、実装について心配する必要はありません)。
あなたの消費者(プラットフォームに依存しない)は、大きな問題なしにそのWebサービスを利用できるはずです。
OrchestrationのWebサービスを利用しようとしている場合は 、このペーパーhttp://msdn.microsoft.com/en-us/library/ms935219(BTS.10).aspxを参照してください。
一般に、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>);
それが理にかなっていることを願っています