2012-04-26 16 views
0

XMLを介して別のサービスから情報を取得するWCFサービスを構築しようとしています。 XMLには通常、int、stringからDateTimeまでの4つの要素があります。サービスを動的に構築して、XMLを取得したときにデータベースに格納するようにします。私はコード内の型と要素名をハードコードしたくありません。変更があった場合は、データベースに動的に追加します。これを行う最善の方法は何ですか?これは良い練習ですか?または、Entity Frameworkを使用し、データベースのセットモデルを持ち、要素名と型をハードコードする必要がありますか?XMLからデータベースへデータを動的に格納するサービス

おかげ

:)

答えて

0

いつものように、 "それは依存..."。

受信するデータの性質に、固定スキーマがないか、ビジネスロジック/ドメインロジックの一部として頻繁に変更されるスキーマがある場合は、それを管理するソリューションを設計することをお勧めします。デザイン時にスキーマがわからないデータを保存することは、StackOverflowの長期的な議論です。「プロパティバッグ」、「エンティティ属性値」またはEAVを探して、さまざまな質問と回答を確認してください。

このアプローチであきらめるのは、Webサービス層で、受け取ったデータが合意されたインタフェース契約を満たしていることを確認する機能です。これにより、あらゆる種類のエキサイティングなバグを避けることができます。無効なXMLを受け取った場合、システムはどうしたらよいでしょうか?合意されたスキーマ/ dtdがなければ、コードにあらゆる種類のチェックを組み込む必要があります。

データベースレベルでは、通常、従来の行と列の関係がなくてもデータを格納するリレーショナルモデルの側面(したがってSQLの能力)をあきらめることになります。そのため、クエリが困難になることが多く、ベンダー固有の拡張機能を使用するなど、標準への準拠を犠牲にする可能性があります。

技術的な理由でデータが変更された場合、つまり変更するデータの性質ではない場合は、これを心配するのはテクノロジーチェーンだけです。代わりにバージョニングという概念を構築することをお勧めします。異なるバージョンの「強く型付けされた」サービス/データを持っている。これがもっとうまくいくように見えますが、スキーマの検証、リレーショナルデータベースモデル、そして単純さに頼ることのメリットは、通常、それを良いトレードオフにします...

+0

これは私が探していたものです。ありがとう!私はそれらの議論を見ていきます – Mage

0

xmlをxmlとしてデータベースに入れます。最新のデータベースの多くは、XMLを直接サポートしています。そうでない場合は、テキストとして保存してください。

+0

私はクエリできるようにテーブル構造のデータが必要です – Mage

+0

xmlをサポートする最新のRDMSを使用している場合は、クエリできます! – RQDQ

関連する問題