サーバー向けの Rapid Application Development

Visual Studio .NET は、Web アプリケーションの開発をよりシンプルにします。ビジネスロジックや多くのアプリケーションは、中間層のサーバーで動作するため、中間層にフォーカスすることが、効果的な Web アプリケーション開発の鍵になります。Microsoft Visual Studio の次のバージョンでは、現在 Visual Basic の開発者が Windows ベースのアプリケーションを高速に開発する時のコンセプトである Rapid Application Development (RAD) の考え方を、中間層オブジェクト開発に応用します。ここで重要なエリアは以下の通りです。

  • 新しいサーバー エクスプローラ

  • サーバー リソース

  • サーバーベース アプリケーションの容易なセットアップと配布

  • ランタイム トラッキングを使用した配布後のアプリケーションのデバッグ

Visual Studio の次のバージョンでは、パワフルな中間層アプリケーションを開発するために必要なすべてのツールが提供されます。これにより以下のようなことが可能になります。

  • Microsoft Message Queuing (MSMQ) を使用したメッセージ デリバリや、異種プラットフォーム間での保証されたメッセージングが可能です。

  • 共有しているアプリケーション イベント ログにアプリケーション エラーを書き込んだり、タスクのスケジュールにあわせてコンポーネントを自動起動することが可能になります。

  • ネットワーク上にあるすべてのコンピュータのパフォーマンス特性を参照することができます。

  • ファイルやフォルダに変更が加えられたときに、自動的に起動して実行されるコンポーネントを作成することができます。

  • これらの機能をアプリケーションにドラッグ アンド ドロップで組み込むことが可能なため、開発者はビジネスの問題解決に集中することができます。

新しいサーバー エクスプローラ

中間層コンポーネントを作成するときにもっとも問題となるのは、ネットワーク上でどのようなアプリケーション サービスが有効であるかを判断することです。そして、その判断ができたとしても、それらを開発中のアプリケーションに組み込むことが非常に困難な場合もあります。

Visual Studio 6.0 では、Microsoft SQL ServerTM やOracle データベースを使用することが可能です。さらに、Visual Studio はこれらのデータベースのスキーマやデータを変更することができます。データビュー ウィンドウを使って、データベースを指定し、ノードを開いてデータベース構造を展開表示することが可能です。また、Visual Studio ではデータベースの構造を変更することも可能です。たとえば、SQL Server に接続して、テーブルやビュー、ストアド プロシージャなどを閲覧し、変更することができます。

Visual Studio の次のバージョンには、現在のデータ ビューから大きく進歩したサーバー エクスプローラが搭載され、データベースやメッセージ キューなど、インストールされたすべてのサーバー エレメントを含んだコンピュータ全体が閲覧可能になります。

 
** 図 1. サーバー エクスプローラ**

サーバー エクスプローラから、特定のタイプのリソースを Visual Studio のデザイナに追加することができます。アイテムがデザイナに追加されると、Visual Studio は自動的にこのリソースを参照するコンポーネントを作成します。たとえば、特定のメッセージ キューを選択してコンポーネント デザイナに追加すると、Visual Studio は自動的にメッセージ キュー コンポーネントを作成し、選択したキューを参照します。

また、サーバー エクスプローラを使用して、サービスの開始、停止、継続など、Microsoft Windows サービスの管理をすることもできます。各サービス名の隣にあるアイコンは、サービスの状態によって変化します。

デフォルト設定では、サーバー エクスプローラは最後に使用されたときの設定をセッションの一部として保存します。次回サーバー エクスプローラ ウィンドウを開いたときには、保存された設定が適用されます。また、名前を付けて特定の設定を保存し、これらを切り替えて使用することも可能です。たとえば、アプリケーション開発ライフサイクルの各段階にあわせて、複数の設定を保存することも可能です。

コンポーネント デザイナがドラッグ アンド ドロップによるサーバー プログラミングを可能に

