ステップ 7 ハンズオン : .NET Framework におけるプロセス間通信の実装と注意点オブジェクトをアクティブにする方法の設定の変更 / その 1 : 設定 (SingleCall/Singleton) の変更の準備 NEC eラーニング事業部 最終更新日 2005 年 3 月 30 日
オブジェクトをアクティブにする方法 (SingleCallとSingleton) の設定変更の準備オブジェクトのアクティブ化の設定による動作の違いをチェックするために、設定を変更します。SingleCall ではクライアントから要求が来るたびにサーバー側でひとつのインスタンスが生成されます。一方 Singleton では、クライアントからの要求にひとつのインスタンスが対応します。ここでは、以前に作成したアプリケーションを変更し、SingleCall と Singleton の違いをチェックするための準備をおこないます。 |
Public Class EmployeeFactory
Inherits MarshalByRefObject
Private mEmployees(4) As Employee
Private nameSample() As String =
{"Akiko", "Kaoru", "Yuri", "Chihiro", "Mikiko"}
--- 以下省略 (既存コードあり) ---.gif)
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
--- 以下省略 (既存コードあり) ---
.gif)
GetEmployee メソッドを編集し、既存の従業員リストを戻り値として返すようにします。
Function GetEmployees() As ArrayList
Dim al As New ArrayList(mEmployees)
Return al
End Function
.gif)
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
.gif)
[Step7.RemotingClient]プロジェクトの[Form1.vb]を変更します。フォーム上にテキストボックス1つとボタンを1つ追加します。以下の図を参考にプロパティを変更します。
.gif)
.gif)
[従業員の追加]ボタンのクリックイベントハンドラを追加します。 (赤色が追加部分です。)
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) の変更と動作確認』について説明します。 |