はじめに
Microsoftは、RAD(Rapid Application Development)ツールのための優れたツールを開発者に提供することで知られています。MS Access、Visual Studio 6、Visual Interdevなどには、コントロールやプロパティ、自動生成コードを視覚的に組み合わせてすばやく適用するための環境が用意されています。Visual Studio .NETはこれらのツールを統合し、数多くのプログラミング言語に対応している素晴らしい開発環境です。
Visual Studio .NET(以下、VS)には、アプリケーション開発に役立つウィザードが多数用意されています。しかし残念ながら、ウィザードでは効率的なプログラミング手法が使われない傾向にあります。具体的に言うと、コードが複数の層に分離されず、ビジネスロジックが分離されないのです。VSの既定のモデルでは、データオブジェクトをフォームにドラッグ&ドロップしながらフォームを作成します。コードは必要に応じて作成されますが、データアクセスコードとビジネスロジックコードが区別されず、ユーザーインターフェイスのフォームオブジェクト内に直接作成されます。このため、コードの再利用が難しく、同じテーブルデータを複数のフォームで使用する場面ではコードの重複が発生します。
今日のアーキテクチャでは、コードを複数の層に分離するN階層アプローチが推奨されています。N階層アプローチでは、少なくともデータアクセス層、ビジネスロジック層、プレゼンテーション層の3つが必要です。アプリケーションの各種パーツを複数のサーバー上に置く分散アプリケーションの場合は、より多くの層が必要になることもあります。
層を分離する主なメリットは2つあります。1つはコードの再利用が容易になることで、もう1つはコードとデータベースの結合を回避できることです。データアクセス層とビジネスロジック層を分離すると、データのアクセスと使用に必要なコードをあちこちに繰り返し記述しなくても、さまざまなフォームを使ってデータを収集および表示できます。コードとデータベースの結合を回避すると、データベースのスキーマを変更する際にコードを修復する量が少なくなり、データストレージプロバイダを変更するときでも、コードを大幅に変更せずに済みます。
Microsoft .NETは、開発者にOOP(オブジェクト指向プログラミング)の標準への移行を促し、支援するという点で大幅な進歩を遂げてきました。OOPは高度で深遠な話題なので、ここでは詳しく説明しませんが、1つだけ、データベースアプリケーションの開発者にとって興味深い「ビジネスオブジェクト」について簡単に触れておく ことにします。データベースのテーブルとフィールドがエンティティと属性の実装において重要な役割を果たすのに対し、ビジネスオブジェクトは特定のエンティティのプロパティと動作を併せて実装します。アプリケーションが各エンティティ(テーブル)を表すビジネスオブジェクトクラスのインスタンスを作成すると、そのプロパティを介して属性にアクセスし、メソッドを介してエンティティの動作を呼び出せるようになります。また、この手法を採用すると、エンティティに関するコードをすべて1つの場所にまとめておいて、アプリケーションのその他のパーツから簡単に参照することが可能です。さらに、ビジネスオブジェクトで継承やポリモーフィズムを利用すると、非常に柔軟で強力なプログラミングが可能になるため、わずかなコードで大量の処理を実行することができます。
パート2 - Visual Studio 2005の使用
新しいバージョンの.NETとVisual Studioでは、データベース中心のアプリケーション開発方法に変化をもたらすさまざまな機能拡張が行われています。本稿では、特にデータソースとパーシャルクラスに注目します。
Binding Context Managerが拡張され、大幅に簡略化されてBinding Sourcesコンポーネントになっています。このコンポーネントを使うと、フォーム上でデータセット、Webサービス、およびビジネスオブジェクトへのデータバインドをより適切に行うことができます。
パーシャルクラスは、複数のファイルにまたがるクラスを作成するための手段です(コンパイル時にファイルが結合されます)。型指定されたデータセット(Typed DataSet
)クラスは、パーシャルクラスを含むように拡張されており、生成されたコードと開発者が記述するコードを分離して、複雑な継承を行わずにビジネスロジックをデータセットクラスに追加できるようになっています。
準備作業
VS2005を開いたら、[File]-[New Project]を選択して新しいプロジェクトを作成し、VB Windowsプロジェクトから作業を開始します。ウィンドウの下部にあるダイアログで、プロジェクトに「NorthwindWin」、ソリューションに「Northwind」という名前を付けます。