フォーム デザイナがクライアント アプリケーション開発を高速化するのと同様に、サーバー エクスプローラは、グラフィカル環境でのサーバーサイド コンポーネントの高速な開発を可能にします。コンポーネント デザイナは、RAD のフォーム ベース プログラミングの手法を中間層オブジェクト開発に応用することにより、非ビジュアル オブジェクトのビジュアル環境での開発を可能にします。サーバーサイドで実行されるデザイン画面にサーバー コンポーネントをドラッグ アンド ドロップすることにより、大量のサーバー ベースのコードを書く必要がなくなります。コンポーネント デザイナでサーバー コンポーネントをダブルクリックするだけで、そのオブジェクト用のコードを開くことができます。

 
** 図 2. コンポーネント デザイナ**

サーバー リソース

確実なメッセージ デリバリとクロスプラットフォーム メッセージング

Microsoft Message Queuing は、メッセージの送受信を使用して、アプリケーションとの間での、保証された高速な非同期通信を可能にします。

MSMQ は、以下のような機能を提供します:

  • 販売部門による遠隔地での作業などを可能にする、非接続ユーザーを含んだアプリケーションの開発。

  • たった一つのオーダー エントリーが失われただけでも、大きな損失を出す可能性のある投資家などのための、保証されたメッセージデリバリー。

  • 大量のリクエストの同時実行。

  • 参照の解析やデータ リカバリなどに有効な、アクティビティ ログの自動記録。

  • メインフレームから AS/400 までの多くのプラットフォームで実行されている、IBM MQ シリーズへの接続。

Visual Studio の次のバージョンでは、サーバー エクスプローラや MSMQ コンポーネントによって、メッセージの送受信や、メッセージ キューの追加、削除などの作業が容易になります。

メッセージ キューとメッセージのデフォルト値によって、サーバー エクスプローラ からメッセージ キューをドラッグすることで、シンプルなメッセージをたった一行のコードで送信することができます。

 mq.Send "Hi Mom"

メッセージの受信も同様にシンプルです。

 Set message = mq.Receive

 
** 図 3. メッセージの送信**

次のバーションの Visual Studio で MSMQ をプログラムするには、以下のような二つのオプションがあります。

  1. メッセージを送信するために、メッセージをメッセージ キューに関連付けます。このオブジェクトは、キューと直接対話することを可能にするため、最も効率的にメッセージを送信することができます。

  2. 既存のキューをコンポーネントにドラッグして、そのキューに対するプログラミングを直接開始します。または、キューの作成、削除、名称変更を Visual Studio から直接行います。

次のステップでは、送信されるデータを用意します。メッセージ キューの send メソッドをコールすることにより、指定されたキューにメッセージが送信されます。

 Dim mq as new MessageQueue ("\\MyMachine\Queue1")
 mq.Send "This is the message"
 mq.Send 7
 mq.Send myOrder

The メッセージ キュー コンポーネントは定義の中からデータを取得し、メッセージに添付し、指定されたキューにメッセージを送信します。

共有されたアプリケーション イベント ログにアプリケーションエラーを記録する

Microsoft Windows NT® や Windows 2000 に対応したアプリケーションは、エラーや警告を定期的にイベント ログに記録しています。イベント ログの記録は、Windows と アプリケーションに、重要なソフトウェア イベントやハードウェア イベントを記録する標準的で一元化された手段を提供します。イベント ログは、ログ閲覧用の標準化されたユーザー インターフェイスと、ログ解析のためのプログラミング インターフェイスを提供します。

次のバージョンの Visual Studio では、サーバー エクスプローラからコンポーネントにイベント ログをドラッグすることによって、イベント ログの読み書きを可能にする、それぞれのアプリケーションに特化したコードを書くことができます。

カスタム イベント ログの作成と書き込みも可能です。カスタム イベント ログを作成するには、ツールボックスからイベント ログ コンポーネントをドラッグし、ログに一意の名前をつけます。この操作によって、ログが自動的に作成されます。

