n 層 .NET Framework データ アプリケーションの概要
Note
データセットと関連クラスは、アプリケーションがデータベースから切断されている間にアプリケーションがメモリ内のデータを操作できるようにする、2000 年代初期からのレガシ .NET Framework テクノロジです。 テクノロジが特に役立つのは、ユーザーがデータを変更し、変更をデータベースに戻して保持できるようにするアプリケーションです。 データセットは非常に優れたテクノロジであることが証明されていますが、新しい .NET アプリケーションでは Entity Framework Core を使用することをお勧めしています。 Entity Framework には、オブジェクト モデルとして表形式データを操作する、より自然な方法が用意されており、よりシンプルなプログラミング インターフェイスが備わっています。
"n 層" データ アプリケーションは、複数の "層" に分けられたデータ アプリケーションです。 n 層アプリケーションは、"分散型アプリケーション" または "多層アプリケーション" とも呼ばれ、処理を別個の層に分け、クライアントとサーバー間に分散します。 データにアクセスするアプリケーションを開発する場合は、アプリケーションを構成する各種の層を明確に分離する必要があります。
一般的な n 層アプリケーションには、プレゼンテーション層、中間層、およびデータ層が含まれます。 n 層アプリケーションで各層を分離する最も簡単な方法は、アプリケーションに組み込む層ごとに別個のプロジェクトを作成することです。 たとえば、プレゼンテーション層を Windows フォーム アプリケーションにする一方で、データ アクセス ロジックを、中間層に配置されるクラス ライブラリにすることができます。 また、プレゼンテーション層では、Web サービスなどのサービスを通して中間層のデータ アクセス ロジックと通信できます。 アプリケーション コンポーネントを別個の層に分離すると、アプリケーションの保守容易性とスケーラビリティが向上します。 これは、ソリューション全体を再設計しなくても 1 つの層に適用できる、新しい技術を簡単に導入できるようにすることで実現されます。 さらに、通常、n 層アプリケーションでは、機密情報が中間層に格納され、プレゼンテーション層から分離されます。
Visual Studio には、開発者が n 層アプリケーションを作成するときに役立つ機能がいくつか用意されています。
データセットには、データセット (データ エンティティ層) と TableAdapters (データ アクセス層) を別個のプロジェクトに分離できるようにする DataSet Project プロパティが用意されています。
Visual Studio の LINQ to SQL ツールには、DataContext とデータ クラスを別個の名前空間に生成する設定が用意されています。 これにより、データ アクセス層とデータ エンティティ層の論理的な分離が可能になります。
LINQ to SQL には、アプリケーションのさまざまな層から DataContext をまとめることができる Attach メソッドが用意されています。 詳細については、「LINQ to SQL を使用する n 層アプリケーションとリモート アプリケーション」を参照してください。
プレゼンテーション層
プレゼンテーション層は、ユーザーがアプリケーションとやりとりする層です。 多くの場合、追加のアプリケーション ロジックも含まれています。 一般的なプレゼンテーション層のコンポーネントには、次のようなものがあります。
データ バインディング コンポーネント (BindingSource や BindingNavigator など)
データのオブジェクト表現 (プレゼンテーション層で使用する LINQ to SQL エンティティ クラスなど)
通常、プレゼンテーション層は、サービス参照 (たとえば、Visual Studio アプリケーションでの Windows Communication Foundation サービスと WCF Data Services) を使用して中間層にアクセスします。 プレゼンテーション層からデータ層に直接アクセスすることはありません。 プレゼンテーション層は、中間層のデータ アクセス コンポーネントを通してデータ層と通信します。
中間層
中間層は、プレゼンテーション層とデータ層が互いに通信するために使用する層です。 一般的な中間層のコンポーネントには、次のようなものがあります。
ビジネス ロジック (ビジネス ルールやデータ検証など)
次のようなデータ アクセス コンポーネントおよびロジック
データのオブジェクト表現 (LINQ to SQL エンティティ クラスなど)
共通のアプリケーション サービス (認証、承認、パーソナル化など)
次の図は、Visual Studio で使用できる機能および技術と、n 層アプリケーションの中間層においてそれらが適合する位置を示しています。
中間層
通常、中間層は、データ接続を使用してデータ層に接続します。 一般に、このデータ接続はデータ アクセス コンポーネントに格納されます。
データ層
データ層 は、基本的に、アプリケーションのデータを格納するサーバー (たとえば、SQL Server を実行するサーバー) です。
次の図は、Visual Studio で使用できる機能および技術と、n 層アプリケーションのデータ層においてそれらが適合する位置を示しています。
データ層
プレゼンテーション層のクライアントからデータ層に直接アクセスすることはできません。 代わりに、プレゼンテーション層とデータ層の間の通信では、中間層のデータ アクセス コンポーネントが使用されます。
n 層開発のためのヘルプ
n 層アプリケーションを操作するための情報については、次のトピックを参照してください。
データセットと TableAdapters を別々のプロジェクトに分離する
LINQ to SQL を使用する n 層アプリケーションとリモート アプリケーション