14

ASP.Net MVC 4 Webプロジェクトに静的HTMLファイルがあり、jQuery + jQuery Templates + KnockoutJSの組み合わせを使用してRESTベース(AzureでホストされACSを使用して保護されたASP.Net MVC 4 WEB API)を使用するのはなぜでしょうか。Web APIは、Entity Frameworkを使用して、$。ajax()を使用して取得し、KnockoutJSを使用してバインドできるJSONシリアル化オブジェクトを返すことができます。

このアーキテクチャに付加価値を与えるASP.NetMVC(Webページ用)が提供するものは何ですか?
私の頭の上で、私は考えることができます:

  1. マルチデバイスのサポート(デバイスの検出とテンプレートの交換)
  2. 送信されたデータのサーバー側の検証(検証をWEB APIに配置することもできるのでわかりませんか?)
  3. 静的なhtmlファイルを使用している場合でも(とにかくASP.Net MVCを使用しているため)、URLを書き換えることができます。

誰かが私がこれをよりよく理解するのを手伝ってくれる?前もって感謝します。

4

5 に答える 5

7

素晴らしい質問です。Knockout プロジェクトを進めるにつれて、MVC / Razor コードがますます少なくなっていることは確かですが、サーバー側で決定したいビューのいくつかの側面が常にあると思います。

レイアウト ページでログイン/ログアウト パネルをレンダリングするかどうか、アクセス可能なものに関するロール関連の決定など、基本的なコンテキストに関するもの。誰かが実際に何かをしようとすると、Knockout でそのほとんどを達成できますが、ビューの可能なすべての部分に対応するために、膨大な量の膨張が発生する可能性があります。

おそらくアプリケーションによって異なりますが、ほとんどの Web アプリでは、サーバーのレンダリング時に決定する必要があることと、クライアントで実行する必要があることの間には、かなり常識的な区分があると思います。

他に何もないとしても、ビュー内のリンクなどを検索エンジンによってインデックス化することが必要な場合があります。たとえば、「最新の 10 製品」を JSON で渡し、Knockout テンプレートでハイパーリンクを使用してレンダリングすると、それを失うことになります。

于 2012-08-14T23:11:09.670 に答える
3

それは本当に仕事に適切なツールを使用することの問題です。

ノックアウトを使用して開発を行った後に私が知ることができることから、それは観察可能なものとリアルタイムのDOM更新から得られる本当の力です。これにより、クライアント側アプリケーションの豊富なインターフェイスの作成が迅速になり、管理が容易になります。ただし、ストレートRazorページを操作するよりも、さらに時間がかかり、実装が困難です。したがって、Knockout JSは、大量のデータ駆動型UI更新を「無秩序に」行う必要がある特定のアプリケーションにとっては利点ですが、他のアプリケーションにとってはやり過ぎになります。

于 2012-08-15T02:44:06.883 に答える
1

このシナリオでクライアントが Javascript を有効にしていない場合、サイトは役に立たず、適切な代替手段を提供する方法がありません。

MVC フレームワークと Razor 構文を使用すると、jQuery や AJAX を使用しなくても、動的に生成されたデータ駆動型のコンテンツを構築できます。MVC は、Javascript が有効になっているかどうかに関係なく、モデルとビューの間の懸念事項を明確に分離します。

于 2012-08-14T19:40:11.540 に答える
1

ほら、これ読んで。それからの引用:

ページ全体の読み込みを中心に Web アプリを構築し、より動的に動作するように「段階的に拡張」するだけでは、もはや十分ではありません。高速で応答性が高く、最新のアプリを構築するには、アプローチを完全に再考する必要があります。

あなたの質問に対して、MVVM アーキテクチャに付加価値を与える MVC は何を提供しますか? カスタム コンテンツをさまざまなデバイスにケータリングすることは利点になる可能性がありますが、CSS メディア クエリでもある程度は可能です。決定は、サーバーからデバイスに送信するバイト数に帰着します。

MVC や WebAPI を使用せずにサーバー側の検証を行うこともできます。そのために ModelBinder または ModelState.IsValid を使用する必要はありません。FluentValidation.NET のようなものを調べてください。これにより、Web/HTTP レイヤーの 1 レイヤー下であっても、サーバー上で非常に複雑な入力検証を行うことができます。もちろん、jQuery 検証などを使用してクライアント側を検証することもできます。

ここで、サーバー(コントローラーアクションまたは剃刀)レベルでセキュリティレベルの処理を行う方が少し簡単で、もう少し「信頼できる」という他の回答に同意します。しかし、MVVMのテスト可能性について言及した人は誰もいません。コントローラー アクションやその他のサーバー側コードに関する単体テストを作成するのは非常に簡単です。これは、MVVM アプリを単体/統合/UAT テストできないと言っているのではなく、より多くの労力 IMO が必要なだけです。

于 2012-08-15T13:09:48.607 に答える
1

セキュリティは、おそらく私が考える最大の利点です。その背後にはまだ構造 ASP.NET があります。はい、そのとおりです。ビューでは、確かにかみそり構文を使用して、ビュー モデルを Knockout でレンダリングできます。JSON.NET により、データ バインディングがこれまで以上に簡単になります。最終的には、MVC は将来の方程式の一部ではなくなるのでしょうか? (Meteor js もチェックしてください。これは非常にクールです。このタイプの動的モデル バインディングは、javascript atm以外では不可能です。)

また、実際の動作を見たい場合は、MVC とノックアウトを使用した優れた Codeproject を見つけました。http://www.codeproject.com/Articles/424642/Customer-KnockoutJS-and-MVC-demo-using-JSON

于 2012-08-14T20:00:03.760 に答える