また、ログにエントリが追加されたときにコードを実行することもできます。例として、エラーがログに書き込まれたときに、管理者を呼び出すようなことも可能です。

スケジュールされたタスクにあわせてコンポーネントを起動する

エンタプライズ カスタマにとって、スケジュールされた時間にコンポーネントを実行するのは重要な要求です。ビジネスはスケジュールに沿って進められなければなりません。帳簿は各営業日の終わりに必ず集計されなければなりません。監査は毎月行なう必要があります。解析のための詳しいリポートは毎朝必要です。これらはすべて、自動化プロセスによって実行される、スケジュールされたタスクの例です。

これまでの Visual Studio は、Windows オペレーティング システムの中で実行される実行可能ファイルやコンポーネントの開発を容易なものにしてきました。これからの Visual Studio では、スケジュールに沿って、規定された時間ごとに実行されるアプリケーションやコンポーネントの作成も容易になります。

たとえば、チェーン店方式の小売店なども、スケジュール コンポーネントを利用できます。各営業日が終了した時点で、各店舗のデータベース コンテンツは、本社に送信されなければなりません。スケジュールコンポーネントは、このスケジュールにしたがって、各店舗で実行されます。スケジュール コンポーネントは、日々の新しいセールスを検索し、パッケージして本社に送信します。また、毎日午前二時に、全店舗で在庫確認が行われ、在庫が一定の量を下回った商品は自動的に再発注されます。

スケジュール コンポーネントを使用するには、スケジュール イベント コンポーネントをツールボックスからコンポーネント デザイナにドラッグします。スケジュール イベントがコンポーネントに組み込まれたら、プロパティ ウィンドウを開いてプロパティを編集することにより、カスタマイズすることができます。コンポーネントをダブルクリックしてコードを開き、コンポーネントが起動されたときに実行されるコードを追加します。

 Public Sub SchdEvent1_OnScheduledEventReceive
 (EventSource as Object, e as ScheduledEvent)
          'ユーザーコードはここに記述します。
 End Sub

ネットワーク上にあるすべてのコンピュータのパフォーマンス特性を参照する

パフォーマンス モニタリングは、システムのボトルネックを把握するために、アプリケーションや サービス、ドライバなどが提供するパフォーマンス データを取得し、解析するプロセスです。Windows 2000 と Windows NT では、パフォーマンス カウンタ アプリケーションやパフォーマンス モニタによって、システム パフォーマンスを監視することができます。さらに、パフォーマンス モニタは、一定の閾値を超えた値などの、パフォーマンス カウントに反応するように設定することもできます。たとえば、特定の状況でイベントをイベント ログへ書き込んだり、コンピュータをシャットダウンすることもできます。

次のバージョンの Visual Studio では、新しいカウンタを容易に作成したり、すべてのパフォーマンス カウンタの値を読み書き可能にするコンポーネントを提供します。このようなコンポーネントの用途の一つとして、一秒間に処理されたオーダーの数をリポートする機能などが挙げられます。ビジネスオブジェクトには、一つのオーダーの処理にかける時間を明示的に設定するオプションを起動したり、停止したりすることが可能な、配布後に変更可能なプロパティがあります。システムに大きな負荷がかかり、スループットが低下している状態では、管理者はこのオプションを起動して、パフォーマンス モニタを使用して、アプリケーションの実行状況を調査することができます。この調査によって、システムに大きな負荷がかかり、アプリケーションの処理が追いついていないことが判明した場合は、リソースを再配置してパフォーマンスを向上させることができます。

パフォーマンス コンポーネントを使用するには、このコンポーネントをサーバー エクスプローラからコンポーネントにドラッグし、コンポーネントをダブルクリックしてコードを開き、それぞれのアプリケーションに特化したコードを追加します。

ファイルやフォルダの変更によって起動するディレクトリ監視コンポーネント

