n 層データ アプリケーションの概要
更新 : 2007 年 11 月
n 層データ アプリケーションは、複数の層に分離されるデータ アプリケーションです。n 層アプリケーションは、"分散アプリケーション" および "多階層アプリケーション" とも呼ばれ、クライアントとサーバー間に分散された別個の層に処理を分離します。データにアクセスするアプリケーションを開発する場合は、アプリケーションを構成する各種の層を明確に分離する必要があります。
一般的な n 層アプリケーションには、プレゼンテーション層、中間層、およびデータ層が含まれます。n 層アプリケーションで各層を分離する最も簡単な方法は、アプリケーションに組み込む層ごとに別個のプロジェクトを作成することです。たとえば、プレゼンテーション層を Windows フォーム アプリケーションにする一方で、データ アクセス ロジックを、中間層に配置されるクラス ライブラリにすることができます。また、プレゼンテーション層では、WCF サービスなどのサービスを通して中間層のデータ アクセス ロジックと通信できます。アプリケーション コンポーネントを別個の層に分離すると、アプリケーションの保守容易性とスケーラビリティが向上します。これは、ソリューション全体を再設計しなくても 1 つの層に適用できる、新しい技術を簡単に導入できるようにすることで実現されます。さらに、通常、n 層アプリケーションでは、機密情報が中間層に格納され、プレゼンテーション層から分離されます。
Visual Studio には、開発者が n 層アプリケーションを作成するときに役立つ機能がいくつか用意されています。
データセット デザイナには、データセット (データ エンティティ層) と TableAdapter (データ アクセス層) を別個のプロジェクトに分離できるようにする DataSet プロジェクト プロパティが用意されています。
オブジェクト リレーショナル デザイナ (O/R デザイナ) には、DataContext とデータ クラスを別個の名前空間に生成する設定が用意されています。これにより、データ アクセス層とデータ エンティティ層の論理的な分離が可能になります。
LINQ to SQL には、アプリケーションの別々の層から DataContext をまとめることができる Attach メソッドが用意されています。詳細については、「LINQ to SQL を使用する n 層アプリケーションとリモート アプリケーション」を参照してください。
リモート データベースとローカル データベース キャッシュの間の同期を構成できる [データ同期の構成] ダイアログ ボックスには、詳細構成オプションが用意されています。このオプションを使用すると、サーバーとクライアントを別個のプロジェクトに設定できます。詳細については、「チュートリアル : ローカル データベース キャッシュを n 層アプリケーションに追加する」を参照してください。
プレゼンテーション層
プレゼンテーション層は、ユーザーがアプリケーションと対話する層です。多くの場合、追加のアプリケーション ロジックも含まれています。一般的なプレゼンテーション層のコンポーネントには、次のようなものがあります。
データ バインディング コンポーネント (BindingSource や BindingNavigator など)
データのオブジェクト表現 (プレゼンテーション層で使用する LINQ to SQL エンティティ クラスなど)
ローカル データベース (Microsoft Synchronization Services for ADO.NET を使用することでデータ層のサーバーと同期できる、接続の頻度があまり高くないアプリケーションのローカル データベース キャッシュなど)
次の図は、Visual Studio で使用できる機能および技術と、n 層アプリケーションのプレゼンテーション層においてそれらが適合する位置を示しています。
プレゼンテーション層
通常、プレゼンテーション層は、サービス参照 (Windows Communication Foundation サービスと ADO.NET データ サービス アプリケーションなど) を使用して、中間層にアクセスします。プレゼンテーション層からデータ層に直接アクセスすることはありません。プレゼンテーション層は、中間層のデータ アクセス コンポーネントを通してデータ層と通信します。
中間層
中間層は、プレゼンテーション層とデータ層が互いに通信するために使用する層です。一般的な中間層のコンポーネントには、次のようなものがあります。
ビジネス ロジック (ビジネス ルールやデータ検証など)
次のようなデータ アクセス コンポーネントおよびロジック
データのオブジェクト表現 (LINQ to SQL エンティティ クラスなど)
共通のアプリケーション サービス (認証、承認、パーソナル化など)
次の図は、Visual Studio で使用できる機能および技術と、n 層アプリケーションの中間層においてそれらが適合する位置を示しています。
中間層
通常、中間層は、データ接続を使用してデータ層に接続します。一般に、このデータ接続はデータ アクセス コンポーネントに格納されます。
データ層
データ層は、基本的に、アプリケーションのデータを格納するサーバー (SQL Server を実行しているサーバーなど) です。
次の図は、Visual Studio で使用できる機能および技術と、n 層アプリケーションのデータ層においてそれらが適合する位置を示しています。
データ層
プレゼンテーション層のクライアントからデータ層に直接アクセスすることはできません。代わりに、プレゼンテーション層とデータ層の間の通信では、中間層のデータ アクセス コンポーネントが使用されます。
n 層開発のためのヘルプ
n 層アプリケーションを操作するための情報については、次のトピックを参照してください。
方法 : データセットと TableAdapters を別々のプロジェクトに分離する
チュートリアル : n 層データ アプリケーションへの検証の追加
チュートリアル : ローカル データベース キャッシュを n 層アプリケーションに追加する
LINQ to SQL を使用する n 層アプリケーションとリモート アプリケーション