私は、データベースからデータをフェッチし、UIに表示し、ユーザー入力を取り込んでデータベースに書き戻すことを主な目的とするWebベースのアプリケーションを開発しています。アプリケーションは、産業用強度アルゴリズムの処理を実行することはありませんが、ピーク時に非常に多くのヒットを受け取り(後述)、1日を通して変化します。
レイヤーは、典型的なプレゼンテーション、ビジネス、データです。データ層はデータベースサーバーによって処理されます。ビジネス層には、tcp経由でデータベースサーバーにアクセスするためのDALコンポーネントが含まれます。これらの層を層に分ける必要がある選択は次のとおりです。
- プレゼンテーション層とビジネス層は同じ層に保持できます。
- 単独で別の層にあるプレゼンテーション層と、別の層にあるビジネス層。
選択肢2の場合、ビジネスレイヤーは、httpまたはtcpを介してWCFサービスを使用してプレゼンテーションレイヤーからアクセスされます。
ビジネスレイヤーで重い処理が行われていることはないので、上記のオプション1に傾いています。同じ理由で、新しい階層を追加してもネットワーク遅延が発生するだけだと思います。ただし、スケールアップまたはスケールアウトする必要がある場合のスケーラビリティに関しては、どちらが良い方法ですか?このアプリケーションは、1時間あたり最大600万人のユーザーをサポートできる必要があります。各ユーザーセッションには妥当な量のデータがあり、ユーザーの設定やその他の詳細が保存されます。ページレベルのキャッシュも使用します。