質問してくれてありがとう。
HTの作者であるジョンは答えを提供しました。私は、Breezeプロジェクトのプリンシパルとして、彼に同意する傾向があります:)
HotTowelは、基盤を構築するための基盤を生成します。それは建物そのものではありません。
これは、特定の種類のアプリケーション、つまり、協力するJavaScriptおよびASP.NETテクノロジの特定のセットに基づくCRUDアプリケーションを対象とした基盤です。Breezeは貢献者です...しかし、それだけではありません。MVVM設計と双方向データバインディングを備えたKnockoutは、CRUDアプリに典型的なデータ入力タスクに特に適しています。
もちろん、他の種類のSPAもあります。ほとんどの場合情報を表示し、ユーザー入力をほとんど受け入れない重要なクラスのアプリがあります。このようなアプリはデータバインディングの恩恵をあまり受けず、それらを作成する人々は、データバインディング全般、特にKOについてかなり敵対的になる可能性があります。
私のポイントは、HTは特定のクラスのアプリケーションを対象としているということです...少なくとも持続的な人気で測定した場合、非常に成功しているアプリケーションです。それらのアプリを作成する人々に商品を届けます。他の種類のアプリの出発点としては適切ではない場合があります。
Breezeへの簡単な道は、Web API、EF、およびリレーショナルデータベースを経由することは事実です。それらを取り除いてください。そうすれば、サーバー上で(そしてクライアント上でもう少し)より多くのコードを書くことができます。それはあなたにとって完璧なトレードオフかもしれません。
Breezeの作者は、その道をより簡単にしたいと思っています。BreezeJSがそれを難しくするとは思わない。「そよ風がとても使いづらくなる」というあなたの言葉がわかりません。試しましたか?
クライアントは、選択した方法で任意のHTTPリソースと通信できます。既存のWebAPIコントローラーを使用するのは非常に簡単です(Breeze Web APIコントローラーを使用すると簡単ですが)。必要に応じて、増幅.jsを使用できます(ところで、Breezeに増幅を使用してAJAX呼び出しを行うように指示できます)。必要がなければ、BreezeEntityManager
を使用してデータを照会および保存する必要はありません。
BreezeJSの残りの部分はまだあなたにとって価値があるかもしれません。データを取得して保存する方法と、Entity-ChangeSetスタイルとCommand / Queryスタイルのどちらを使用するかを理解した後は、まだやるべきことがたくさんあります。
これらの質問に対する答えを見つける必要があります。
- 生のJSONデータをバインド可能なオブジェクトにどのように形作りますか?
- サーバーへの冗長なラウンドトリップを行わずに、これらのオブジェクトをどのように保持し、複数の画面で共有しますか?
- アドレスをStatesAndProvincesのコンボボックスにバインドするときと同じように、あるオブジェクトから関連するオブジェクトにどのように移動しますか?
- 変更をどのように追跡しますか?
- それらをどのように検証しますか?
- アプリが「墓石」になったときに、データの一部またはすべてをローカルストレージにどのように保存しますか?
Breezeは、クエリを実行して保存したくない場合でも、これらの雑用を支援できます。
そして、あなたが答えが「私はそれをすべて自分でやる、ありがとう」のままであるなら...まあ、あなたのHotTowelプロジェクトからBreezeを削除するのは次のように簡単です:
Uninstall-Package breeze.webapi