現在、Silk Performer は C# バインディングとして Kernel、Web、Browser BDL 関数をサポートします。Visual Studio で、Kernel.MeasureStart()、Web.PageUrl()、Browser.Click() などの C# クラスの静的メソッドを呼び出すことで、これらの関数にアクセスできます。
言い換えると、組み込みの Silk Performer .bdh ファイルそれぞれに対応する C# クラスが PerfRunDotNet アセンブリで見つかります。そして、.bdh ファイルで定義された API 関数それぞれに対応する静的メソッドが、これらの C# クラスで定義されています。
Silk Performer の負荷テストで使用する C# クラスには、VirtualUser 属性と CodePage 属性が含まれます。VirtualUser では、UserName プロパティと ScriptName プロパティを指定します。CodePage では、記録システムのコードページを指定します。Transaction 属性を持つメソッドは、Silk Performer にエクスポートされたときにトランザクションにマップされます。
namespace SilkPerformerRecorder { [VirtualUser(UserName = "VUser", ScriptName = "MyScript")] [CodePage(1252)] public class MyScript { [Transaction(ETransactionType.TRANSTYPE_INIT)] public void TInit() { } [Transaction(ETransactionType.TRANSTYPE_MAIN)] public void TMain()
.NET/C# と BDL 間でパラメータをやり取りするために、組み込みのデータ型を使用して変換が行われます。
Silk Performer と BDL はマルチバイト文字セット(MBCS)エンコードで処理されますが、C# 言語は Unicode で処理されます。つまり、これらの間で文字列を渡すときには変換が必要になります。PerfRunDotNet アセンブリは BdlString クラスを使用することで、このようなすべての変換を処理します。さらに、バイナリ バッファの処理も行います。利便性のため、BdlString クラスと C# 文字列の間には代入互換性があります。
sizespec 変数と lenspec 変数は C# マッピングでは削除されました。 これは、C# 文字列自身が長さを持つためです。
深刻度パラメータなどの静的整数値は、それぞれ列挙型で置換されました。
BDL フォームは、C# の BdlForm クラスにマップされます。
private static readonly BdlForm ZIP_SEARCH001 = new BdlForm() { Entries = new BdlFormEntries() { { "zip-search", "", Kernel.USE_HTML_VAL }, // hidden, unchanged, value: "zip-search" { "zip-search:zipcode", "", Kernel.USE_HTML_VAL }, // unchanged, value: "" { "javax.faces.ViewState", "", Kernel.USE_HTML_VAL }, // hidden, unchanged, value: "j_id3:j_id4" { "zip-search:search-zipcode.x", "62" }, // added { "zip-search:search-zipcode.y", "4" } // added } };
Silk Performer は MBCS ベースのアプリケーションであるため、Recorder は C# スクリプトに CodePage 属性を自動的に生成し、.BDF スクリプト スタブに引き継ぎます。また、システムのコードページで表現できない Unicode 文字列は 16 進バイト配列に変換されます。
CodePage 属性が C# スクリプトで定義されている場合、次のように処理されます。
CodePage 属性が C# スクリプトで定義されていない場合、システムのコードページが再生に使用されます。