コンポーネント
TDataSourceは、データベース対応コントロールと、値を取得するデータセット(TDataSetの子孫)の間のブリッジです。
TClientDataSetはそのようなデータセットの1つです。TClientDataSetは、たとえばxmlファイルに含まれるデータにアクセスするために単独で使用できますが、TDataSetProviderに接続することもできます。
TDataSetProviderは、メモリ内のTClientDataSetと、ある種のドライバーを介してデータベースからデータを取得する実際のデータセットとの間のブリッジです。クライアントサーバー開発では、通常、TRemoteDataSetProvider(名前が異なる場合があります。これらのコンポーネントを頻繁に使用することはありません)が表示され、クライアントとサーバー間のギャップを埋めます。
TSQLDataSetは、データベースからデータを取得する実際のデータセットです。
このカルテットがすべて1つの実行可能ファイルに含まれているのを見るのは奇妙に感じます。サーバー側のTSQLDataSetがTRemoteDataSetProviderのカウンター部分に接続されていることを期待します。ただし、組み込みデータベースを使用すると、ブリーフケースモデルをサポートする方法になる可能性があります。これは、TClientDataSetが非常に役立つ場所です(TClientDatasetは非常に強力であり、その長所の1つにすぎません)。
単一のデータモジュール
痛い。単一の巨大なデータモジュールは、遅延プログラミングまたはデータモジュールの使用方法に関する誤解の結果です。データベース接続を「ホスト」する単一のデータモジュールがあり、それがアプリケーションの側面により厳密に焦点を合わせた他のさまざまなデータモジュールによって使用されるのは完全に正常です。
ドメインの抽象化
ビジネスモデルの抽象化に関して、dbexpressとdatasnapは実際にはビジネスモデルのどこにあってはなりません。それらはデータレイヤーの一部である必要があります。
TDataSource、TClientDataSet、およびカスタムTDataSetProviderの子孫を使用して、UIをビジネスモデルから分離したまま、UIのデータベース対応コントロールの機能を活用できます。この場合、カスタムTDataSetProviderは、クライアントデータセットとドメインレイヤーのコレクションおよびインスタンスの間のブリッジになります。
それでも、TRemoteDataSetProvidersまたはストレートTDataSetの子孫(TSQLDataSetなど)を使用してドメインレイヤーにデータを提供する、別のデータレイヤーが表示されることを期待します。
あなたが言及した単一の巨大なデータモジュールは、そのデータレイヤーの一部である可能性があり、クライアントデータセットはビジネスレイヤーにそのデータを提供します。一般的なカルテットの一部としてTDataSourceについても言及しているように、アプリケーションはおそらくRADデータ対応の方法で開発されており、UIコントロールは基本的にデータベースの列/テーブルに直接接続されています。
このアプリケーションをより階層化されたアーキテクチャに変換する場合は、慎重にゆっくりと踏み込んでください。最初に現在のアーキテクチャを理解し、この種の変換が与える影響を理解するのに十分な知識を身に付けてください。Sergが提供するリンクは確かにそこであなたを助けます。Pawel Glowackiは、DataSnapについて幅広く書いています。