内部ネットワーク環境で AS400 と通信するビジネス ツー ビジネス ネットワーク内に常駐するアプリケーションがあります。ファイアウォールは AS400 へのデータ リクエストを許可するように設定されていますが、接続速度と応答時間に大きな遅延が見られます。たとえば、ローカル開発環境では 0.5 秒未満しかかからなかったのが、B2B 環境では 120 秒以上かかっています。
これは、データを取得するために利用している関数です。エンタープライズ ライブラリ アプリケーション ブロックを使用しているため、ASI オブジェクトはデータベースです...
/// <summary>
/// Generic function to retrieve data table from AS400
/// </summary>
/// <param name="sql">SQL String</param>
/// <returns></returns>
private DataTable GetASIDataTable(string sql)
{
DataTable tbl = null;
HttpContext.Current.Trace.Warn("GetASIDataTable(" + sql + ") BEGIN");
using (var cmd = ASI.GetSqlStringCommand(sql))
{
using (var ds = ASI.ExecuteDataSet(cmd))
{
if (ds.Tables.Count > 0) tbl = ds.Tables[0];
}
}
HttpContext.Current.Trace.Warn("GetASIDataTable() END");
return tbl;
}
なぜこれが起こっているのかについて考えるために、いくつかのアイデアをブレインストーミングしようとしています.