要件によって異なります。多数の小さなタスクに依存する高性能で低遅延のソリューションが必要な場合は、説明と類似した構造を使用することができます。ただし、Java、PHP、およびC#で最も一般的なソリューションは、これにデフォルト設定されていません。
ほとんどのWebアプリケーションはデータベースに非常に大きく依存しています。そのほとんどがデータベースに依存しているため、少なくとも1回呼び出しを行わないとページをレンダリングできません。いくつかの理由から、データベースを公開したくないのは明らかです。
- セキュリティ(Odedの言及)- ネットワークを公開することは絶対に望まないでしょう!理想的には、外部からシステムへの唯一のインターフェースはサーバーへのhttpsでなければなりません。
- 開発のしやすさ-本当に、本当に、本当に JavascriptでSQLを書きたくないので、Webプレゼンテーション用に設計された言語はRDBでうまく機能しません。たとえば、状態の概念はありません。
そのため、データベースが必要なときは、Java、C#、PHPなど、それらとうまく機能する言語を使用します。ページを生成する最も簡単な方法は次のとおりです。テンプレート言語(最も有名なPHP、しかし、JSPとASPは他の2つの非常に一般的な言語です)、ページを構築します。この言語は、他のモジュールを呼び出す構成を提供します。PHPでは、これは通常、ページまたは別のPHPファイルにあり、MVCパターンを使用します。JSPでは、スクリプトレットまたはJSP式言語を使用します。これらの他のモジュールは、DBに接続し、ロジックを実行し、ビューレイヤーに値を返すという重い作業に対応できます。最終結果は生成されたHTMLページであり、サーバーでレンダリングされてクライアントに送信されます。
データベースがページレンダラーと同じネットワーク上にある場合、パフォーマンスも向上します。クライアントは1つのリクエストを実行するだけでページを受信します。ユーザーが必要とするすべての情報を取得する前に、10〜15のDBリクエストを実行する必要があります。ネットワークでのミリ秒の遅延は、クライアントがすべてを行う必要がある場合、数秒から数分になります。
システムが大きくなると、懸念事項と中核能力の分離が重要になります。HTMLは表示に適しています。Javascriptは動的コンテンツに適しています。SQLはデータベースのクエリに最適であり、他の言語はビジネスロジックが得意です。開発者としての私たちの仕事は、利用可能なすべてのツールを使用して保守可能なシステムを構築することです。開発の容易さは、優れたシステムの大きな部分です。私の考えでは、パフォーマンスと使いやすさとほぼ同じくらい重要です。優れたシステムは時間とともに進化します。貧弱なシステムは最初からひどく書かれていて、改善されることはありませんでした。