■ コンポーネント

  • .NET コンポーネント

         クラスライブラリ (コードコンポーネント)

         Windows コントロール、Web コントロール

  • コードコンポーネントは自動アップグレード

  • ユーザーコントロールは自動アップグレード不可

変更ポイント

Visual Basic 6.0 では 「ActiveX DLL」 「ActiveX EXE」 「ユーザーコントロール」 の各プロジェクトで COM コンポーネントを作成してきました。 Visual Basic .NET では、この COM コンポーネントに代わるものとして、.NET コンポーネントを作成することができます。

.NET コンポーネントを作成するためには、プロジェクトのテンプレートとして、「クラスライブラリ」 あるいは 「Windows コントロールライブラリ」 を選択します。

「クラスライブラリ」 プロジェクト

Visual Basic 6.0 の 「ActiveX DLL/EXE」 に対応するプロジェクトを作成するには、プロジェクトのテンプレートとして、「クラスライブラリ」 を選択します (図 2)。このタイプを選択すると、Visual Basic 6.0 のクラスモジュールにあたる Class1.vb というファイルがひとつ用意され、ここに次のようなコードが自動的に追加されます。

                  
Public Class Class1

End Class

図 2:クラスライブラリ

図 2:クラスライブラリ

この Class…End Class に、プロパティやメソッド、イベントを実装していきます。このファイルは厳密には Visual Basic 6.0 の 「クラスモジュール」 とは異なります。 Visual Basic .NET では、「ひとつのファイルに複数のクラスを記述」 できるからです。Class…End Class の記述がそれを可能にしています。もちろん、従来通り 1 つのファイルに1つのクラスのみを記述するということも可能ですが、複数の Class…End Class をファイルに追加することで、複数のクラスを 1 つのファイルで提供し、ファイル数を減らすことができます。

メソッドやイベントについては、その実装方法はほとんど同じです。プロパティの記述はわかりやすく変更されました。第 4 章の 「プロパティプロシージャ」 を参照してください。

従来 3 つだったスコープ (Private、Friend、Public) に新たな概念が追加されました。追加されたキーワードは、Protected で、これは 「コードの継承」 の機能追加によるものです。

「Windows コントロールライブラリ」 プロジェクト

コントロールを作成するには、プロジェクトのテンプレートとして、「Windows コントロールライブラリ」 を選択します (図 3)。このタイプを選択すると、Visual Basic 6.0 のユーザーコントロールモジュールにあたる UserContorl1.vb というファイルがひとつ用意され、ここに以下のようなコードが自動的に追加されます。

                  
Public Class UserControl1
    Inherits System.Windows.Forms.UserControl

#Region " Windows Form Designer generated code "
 (略) 
#End Region

End Class

ユーザーコントロールは、UserControl から継承して作成します。また、#Region…#End Region までには、ユーザーインターフェイスを提供するためのコードが必要ですが、Visual Basic .NET ではデザイナにより生成させることができます。

「クラスライブラリ」 で解説した変更以外の変更点は、マニュアルなどを参考にしてください。

この他、Web コントロールを作成するためには、「Web コントロールライブラリ」 プロジェクトを選択します。

図 3:Windows コントロールライブラリ

図 3:Windows コントロールライブラリ

アップグレードウィザードによる変更点

Visual Basic 6.0 で作成した 「ActiveX DLL/EXE」 プロジェクトは、.NET の 「クラスライブラリ」 に自動変換されます。ただ、今まで、クラスのプロパティで設定していたことが、属性としてコードに含めることができるようになったものについては、手動で変更が必要です。たとえば、トランザクションの設定などがそれにあたります。

また、ユーザーコントロールのプロジェクトはアップグレードすることができません。

ユーザーコントロールに変更を加えたい場合は、2 つの選択肢があります。ひとつは、Visual Basic 6.0 を使用してユーザーコントロールを変更し、それを COM と .NET の相互運用機能を利用して使用する方法です。

そしてもうひとつは、Visual Basic .NET でコントロールを新しく作り直す方法です。これはもちろん大変ですが、Visual Basic .NET ならではの新しい機能 (動的プロパティの設定など) を利用できます。

Plus One XML Web サービスの作成

コンポーネントとして提供してきた機能を、XML Web サービスに置き換えて提供してもよいでしょう。

これにより、ファイアウォールを越えたメソッド呼び出しが可能になります。また、データの受け渡しには XML が利用されるため、他の言語やプラットフォームとのやり取りがグンと楽になります。

ただし、トランザクションなど、一部サポートされない機能もあります。また、パフォーマンスについても考慮が必要です。

結論としては、トランザクションなどを必要としない、他のプラットフォームと相互運用が必要なケースでは、中間層を XML Web サービスにすることを考慮してもよいということがいえます。

ただし、もちろんこの変更は手動になります。

いったん Visual Basic .NET でコードを .NET にアップグレードしておき、そのコードを 「ASP.NET Web サービス」 プロジェクトにコピー & ペーストして活用すると作業が楽になります。

統合デバッガ

統合デバッガにより、COM+ コンポーネントの開発サポートが改善されました。ステップインでクライアントと COM+ コンポーネントのデバッグが可能になりました。

さらに、Visual Basic 6.0 の COM+ コンポーネントへもステップスルー可能です。ただし、最適化なしの、シンボリックデバッグ情報が必要です。