2009-05-17 6 views
2

現在、RESTfulアプリケーションの設計に取り組んでいます。私たちは基本的な表現としてXMLを決めました。 私はアプリケーションデータをXMLで設計/モデリングする際に以下の質問をします。XMLのデザイン - どのように?

  1. XMLのデータモデリングに対するアプローチは何ですか?最初から始め、標準のXMLスキーマの使用を評価するか、あるいはその逆を行うことをお勧めしますか?
  2. すべての標準XMLスキーマに関する情報はどこにありますか?
  3. 名前空間の発想から考えるか、それとも後で延期できるのでしょうか?
  4. 最後に、まずXMLスキーマを設計するか、XMLドキュメントで開始してからスキーマを定義するのがよいでしょうか?

注:私はすでに(What are best practices for designing XML schemas?)stackoverflowの時に関連する質問を見てきましたが、それは、上記の質問に対処していないようです。

+0

既にXMLを使いたいのであれば、まだReST APIを開発する理由は何ですか?最初からSOAP/WS(DL)を使ってみませんか?私を誤解しないでください。私はReSTを大いに支持していますが、独自のスキーマでXMLを使用する利点を得るには、APIのXMLツールチェーン全体を探索する必要があります。 – Boldewyn

答えて

2

XMLがまだなく、要件を知らない場合は、まずスキーマを設計するのは難しいでしょう。すでにXMLを処理しているコードがある場合は、最初のXMLツリーの例としてオブジェクトツリーを取ることをお勧めします。彼らは、XMLが常に単なるツリーであり、オブジェクトがオブジェクトではないという点を除いて、違いはありません。

その後、XMLを安定させ、ユースケースをモデル化する必要がある要件を収集します。あなたがこの2つを持っているなら、あなたはスキーマを行うのに完璧なスタートを持っています。これにより、フォーマットが固​​められます。

標準スキーマを検索することは常に良いアイデアですが、ほとんどすべての時間にも不満です。あなたのXMLがどのように見えるかを知るまでこれを延期します。たぶんあなたはすでにあなたのフォーマットと同じような標準化されたものがあることを認識しているでしょう。

名前空間には注意が必要です。あなたは間違ったことをすることができるので、これはXMLの重い話題です。あなたがそれらを必要としているかどうかわからない場合は、スキップしてください。それが世界の他の人たちがやっていることです。あなたがそれらを使用するには、彼らが最初に始める必要があると思う場合。名前空間認識コードと名前空間認識コードを混在させることは苦痛です。

+0

私は、名前空間を省略することに強く反対しています。これは気にしないかもしれないが、あなたのライブラリ(あるいは顧客、将来の管理者、または統合エンジニア)のユーザーが望むかもしれない、大きな文書の中に文書を埋め込む*あなたの*ドキュメントの中に別の種類の情報を埋め込み、あなたのドキュメントフォーマットについて何も知らないサードパーティのツールが、正しいことをやるようにすることを期待しています。したがって、名前空間を使用することは将来の防御のためのより安全な選択です。 –

+0

それはちょうど別の "個人的な決定"です。あなたは、フレームワーク、サードパーティのソフトウェアについて話しています。私は、彼がこれについて話している確率はかなり高いとは思わない。残りの世界には単純な問題があります。はい、ネームスペースは正しい方法ですが、作業を面倒にすることもできます。したがって、ユースケースがこの名前空間をスキップしても気にしない場合は、保存します –

+0

名前空間を残すことは、関係のないアプリケーションでうまく機能します。原因と結果、またはその逆? –

1
  1. 抽象クラス、列挙型などのXMLスキーマでは、多くのことができます。XML Schema Part 0: Primer Second Editionを参照してください。相互運用性について気にするなら、try to stay away from certain data types
  2. List of XML markup languagesには、いくつかの既知のスキーマがリストされています。 POX on RESTサービスでは、自分で作っていると思います。
  3. 一意であることが保証されている限り、実際の名前そのものは本当に重要ではありません。将来のバージョニングのためにそこに日付を入れてください。
  4. 私は、結果として得られるXML文書がどのように最初に見えるかを知っておくべきだと思います。

サービスの設計について注意する点は、クラス/オブジェクトの設計とは異なり、ドキュメントを交換する点でもっと考える必要があることです。これはcourse-grainedと呼ばれることもあります。 OOの世界では、ピア間で一連のメソッド呼び出しを交換することになりますが、SOAでは、チャットを避け、必要な情報のほとんどを文書に取り込もうとします。

0

最初にアプリケーションを設計し、交換する必要がある情報を決定することに同意します。

あなたがやっているように、あなたが交換している情報のいくつかは、標準のスキーマから来るかもしれません。また、顧客が使用し、交換したい情報をすでに記述している標準スキーマがあることがわかります。

これらのいずれも起こらない場合は、「標準スキーマ」を忘れてしまいます。とりわけ、私はあなたがそれらの包括的なリストを見つけるつもりはないと思う - あまりにも多くのものがある。

0

最初から名前空間の設計アプローチを考えるのがよいでしょう。あなたが設計しようとしているXMLファイルが概念的に関連しているならば、あなたは同質の名前空間設計アプローチに行くことができます。

異種名前空間の設計手法では、共有と再利用が可能です。これは、ドメイン固有のファイルを視覚的に識別したい場合に使用できます。

異機種設計のアプローチが推奨されます。このデザインアプローチをプロジェクトに実装する方法を知りたい場合はhttp://technologyandleadership.com/three-schema-design-approaches/を参照してください

関連する問題