OData標準とOData実装を明確に分離する必要があります。
標準について:
私の見解では、標準自体により、移植可能な方法で完全なメタデータを備えたOOTBアクセス可能なデータエンドポイントを使用できます。リレーションとプロジェクションのサポートにより、コンシューマーはサーバー上または後でクライアント上でビューモデルを作成できます。ODataは公開される操作(関数)をサポートしているため、自動クラッドに加えて、リレーショナルパターンにシームレスに統合するリモートメソッドを使用できることに注意してください(関数は、さらにクエリできる結果を得ることができます。サーバー、および関数は「スマートライター」コードとして機能することもできます)。
まとめ:ODataは、誰かが大規模なREST準拠のデータアクセスを必要とするときに実際に何が起こるかを形作ります。データのクエリやデータの送信など、一般的で常に繰り返されるシナリオを形式化します。これは、ポイント4で書いた内容によって影響を受ける可能性がありますが、私の意見では、OData関連の問題ではありません。これは、AJAXとマッシュアップがどのように機能するかを示しています。データの結合を処理する多くのコードを持つクライアントがあります。
あなたの他の問題は、最も適切なサーバー実装を選択することで答えることができます。すでにいくつかの実装があります:
EF4 / EF5+WCFデータサービスが最も「自動」です。このユースケースでは、懸念事項のいくつかについては正しいかもしれませんが、EFの優れた拡張性モデルを使用すると、必要に応じて自動操作を操作できます。実際のEDMXモデルによって駆動されるアプリケーションを持つことは、真のDDDシナリオです。
ASP.NET Web APIを使用すると、静的なリレーショナルエンドポイントとして認識されるものに対して、完全にコードベースのバックエンドを使用できます。これにより、DB、DBデータ間を橋渡しする中間層、およびクライアントに最適であり、そのモデルのスマートコンシューマーとしてのクライアント層。
JayDataは、これらをサーバーサイドJavaScriptで提供し、JavaScriptのダイナミズムを追加します。
SAP NetWeaverゲートウェイは、単純なシナリオで簡単に利用できる方法で複雑なSAPデータを公開します。
OOの懸念:ODataのV3では、「インスタンスメソッド」(これは間違いなくサーバーメソッドでもあります)があるため、SOAがデータと機能に残酷に分離することで実際に取り除いたものは、機能の定義+カプセル化されたデータにマッピングされます。のように機能するコンテキストデータを使用する静的メソッドのSOAの概念"this"
。
2Tierの懸念:IMHO 2Tierアーキテクチャは、クライアントがサーバー側の構造についてあまりにも多くの知識を持っているためではなく、拡張性が低く、新しいシンクリエンテスが実際のDBクライアントのように機能するために愚かだったために「古代」になりました。実際、2層は(開発者の観点から)常に操作が簡単でした。実際、ODataサーバーの実装は実際にロジックを備えた中間層であるため、実際には両方の長所を活用できます。-仮想2層アーキテクチャに対するコード-通常のn層アプリケーションと同じように拡張できます。