2011-08-08 10 views
0

Webサービスからxsd仕様をダウンロードし、これらのスキーマをクラス(visual studio-vb.net)に自動的に変換(シリアル化)したいと考えています。 xsdスキーマを担当する組織が、xsdに対応するクラスだけを変更する必要がある(私のコードの残りではない)ように変更する場合は、xsd対応のクラスを自動的に更新したいと思います。これは可能ですか?もしそうなら、どうすればいいのか教えてもらえますか?自動シリアル化

ありがとうございます!

私はvs2010を使用しています。私がしたいのは、取得するxsdを指定するサービスに入力パラメータを送ることができるWebサービスを呼び出すことです(サービスはGetShemaDefenitionであり、オブジェクトの文字列プロパティにスキーマ仕様のオブジェクトを返します) )。私は、文字列プロパティからxsd文字列を読み、これをこのxsd仕様のクラス表現に変換する必要があります。これは自動的に可能ですか?私はxsd.exeを使用してこれを手動で行っています。 xsdの所有者組織がxsd仕様を変更した場合は、新しい仕様があるかどうかをテストしなければならない場合、このxsdの新しいクラス表現を作成する必要がありますか?私がしたいことをすることは可能ですか?そして、xsdの大きな変更が、xsdのクラス表現だけでなく、私のコードの他の部分にも影響を与えているのかどうか、どうすれば分かりますか?

あなたの返信にはたくさんのタンクがあります!あなたが正しいと理解していれば、この機能を自動化するための良い解決法はないというのは、xsdの変更が最も可能性が高い(場合によっては)コードを手動で変更する必要があるからです。だから私は自分のアプリケーションや中間サービスのどちらかで選択する必要がありますか?しかし、Webサービスでxsdを提供する目的は何ですか? Webサービスは何のために使用できますか?私は疑問に思っています。多分それははっきりしていますが、私はWebサービスを初めて利用しており、もっと学びたいと思っています。

更新:

ありがとう!しかし、もう少し説明できますか?私がする必要があるのは、プロパティの1つが文字列であるWebサービスを1つ使用します。この文字列は、CDATAブロック内のXMLです。 Webサービスを提供する組織は、XMLデータをCDATAブロック内に格納するのではなく、xmlデータを使用する別の組織に転送します。 xmlデータを使用する組織は、xmlを正しく生成するために従わなければならないxsdスキーマを指定します。これは別のWebサービスから取得できるxsdスキーマです。私は実際にWebサービスからこのxsdファイルで何ができるのか分かりません。私はそれをどうしたらいいのですか?それを自動的に使用できないときに、なぜWebサービスからダウンロードしたいのですか? xsdが変更されたときに手動で変更を行う必要があるため、組織のホームページからxsdスキーマを簡単にダウンロードし、xsd.exeを使用して新しいクラスを作成することができます。私は理解できないものがあることを理解しています:o)、あなたは嘆いを明確にすることができますか?

+0

スキーマは、サーバーのインターフェイスを知っているので、そこにあります。それはプロバイダと消費者の間の契約のようなものです。この契約(インターフェイスとそれを記述するxsd)は安定しているはずであり、サービスのプロバイダはそれを頻繁に変更する予定はありません。プロフェッショナルサービスプロバイダは、変化する。それは何も彼らがそれを変えるのを止めることができないと言った。 – Mehran

答えて

0

使用しているVisual Studioのバージョンは何ですか?通常、プロジェクトの参照とWebサービスの追加をクリックできます。この場合、Visual Studioはサービスを使用するために必要なオブジェクトを自動的に作成します。参照を右クリックしていつでも更新できます。

ただし、頻繁に変更される可能性が高い場合は、アダプタクラスを実装する方法があります。同じ機能を提供するインターフェイスを作成し、実際のWebサービスを呼び出します。アプリケーションでは、Webサービスではなくプロキシクラスのみを使用します。その後、Webサービスインタフェースが変更されたときに、この中間クラスの内部を変更するだけで済みます。

更新:

あなたは、コードでオブジェクトモデルを作成するためにthis toolを使用することができます。その後、compile your new object modelとすることができますあなたのアプリケーションでそれを使用してください。あなたがやりたいことには多くの合併症があり、結論はです。オブジェクトモデルが変更されると、コードは失敗します。インタフェースがどのように変化するかを想像する方法はまったくありません。自動的にすべてを行うことはできますが、関数名が変更されても何もしません。

ただし、状況への答えは間接的です。外部サービスの安定性を保証できない場合。なぜ実際のものを呼び出す安定した中間サービスを作成しないのですか?将来この方法でアプリケーションに触れる必要はありません。あなたがしなければならないのは、インターフェイスが互換性を保ちながら中間サービスを変更することだけです。

+0

新しい質問としてコメントを投稿する必要があります。 – Liss

関連する問題