ステップ 7 ハンズオン : .NET Framework におけるプロセス間通信の実装と注意点
リモート処理サーバーの作成 / その 2 : リモート処理が可能な型の作成
NEC eラーニング事業部
山崎 明子
最終更新日 2005 年 3 月 30 日
| 目標 |
リモート処理が可能な型を作成する |
| 使用技術 |
|
| 取り上げるトピックス |
|
| 前提知識 |
- クラスの生成
- プロパティ・メソッドの作成
- 属性の設定
|
| 目次 |
- リモート処理サーバーの作成
- リモート処理クライアントの作成
- オブジェクトをアクティブにする方法の設定の変更
|
リモート処理が可能な型の作成
ここでは、リモート処理のサーバーを作成します。前の「その 1」で作成した「リモート処理のメソッドで利用できる型」を利用します。

「その 1 : リモート処理で利用できる型の作成」で作成したプロジェクトを開きます。

このプロジェクトに、クラスを追加します。手順は、[ソリューションエクスプローラ] で、プロジェクト名、Step7.MyRemotingを右クリックし、[追加]−[クラスの追加]メニューをクリックすると、以下の [新しい項目の追加] ダイアログボックスが表示されます。
![[新しい項目の追加] ダイアログボックス](/japan/msdn/thisweek/step7/remoting/fig2_a.gif)

[ファイル名]に任意の名称を指定し、 [開く] ボタンをクリックします。
この画面では、" EmployeeFactory " という名称を指定しています。この先のステップではこの名称が指定されていたことを前提で進めていきます。

リモートから呼び出すことがでるようにするために、EmployeeFactoryクラスをMarshalByRefObjectから派生させます。 (赤色が追加した部分です。)
Public Class EmployeeFactory
Inherits MarshalByRefObject
End Class

リモートから呼び出されるメソッドを実装します。
まずは、GetEmployeeメソッドを実装します。その名の通り、このメソッドを実行すると、Employeeのオブジェクトを1つ取得できます。一般的には、このような場合、データベースなどからデータを取得することが多いですが、ここでは動的にインスタンスを作成し、それをメソッドの戻り値として返すことにします。
Function GetEmployee(ByVal n As String) As Employee
Dim emp As New Employee
emp.Name = n
Return emp
End Function

リモートから呼び出される2つ目のメソッド、GetEmployeesメソッドを実装します。
その名の通り、このメソッドを実行すると、すべてのEmployeeオブジェクトを取得します。一般的には、このような場合も、データベースなどからデータを取得することが多いですが、ここでは先程と同様、いくつかのインスタンスを動的に作成し、それをArrayListに格納し、戻り値として返すことにします。
Function GetEmployees() As ArrayList
Dim al As New ArrayList
Dim emp As Employee
Dim i As Integer
Dim nameSample() As String = {"Akiko", "Kaoru", "Yuri", "Chihiro", "Mikiko"}
For i = 0 To 4
emp = New Employee
emp.Name = nameSample(i)
emp.Salary = i * 100000
al.Add(emp)
Next
Return al
End Function
ワンポイント:ArrayListクラスは元々Searializableなため、リモート処理のメソッドの戻り値として利用できるのです。

ビルドを行います。
次は 『ホストアプリケーションの構築』について説明します。
|