キャンペーン


2013年6月23日日曜日

リモーティングに関す書籍のサンプル修正 - 秀和システム 「これからはじめる .NET Framework .NETリモーティング編」


リモーティングについて勉強する機会があって以下の書籍を読んだんです。

これからはじめる .NET Framework .NETリモーティング編



これ内容的には章立てが良くすっきり出来てて良書だと思いますよ。

リモーティングは.NET framework の初期の頃からあった画期的なリモートホスト(プロセス)間の通信モデルですが、概念的なものは全てこれで掴めると思います。

この技は今でも古さを感じさせない実用的かつ有益なテクだと自負しています。

とりわけ「クラウド」が流行の今知っているととても幸せになれる技術です。


自分は以前からリモーティングは知ってたたからでしょうか、行きの通勤列車の中で全て読み終えられました。

自分はソースの書き方ではなくconfigファイルだけでリモーティングする方法を知りたかっただけなので、その部分はとても参考になりました。

本書にはいくつか実例プログラムサンプルが付録で付いているのですが、何故か「broadcast」のサンプルが動かないんですよ。



実際秀和システムのHPをみてみると修正ソースがUPされていたので動かしてみたのですがやはり動かないんです。修正版が動かないなんて最低ですw



よくソースを眺めてみたら画面のdelegateのInvoke処理が抜けててダメダメで、ちょっと書き直したら動きました。これを書いた作者が読者の頭を少し悩ませる意図があったのでしょうか?



以下が私が直した画面の修正後のソース(メインな部分のみ; vb.netソース)

Imports System.Runtime.Remoting
Imports ClassLib

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
#End Region

    Dim remoteObject As RemoteClass
    Dim WithEvents eventHander As EventHandlerClass
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '構成ファイルを登録します。
        RemotingConfiguration.Configure("Client.exe.config", False)

        'イベント購読するプロキシ オブジェクトを生成します。
        remoteObject = New RemoteClass()

        'イベント ハンドル オブジェクトを生成します。
        eventHander = New EventHandlerClass(remoteObject)
    End Sub

    Delegate Sub dgSetProc(ByVal data As Double)
    Sub SetProc(ByVal data As Double)
        ProgressBar1.Value = data
    End Sub
    'データ変化のイベント処理プロシージャを作成します。-+
    '処理プロシージャを対応イベントに登録します。
    Private Sub DataChangedProc(ByVal data As Double) _
        Handles eventHander.CascadeDataChanged
        If Me.InvokeRequired Then
            Try
                Invoke(New dgSetProc(AddressOf SetProc), data)

            Catch ex As Exception
                Debug.Print(ex.Message)
            End Try
            Return
        End If
        SetProc(data)
    End Sub
End Class

修正ソースと私がさらに手を入れたソースの比較


とういうことで動かないときにご参考にされたらと思いますが、おそらくこのソースに見向きをされる方は稀有でしょうw

参考URL
http://msdn.microsoft.com/ja-jp/library/ms973857.aspx
http://msdn.microsoft.com/ja-jp/library/ms973907.aspx



0 件のコメント:

コメントを投稿