ステップ 7 ハンズオン : .NET Framework におけるプロセス間通信の実装と注意点
オブジェクトをアクティブにする方法の設定の変更 / その 1 : 設定 (SingleCall/Singleton) の変更の準備
NEC eラーニング事業部
山崎 明子
最終更新日 2005 年 3 月 30 日
| 目標 |
オブジェクトをアクティブ化する際の設定 (SingleCall とSingleton) の変更の確認のために必要な準備を行います。 |
| 使用技術 |
|
| 前提知識 |
|
| 目次 |
- リモート処理サーバーの作成
- リモート処理クライアントの作成
- オブジェクトをアクティブにする方法の設定の変更
|
オブジェクトをアクティブにする方法 (SingleCallとSingleton) の設定変更の準備
オブジェクトのアクティブ化の設定による動作の違いをチェックするために、設定を変更します。SingleCall ではクライアントから要求が来るたびにサーバー側でひとつのインスタンスが生成されます。一方 Singleton では、クライアントからの要求にひとつのインスタンスが対応します。ここでは、以前に作成したアプリケーションを変更し、SingleCall と Singleton の違いをチェックするための準備をおこないます。 ここでは、従業員のリストに動的に従業員を追加できるようにします。

[Step7.MyRemoting]プロジェクトの[EmployeeFactory.vb]を開きます。

EmployeeFactoryクラスの先頭に以下のプライベート変数 (フィールド) 2つを追加します。 (赤色が追加部分です。)
Public Class EmployeeFactory
Inherits MarshalByRefObject
Private mEmployees(4) As Employee
Private nameSample() As String =
{"Akiko", "Kaoru", "Yuri", "Chihiro", "Mikiko"}
--- 以下省略 (既存コードあり) ---

EmployeeFactory クラスにコンストラクタを追加します。 (赤色が追加部分です。)
Public Class EmployeeFactory
Inherits MarshalByRefObject
Private mEmployees(4) As Employee
Private nameSample() As String = {"Akiko", "Kaoru", "Yuri", "Chihiro", "Mikiko"}
Public Sub New()
Dim emp As Employee
Dim i As Integer
For i = 0 To 4
emp = New Employee
emp.Name = nameSample(i)
emp.Salary = i * 10000
mEmployees(i) = emp
Next
End Sub
--- 以下省略 (既存コードあり) ---

GetEmployee メソッドを編集し、既存の従業員リストを戻り値として返すようにします。
Function GetEmployees() As ArrayList
Dim al As New ArrayList(mEmployees)
Return al
End Function

AddEmployee メソッドを新しく追加します。このメソッドは従業員を追加し、その総数を返します。
Function AddEmployee(ByVal e As Employee) As Integer
Dim cnt As Integer = mEmployees.Length
ReDim Preserve mEmployees(cnt)
mEmployees(cnt) = e
Return (cnt + 1)
End Function

[Step7.RemotingClient]プロジェクトの[Form1.vb]を変更します。フォーム上にテキストボックス1つとボタンを1つ追加します。以下の図を参考にプロパティを変更します。


[従業員の追加]ボタンのクリックイベントハンドラを追加します。 (赤色が追加部分です。)
Private Sub Button3_Click
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim emp As New Step7.MyRemoting.Employee
Dim ef As New Step7.MyRemoting.EmployeeFactory
emp.Name = TextBox2.Text
emp.Salary = 30000
MessageBox.Show(ef.AddEmployee(emp) & "番目の従業員を追加しました")
End Sub
ソリューションをビルドしておきます。
次は 『設定 (SingleCall/Singleton) の変更と動作確認』について説明します。
|