現在の一般的な業務では、ファイルの変更を監視するアプリケーションを常時実行し、機能を実行するという方法をとってきました。次のバージョンの Visual Studio に含まれるディレクトリ監視コンポーネントを使用すると、このような機能を持った、更に効率的なコンポーネントが非常に簡単に作成できます。このコンポーネントは、システムディレクトリの変更通知を監視し、ディレクトリやディレクトリに含まれるファイルに変更があったときにイベントを発生させます。

この機能の応用例としては、FTP が挙げられます。Web ベースのニュースサイトが FTP サーバーをセットアップしたとします。世界中のジャーナリストが、このサーバーに記事をアップロードできるようになります。新しい記事が FTP のディレクトリに到着した場合、ディレクトリ監視コンポーネントが編集者に電子メールで到着を知らせます。

ディレクトリ監視コンポーネントをツールボックスからドラッグし、プロパティでこのコンポーネントをどのような条件で起動するかを設定します。このコンポーネントは、ディレクトリの変更、作成、削除、ファイルの追加、名称変更、削除によって起動されます。コンポーネントをダブルクリックしてコードを開き、イベントが発生したときに実行されるコードを記述します。

サーバーベース アプリケーションのセットアップと配布を簡単に

各企業のネットワーク管理者は、ライフサイクルの全般にわたって、分散アプリケーションの配布と管理をしなければなりません。コンポーネント開発者やソリューション インテグレータは、アプリケーションの配布を可能にするために、管理者や他の開発者に十分な情報を提供することを求められています。分散アプリケーション モデルのゴールは、このモデルの利便性を損ねない方法で、コンポーネント開発者やインテグレータによる管理者への配布情報の提供を容易にすることです。

配布の目的は、複数のあらゆる大きさや構造のプロジェクトやソリューションを、どのようなプラットフォームの間でも容易に移動可能にすることです。次のバージョンの Visual Studio では、配布機能は複数のプラットフォームやコンピュータの上で動作可能になります。これにより、n 階層への配布が可能になります (例: 一度の操作で複数のターゲット コンピュータへ配布が可能になります)。また、Web サーバーや COM+ サーバーなどへの配布も容易になります。

Windows DNA アプリケーション上のすべての階層をセットアップするアプリケーションの作成

多くの場合複数の言語で記述された分散アプリケーションの三層すべてを同時に配布しなければなららいことがあります。次のバージョンの Visual Studio に含まれる新しい配布ツールを使用すれば、複数の階層をセットアップするアプリケーションの作成は簡単です。

まず、適切なソリューションを開きます。たとえば、Visual Basic の Web プロジェクトや Visual C++ のコンポーネント プロジェクトを含むプロジェクトなどです。次に、アプリケーションのアーキテクチャを設定するパッケージ・配布エクスプローラに切り替えます (これは、Web サーバー、中間層、データベース バックエンドのそれぞれに対応した、3 つの論理マシンを持っています)。最後に、ソリューションのそれぞれの部分を論理マシンに関連付けます。たとえば、ソリューションに含まれる Visual Basic の Web プロジェクトは Web サーバーに、C++ コンポーネントは中間層に、SQL サーバーのデータベースはデータベース バックエンドに関連付けられます。

このセットアップ アプリケーションをテストするには、論理マシンに対応する実際の PC を特定する配布マップを作成します。この 3 つの PC は、それぞれの階層ごとに別々のものとすることもできますし、すべての階層を一つの PC に配布することも可能です。

配布メニュー アイテムを選択して、ソリューションをマシンに配布します。これによって、実際にファイルが配布される前に、クライアントマシン上でソリューションがビルドされます。Web サーバー上などに既存のディレクトリが発見された場合などには、配布エンジンは配布しようとするディレクトリと既存のディレクトリを比較し、変更のあったファイルのみコピーします。

カスタム インストーラを使用して配布作業中にサーバー リソースをセットアップする

