3

私はインタビューから来ました.CTO(最高技術責任者)は、(5年以上稼働している)システムがあり、パフォーマンスだけのためにMVCを使用することはまだ好まないと言っていました。ほとんどの MVC がリフレクションを使用してメソッドを呼び出す (つまり、本質的に遅い) ことは知っていますが、多くの MVC (Struts がそれを行うことは知っています。コードを読んでいます) は、呼び出すメソッドをキャッシュするため、呼び出すメソッドを「見つける」必要はありません。常に呼び出す。

今のところ、スクリプトレットに固執しています (そして JSPTags は使用していません)。私は、MVC よりも純粋にスクリプトレットに行く大きなパフォーマンスがあるのだろうか? セッションの移行やセッションの追跡などを避けるために、ステートレス セッションとステートフル セッションを優先します。

CTO の言うことが本当なら、なぜ MVC がまだ好まれているのですか (MVC が存在する理由はわかっていますが、パフォーマンスに関してです)。

4

3 に答える 3

3

反対の議論:

  • 良い数年以来、反射はもうそれほど遅くはありません。
  • ここ数年、ハードウェアのパフォーマンスはめちゃくちゃ向上しています。
  • MVCは最終的に開発の高速化につながります。無駄な時間の削減=より多くの$$$の節約。

私は仕事を渡します。

于 2010-11-18T15:52:47.853 に答える
1

これはCTOの奇妙な論理です。彼が何について話しているのかわからないと思います(ヒント:仕事をパスしてください!)効率がとても心配な場合は、Webアプリ全体をアセンブリ言語で書き直してみませんか?

スクリプトレットに対する議論

  • スクリプトレットは保守が難しいことで有名なので、私は好きではありません。彼らはまた虐待する傾向があります。最大のことは、ビューロジックとビジネスロジックを混同していること、または少なくとも、同じことを非常に簡単で魅力的にすることです。

  • 懸念事項を慎重に分離し、データを取り込む(したがって再利用を促進する)サービスを使用することができます。しかし、多くの場合、開発者がPHPコード(つまり、マークアップと混合されたコード)のようなJSPを作成するのを見てきました。

私はあなたがJSPで良いコードを書くことができないと言っているのではありません。それは難しいだけであり(MVCにはより多くの保護手段があると感じています)、また(私は)JSPは悪用されやすいと感じています。

MCVの引数

  • 2番目の質問に答えるには、MVCが推奨されます。これは、MVCが本質的に関心の分離を促進し、個別の領域からのロジックが他の領域にブリードすることを許可しないためです。

  • ビューレイヤーは、ビューのレンダリングのみに関係します。コントローラからメタデータを取得し、ビューを使用してデータを表示します。ここではビジネスロジックについて心配する必要はありません(心配する必要はありません)。

  • コントローラは交通警官のように機能し、リクエストを適切な宛先にリダイレクトします。コントローラは通常、すべてのビジネスロジックを実行するサービスを呼び出すことになります。

  • モデルは、アプリケーションドメインのデータと動作を担当します。モデルは、その状態に関する要求に応答し(つまり、これはビューに送信するメタデータです)、状態を変更するように指示する指示にも応答します(コントローラーから)。

  • 反射は実際にはそれほど遅くはありません。また、最近のコンピュータはかなり高速で、大量のメモリを搭載しています。パフォーマンスはそれほど重要ではありません。

  • MVCパターンは、さまざまな懸念事項を明確に分離することを促進し、開発者がクリーンで堅牢で保守可能なコードを簡単に記述できるようにします。

于 2010-11-18T15:54:26.683 に答える
0

スクリプトレットに対する MVC の利点は、他の回答で完全に説明されていますが、1 つの点が見落とされています。

リフレクションでは、ダイレクト メソッド呼び出しと比較してオーバーヘッドが発生します。リフレクションを使用して単純なメソッドを頻繁に呼び出す場合は重要です。ただし、1 回のリフレクション呼び出しによって生じるオーバーヘッドは、一般的な Web アプリケーションでの全体的な要求処理時間と比較すると問題になりません。したがって、この特定のケースでパフォーマンス上の理由からリフレクションを使用しないという決定は奇妙に聞こえます。

于 2010-11-18T16:23:47.853 に答える