0

XML 経由で別のサービスから情報を取得する WCF サービスを構築しようとしています。XML には通常、int、string、DateTime の 4 つの要素があります。サービスを動的に構築して、XML を取得したときにそれをデータベースに格納したいと考えています。コード内の型と要素名をハードコーディングしたくありません。変更がある場合は、データベースに動的に追加したい これを行う最善の方法は何ですか? これは良い習慣ですか?それとも、Entity Framework を使用し、データベースのモデルを設定し、要素の名前と型をハードコードするだけに固執する必要がありますか?

ありがとう

:)

4

2 に答える 2

0

いつも通り「場合による…」。

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

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

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

技術的な理由でデータが変更された場合 (つまり、変更するのはデータの性質ではなく、これを心配するのは技術チェーンだけです) ではなく、バージョン管理の概念を組み込み、「厳密に型付けされた"サービス/データのバージョンが異なります。これは手間がかかるように思えますが、スキーマ検証、リレーショナル データベース モデル、および単純さに依存することの利点は、通常、適切なトレードオフになります...

于 2012-04-26T14:06:53.550 に答える
0

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

于 2012-04-26T14:33:27.710 に答える