編集、2020/09: 誰かが不思議に思っているなら、12 年後、はい、私たちは今では JSON と Kubernetes に移行しています。原文が続きます。
明らかに、すべての人のニーズを満たす単一のソリューションはありません。アーキテクチャは常にトレードオフです。もともと Web ゲームの RAD を対象としたフレームワークを作成したいと考えています。ターゲット言語は PHP ですが、アーキテクチャは広く適用できる必要があります。
このフレームワークの目標は次のとおりです。結果を達成できる方法の柔軟性。開発者にとって最大限の快適さ。LEGO® ブロックのようなモジュールの接続。多くのタイプの入力、多くのタイプの出力、処理のための 1 つのフォーマット。
優先事項ではない目標は、速度、企業での使用、および収益です。オープンソースプロジェクトのはずです。
この設計の要は、変換前のすべてのコンテンツが XML で処理されることです (アイデアは、私が使用した EAI システム eGate に基づいています)。データ抽象化レイヤー (できればスマートな ORM) は、現在は重要ではありません。出力は、XSLT またはその他のカスタム モジュールを使用して生成されます。事実上すべてのクライアント (古いブラウザー用の HTML、最新のブラウザー用の XHTML/HTML5、モバイル クライアント用のシンプルな HTML、AJAX/XMLRPC 用の XML など) に対応します。
XML を使用する主な理由は次のとおりです。
- 有名な規格です
- コンテンツをナビゲートおよび変更するための XPath、SimpleXML、および DOM などの既存のツール
- コードを任意のタグ スープに変換するための強力で統一された方法を提供する XSLT
- XML マークアップは非常に読みやすいので、JSON や YAML の利点がここで違いを生むとは思いません。
- コンテンツは簡単に積み重ねることができ、XSLT で正しく変換されている限り、コンテンツの順序は重要ではありません。
ページ生成プロセスは、次のフェーズで構成されます。
- 前処理: モジュールの初期化、GPCS データの処理、デフォルトの [XML] テンプレートの適用
- 処理/生成: ビジネス ロジックの主要部分であり、肥大化した XML を最大限のデータで生成します (バラストを生成しないように最適化されていることを願っています)。
- 処理: いくつかの追加のビジネス ロジック。たとえば、マークアップの一部の削減、変換の準備、レポート、統計など。
- 後処理: 変換エンジン (ほとんどの場合 XSLT) を介して XML を解析し、出力します。
コンテンツは大量のメタデータ (タグ、権限、重要性、必要性、目的の出力タイプなど) を使用して生成され、後処理中に取り除かれます。
それで、私の質問は次のとおりです。速度を除いて、このソリューションの欠点は何ですか? フレームワークの開発/保守とそのアプリケーションの両方で、どこで問題が発生する可能性がありますか? このアーキテクチャの欠点は何ですか?