1

ある API から xml データをインポートし、xml データを別の API に投稿しています。

私の最初の試みでは、LINQ の埋め込み値を利用して、関連する値を次のように変換しました。

Dim DetailXML = From product In ProductXML _
  Select <detail>
          <detail.stockcode><%= product.<sku>.Value %></detail.stockcode>
          <detail.stockqty><%= product.<quantity>.Value %></detail.stockqty>
          <detail.orderqty><%= product.<quantity>.Value %></detail.orderqty>
          <detail.gross><%= product.<total_inc_tax>.Value %></detail.gross>
          <detail.taxcode><%= DetailTaxCode %></detail.taxcode>
         </detail>

これは非常によくできていて、簡単に理解できます。約 200 行のコードだけで、完全に機能するものを完成させることができます。

「ベスト プラクティス」に関するこのサイトのさまざまなコメントに続いて、xml シリアライゼーションを使用して、これをオブジェクト指向ソリューションとして再開発しました。

関連するすべてのテーブル/フィールドのクラス/オブジェクトがあり、完璧なシリアル化のための xml 属性を備えています。

これは大仕事であり、最終的にプロジェクト全体のコードは約 10 倍になりましたが、実際のインポート/エクスポート ループのコードは大幅に減少するわけではありません。

私の質問は、なぜ私が気にしたのですか? この場合、オブジェクト指向アプローチの実用的な利点は何ですか?

これは無駄な質問ではありません。API との間でのデータのインポート/変換/エクスポートは、IT ゼネラリストのパンとバターであ​​り、これは決してユニークなプロジェクトではありません。

ありがとう。

4

1 に答える 1

0

XML リテラルを使用して自分で XML を作成するよりも、少数のオブジェクトを作成する方が簡潔で冗長性が低く、エラーが発生しにくいと主張する人もいるかもしれません。また、C#の人々は XML リテラルを持っていません (羨ましいです)。

XmlSerializer私の意見では、逆シリアル化も必要な場合に最適です。XLINQ を使用して XML を解析すると、最適なコード品質とは言えません。

XmlSerializer保存と読み込みの両方が必要な場合にも役立ちます。たとえば、構成ストアとして非常にうまく使用できます。

XML スキーマからクラスを生成することもできます。利用可能な場合、通常はこれが最適なオプションです。

于 2013-08-18T20:39:07.813 に答える