従来の Web フォーム アプリケーションをまったく新しい MVC アプリケーションに拡張/変換しています。この拡張は、テクノロジーとビジネス ユース ケースの両方の観点からです。レガシー アプリケーションは、よくできたデータベース駆動型設計 (DBDD) です。たとえば、オペレーター、スーパーバイザー、店主などのさまざまなタイプの従業員がいて、新しいタイプを追加する必要がある場合、いくつかのテーブルに行を追加するだけで、UI に追加するすべてのものが自動的に表示されます。新しいタイプの従業員を更新します。ただし、層の分離はあまり良くありません。
新しいプロジェクトには主に 2 つの目標があります
- 拡張性 (現在および将来のパイプライン要件に対応)
- パフォーマンス
拡張性の要件を念頭に置いて、データベース駆動設計 (DBDD) をドメイン駆動設計 (DDD) に置き換える新しいプロジェクトを作成するつもりです。ただし、データベース駆動設計からドメイン駆動設計への移行は、従来の DBDD アプリケーションのパフォーマンスと比較すると、パフォーマンス要件に逆の影響を与えるようです。従来のアプリケーションでは、UI からのデータの呼び出しはデータベースと直接対話し、データは DataReader または (場合によっては) DataSet の形式で返されます。
厳密な DDD が導入された今、データの呼び出しはビジネス レイヤーとデータ アクセス レイヤーを経由してルーティングされます。これは、各呼び出しがビジネス オブジェクトとデータ アクセス オブジェクトを初期化することを意味します。1 つの UI ページがさまざまな種類のデータを必要とする場合があり、これは Web アプリケーションであるため、各ページは複数のユーザーによって要求される可能性があります。また、MVC Web アプリケーションはステートレスであるため、要求ごとにビジネス オブジェクトとデータ アクセス オブジェクトを毎回初期化する必要があります。したがって、MVC ステートレス アプリケーションの場合、DBDD は DDD よりもパフォーマンスが優れているようです。
または、DDD が提供する拡張性と DBDD が提供するパフォーマンスの両方を達成する方法が DDD にあるのでしょうか?