.NET Remoting オブジェクトをテストする

  1. リモート オブジェクト アセンブリを参照します。 .NET Remoting オブジェクトをテストするには、リモートにするオブジェクトを定義する .NET アセンブリを参照する必要があります。 これには、クラスを参照する DLL に参照を追加します。
  2. テスト ドライバをリモート クライアントとして構成します。 どのクラスをリモートにするかを .NET に指示する必要があります。 この最も簡単な方法は、.config ファイルで構成を行うことです。 リモート クライアント構成を定義する .config ファイルの詳細については、MSDN を参照してください。

    以下にファイル例を示します。

    <configuration>
     <system.runtime.remoting>
     <application>
     <channels>
     <channel ref="http" port="2000" />
     </channels>
     <client url="http://remoteserver:2000">
     <activated type="RemoteDll.RemoteClass1, RemoteDll" />
     <activated type="RemoteDll.RemoteClass2, RemoteDll" />
     </client>
     </application>
     </system.runtime.remoting>
     </configuration>

    この構成ファイルは、ランタイム時に (理想としてはテスト ドライバの Init トランザクションで) ロードする必要があります。 負荷テストの実行時にすべてのエージェントでこのファイルを確実に使用できるようにするには、プロジェクト依存ファイル (メニュー: Silk Performer/Add Dependencies (依存関係の追加)) に追加します。 Bdl.GetDataFilePath メソッドを使用して、正しいパスを取得できます。

    以下にリモート オブジェクトをリモートにしてインスタンス化するコード例を示します。

    using System;
    using Silk Performer;
    using System.Runtime.Remoting;
    using RemoteDll;
    namespace SPProject1
    {
    [VirtualUser("VUser")]
    public class VUser
    {
    public VUser()
    {
    }
    
    [Transaction(ETransactionType.TRANSTYPE_INIT)]
    public void TInit()
    {
     RemotingConfiguration.Configure(Bdl.GetDataFilePath("vuser.config"));
     }
    
    [Transaction(ETransactionType.TRANSTYPE_MAIN)]
    public void TMain()
    { // .NET Runtime knows that objects of type RemoteDll.RemoteClass1 are remoted
     RemoteClass1 rm1 = new RemoteClass1();
     rm1.SomeMethod("param");
    }
    
    [Transaction(ETransactionType.TRANSTYPE_END)]
    public void TEnd()
    {
    }
    }
    }

    HTTP が転送プロトコルとして構成されているため、.NET Remoting 呼び出し用に生成されたトラフィックを TrueLog Explorer を介して表示することができます。