1

私たちは、内部クライアント システムが基盤となるデータ ストアのレコードを作成、更新、クエリできるようにする新しい中間層サービスに着手しています。このサービスは、最大 3 つの個別の基礎となるデータストアを集約します。この質問の目的のために、次のことを前提とします。

データ ストア #1: 独自の XML データベース。
データ ストア #2: 既製のリレーショナル データベース。
データ ストア #3: フラット ファイル ストア (バイナリとして格納されたファイル)。

クライアントは、クエリ/更新しているデータストアを知りません (または気にしません)。新しいサービスがその決定を下します。私の質問は次のとおりです。私の API は XML またはオブジェクトを公開する必要がありますか? たとえば、新しい API には add メソッドがあります。システムが自動車保管システムであると仮定すると、API の add メソッドは次のようになります。

AddNewCar( CarObject car )

または、次のようになります。

AddNewCar( string carXml )

これで、2 番目のメソッドの入力時の型指定が弱くても、XML は少なくともスキーマに対してすぐに検証されます。

新しいサービスは C# で記述される予定です (バージョンはまだ決まっていませんが、おそらく WCF では 3/3.5 です)。API のクライアントは、C#/VBA/VB.Net/C++/Java である可能性があります。

詳細を教えてください。ありがとう


更新: API は、メッセージ バスを介して XML も発行することに注意してください。たとえば、新しい車が追加されると、車の XML が公開され、新しい車に関心のある人に通知されます。

4

5 に答える 5

2

XML を公開すると、形式が修正され、インフラストラクチャに関して今後直面する可能性のある決定が修正されるため、XML を公開しないでください。実装を使用から適切に抽象化するために、私は常に強く型付けされたルートを使用します。

XML ルートを使用し、開発の途中で、何らかの理由で XML を変更する必要があることがわかった場合、その問題を修正するために API のすべての使用を変更することは、API を厳密に入力してから変更する場合よりもはるかに困難になります。オブジェクトの背後にある XML の詳細を隠しました。

于 2008-12-15T14:32:21.550 に答える
1

確かに、エンドユーザー開発者の観点からは、型付けされたアプローチが最も簡単であり、それが私が好むものです。ただし、最終的にすべてがバックグラウンドで Xml に変換される場合、またはクライアントがどちらのアプローチを取るかわからない場合は、両方をサポートすることを強くお勧めします。

于 2008-12-15T14:29:18.623 に答える
1

オブジェクトを使用して API を作成し、必要に応じて WCF を利用して XML API を提供する必要があります。

于 2008-12-15T14:32:26.340 に答える
1

オブジェクトを使用して API を作成し、その API の周りに Web サービス インターフェイスを作成する必要があります (たとえば、Java の場合、インターフェイスで java2wsdl を使用し、次に wsdl2java を使用してサーバー側実装またはクライアント側実装のスケルトンを作成します。同等の方法論が WCF に存在することを確認してください)、他のすべてのシステムがクエリを実行できます。

多言語のクライアントを使用しているため、Web サービスが最良の選択であり、(ビジネス ロジックの実装は無視して) API 上で数分の作業を行うだけでよいと思います。wsdl または xsd ファイルをすべてのクライアント ソフトウェアの開発者に配布して、システムへのインターフェースとして簡単かつ迅速に使用できます。

于 2008-12-15T15:11:28.477 に答える
1

オブジェクト API を公開すると思います。上記の別の投稿で述べた理由ではありませんが、XML を公開すると、変更がより困難な固定形式になります。

おそらく、厳密に型指定されたビジネス オブジェクトの API は、XML と同じくらい変更が難しく、どちらも再コンパイルと再ビルドが必要になります。だからといって、XML を破棄すべき理由にはなりません。

その理由 - IMNSHO - は、抽象化のレベルです。API レベルでは、どのビジネス オブジェクトまたはサービスが他のどのビジネス オブジェクトに対してどのアクションを実行できるかという観点から話しています。したがって、API はビジネス オブジェクトの観点から話す必要があります。

ここの別の投稿で既に述べたように、XML 表現を使用してビジネス オブジェクトをいつでもバックアップできます。ビジネス オブジェクトとサービスの XML 表現を低レベルの抽象化で API に保持することで、XML のすべての柔軟性が提供されると同時に、優れたセマンティクスを持つ高レベルの API を構築できます。

于 2008-12-16T12:44:34.263 に答える