アプリケーション サーバーの機能が中間層コンポーネントに影響を与える場合、そのサーバーへの依存が発生します。たとえば、ある開発者がコンポーネントを作成して、ツールボックスからメッセージ キュー コンポーネントをクラスにドラッグ アンド ドロップしたとします。このメッセージ キューは、開発者のコンピュータに存在しますが、アプリケーションが配布されたときに、配布先にこのメッセージ キューが存在しない場合は、新たに作成しなければなりません。次のバージョンの Visual Studio には、このようなアプリケーションが依存するサーバーベース リソースを作成するカスタム インストーラが含まれます。

 
** 図 4. インストーラの追加**

プロパティ ウィンドウには Add Installer というリンクがあり、クリックすると、プロジェクトにメッセージ キュー インストーラを含む新しいクラスが追加されます。このメッセージ キュー インストーラは、必要な新しいメッセージ キューを作成するための詳細情報を持っています。

ランタイム トラッキングを使用したアプリケーション配布後のデバッグ

トラッキングはアプリケーションの状態を管理する機能です。デバッガの実行とは逆に、この機能は、開発者や管理者が配布されたアプリケーションの実行状況を監視することを可能にします (デバッガの使用は、時にバグを隠したり、パフォーマンスやスレッドの問題を発見しにくくするなどの問題を発生させることがあります) トラッキングは、分散型の多階層アプリケーションにとって非常に重要なモニタリング ツールであり、デバッグ ツールです。このようなアプリケーションは、多くの場合、大きな負荷がかかる、実際のランダムな使用環境でのみ発見できる問題を含んでいます。

最低限のオーバーヘッドをもって (サイズとパフォーマンスに対して最大 10~15% の影響)、トレース機構を生成コードに含めることが理想的といえます。システムが予想通りのパフォーマンスを発揮しない場合には、システムの稼動中に生成コードのトラッキング機能を起動し、問題を特定することができます。トラッキングによって、問題は隔離され、実行中のシステムに影響を与えずに修正されることが可能になります。

ダイナミック プロパティを作成して配布後にアプリケーションの機能を変更する

実際に運用される Web アプリケーションに最も多く発生する問題は、サイトが公開されている間にアプリケーションの動作を変更しなければならないということです。次のバージョンの Visual Studio では、アプリケーションの配布後にも動的に変更が可能なプロパティを作成することができます。値はアプリケーションに直接記述するのではなく、実行時に XML ファイルから取得されます。

このようなプロパティの値は、アプリケーションが配布された後、アプリケーションが実行中でも変更が可能です。ノートパッドや Visual Studio に含まれる XML エディタなどを使用して、プロパティや値を編集することができます。

このようなプロパティの例としては、データベースへの接続要求などが挙げられます。接続要求がアプリケーションに直接記述されている場合、これを変更するには、再コンパイルし、テストし、再び配布しなければなりません。プロパティを動的に変更可能な状態にすることにより、アプリケーションの配布後にも接続要求の変更が可能になります。次にアプリケーションが実行されるときには、新しい値が使用され、ソースの変更なしにアプリケーションは新しいデータベースに接続されます。このようなプロパティの設定は、一つのプロジェクトの複数のプロパティによって共有できるため、共有された項目のアップデートは一箇所のみで済みます。

結論

次のバージョンの Visual Studio は、ネットワーク上にあるすべての Web サービス、データベース、メッセージ キュー、イベント ログ、パフォーマンス カウンタなどのリソースを検索する機能を提供します。また、この機能によって発見されたサーバー リソースは、「ビジュアル クラス」にドラッグすることによって、グラフィカル環境でプログラミングが可能です。簡単に言うと、Microsoft は次のバージョンの Visual Studio で、サーバー向けの RAD を実現したといえます。

分散型 Web アプリケーションはセットアップや配布が困難な場合もあります Microsoft は、次のバージョンの Visual Studio で、分散型アプリケーションのすべての階層にアプリケーションを配布することにフォーカスしたセットアップ ツールを提供します。また、次期バージョンでの新しい機能によって、配布後のデバッグや機能変更の機能もアプリケーションの中に組み込むことができます。