Skip to main content
評価してください: 

ステップ 7 ハンズオン : .NET Framework におけるプロセス間通信の実装と注意点

オブジェクトをアクティブにする方法の設定の変更 / その 1 : 設定 (SingleCall/Singleton) の変更の準備

NEC eラーニング事業部
山崎 明子


最終更新日 2005 年 3 月 30 日

目標オブジェクトをアクティブ化する際の設定 (SingleCall とSingleton) の変更の確認のために必要な準備を行います。
使用技術
  • Visual Basic .NET
前提知識
目次


オブジェクトをアクティブにする方法 (SingleCallとSingleton) の設定変更の準備

オブジェクトのアクティブ化の設定による動作の違いをチェックするために、設定を変更します。SingleCall ではクライアントから要求が来るたびにサーバー側でひとつのインスタンスが生成されます。一方 Singleton では、クライアントからの要求にひとつのインスタンスが対応します。ここでは、以前に作成したアプリケーションを変更し、SingleCall と Singleton の違いをチェックするための準備をおこないます。
ここでは、従業員のリストに動的に従業員を追加できるようにします。


Step 1 :

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


Step 2 :

EmployeeFactoryクラスの先頭に以下のプライベート変数 (フィールド) 2つを追加します。 (赤色が追加部分です。)

Public Class EmployeeFactory
  Inherits MarshalByRefObject
 Private mEmployees(4) As Employee
 Private nameSample() As String = 
  {"Akiko", "Kaoru", "Yuri", "Chihiro", "Mikiko"}
      --- 以下省略 (既存コードあり) ---


Step 3 :

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
      --- 以下省略 (既存コードあり) ---

 

Step 4 :

GetEmployee メソッドを編集し、既存の従業員リストを戻り値として返すようにします。

Function GetEmployees() As ArrayList
	Dim al As New ArrayList(mEmployees)
	Return al
End Function

 

Step 5 :

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

 

Step 6 :

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

プロパティの変更


Step 7 :


[従業員の追加]ボタンのクリックイベントハンドラを追加します。 (赤色が追加部分です。)

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) の変更と動作確認』について説明します。

 

ページのトップへ