私は実際に実装している、または現在、投稿されたオプションの3つすべてを使用していますので、私はそれを見せます。これであなたの探しているものが少しわかりやすくなりました。
のOData
ときのODataは、内部アプリケーションに最適です:あなたは、サーバーとクライアントの両方である
- 。
- Entity Frameworkを使用しています。
- モデルで継承を使用せず、サブコレクションを照会することを期待していません。
クライアント側でIQueryableを使用できるため、Odataはすばらしいです。しかし、これにはいくつかの制限があります。私の頭の上の2つは、あなたが継承されたモデルを使って作業することがやや厄介であり、あなたはcan't do nested collectionsです。
実際にはsupported LINQ capabilities areがわからないという問題もあります。
ODataは、サービスレイヤが絶対必要であり、単純なCRUD操作のみを実行することを期待しています。すべてのOData問題の主な問題は、たまには回避できないハード壁になります。クライアントのコンシューマーコードは本当に最高の部分であり、C#を使用していない場合はおそらくその価値はありません。
また、EF自動メタデータサポートを使用しないと、コンシューマがスキップしているかどうかにかかわらず、同じ量のコードを書くことになります。 OData用のRailsラッパーがありますが、これはすべて比較的新しいものです。本当に大きなMSパートナーの他に、野生のODataはまだ見えません。
Oデータ認証とフィルタリングは、かなり裸のATMです。データを制限する必要がある場合は、あなた自身が多くの許可関連コードを書くでしょう。 SELECT * FROM TABLEを権限で制限する必要がある場合は、厄介なコードを書く準備をしてください。
MVC 2
MVCは、RESTfulなサービスを作成するためのかなり良いです。あなたは動詞をサポートしており、それは簡単にreturn JSONResult
です。唯一の潜在的な欠点は、コーディングで多くのエラー処理が行われ、すべてのビューモデルがステータスコードとエラーメッセージを示す基本クラスから継承されることです。
また、メッセージの返信を希望するファンシーやコンベンションの駆動方法に応じて、表示エンジンを微調整することもできます。 MVCの大きな利点は非常に拡張性があり、あなたが望むものを何でもほとんど行うことができます。私はform/ajax calls /とrestサービスを同じコントローラアクションに組み合わせることが大変です。一度実装すると、同じ操作の3つのフレーバーが得られます。 MVCを短くすることは難しいでしょう。なぜなら、あなたが必要とするほとんどすべてを行うためにねじれている可能性があるからです。
MVCサービスの大きな利点は、サービスと一緒に配備されたアプリケーションで少しの管理UIを盗み見ることができることです。非常に便利な2つのサイトを展開する必要はありません。
WCF REST
だから私は、ごく限られた容量でWCFの残りの部分を使用していますし、それは大丈夫...私は3年間、WCFを使用しました...ようだと私はいつもに不満ですどのようにイライラして複雑にするかは、それを拡張することです。 ODATAのように、密かな道を歩いていくと密閉されたクラスと機能の拡張不能な洞窟に入るでしょう。これは、MVCの拡張性とは正反対です。
もう1つの問題は、WCFの上に構築された建物とそれに沿ったすべての狂気です。私はいつもPhDがWCFを効果的に使うことが必要だと言ってきました。 Rick Strahlにはpain points of WCF RESTについての良い記事がありました。物事は変わったが、価値があるとは分からない。
WCF RESTは本当に有望であり、私はそれを使用しています。私はそれを推薦するのに十分ではありません。
要点
、あなたの消費者がわからない場合、私はあなたがあなたのAPIを知らないと仮定と思います。ユースケースがあり、それをコードするまでサービスを構築しないでください。
MVCは最も拡張性があります。MVCは、ODataとWCFのようなMSの機能を拡張することよりも優れています。
Facebook、Amazon、PayPal、Ebayのようなすべての「大きな男の子」は、ODataのような既知のパターンやスキーマに実際に準拠していないAPIを持っています。あなたのRESTサービスは本当にあなたがそれを作るものです。これは#1に関連しています。消費者が最初に作業するのを容易にすることに集中する。
質問に回答するのに十分な情報がありません。すでに答えを見てください。彼らは物質を持っておらず、ちょうど「私が持っているのでこれを使う」。これらの質問に答える唯一の方法は、正確な要件と機能を比較することです。 「低帯域幅」以外のものは提供していないため、基本的なフレームワークとは関係がなく、RESTの定義である「多くのクライアント」は、あなたにどんな忠実なアドバイスをも与えることはほとんど不可能です。 – jfar
@Alex:/彼は "ベスト"と "WCF 4、ASP.NET MVC 2とWCF REST"を引用していると考えると、質問の奇妙な解釈 – jfar
@Alexありがとう。 @jfar私はあなたのためにそれをより具体的にしようとしました。私はちょうど誰かが彼らがどちらかのルートに長い道のりで戦って、それが完全であるか欠陥であることを発見したら、私に知らせてほしい – BritishDeveloper