私は ASP.NET C# アプリケーションに取り組んでおり、アクションのパフォーマンスを改善したいと考えています。
私が持っているのはボタンです。ユーザーがクリックすると、Ajax 呼び出しを送信してデータベースからデータを取得し、データを表示します。
データベースのスキーマは次のようになります。
国のリストがあり、各国には複数のシリーズ (人口、石油、水など) があり、各シリーズには複数の年があります (各年には値があります)。つまり、基本的には、国ごとに何年にもわたるシリーズの進化です。
データを取得するには、AJAX を使用して Web サービスを呼び出します。Web サービスは入力としてシリーズ名を取り、すべての年の各国についてそのシリーズのデータを出力として必要とします。出力データは、次のような Javascript オブジェクトである必要があります。
水 = { "1990": { "アメリカ": 0.1, "カナダ": 0.3, "オーストラリア": 0.4 }, "1991": { "アメリカ": 0.1, "カナダ": 0.5 }}
ajax 呼び出し:
$.ajax({
type: "POST",
url: "Service/WebService.asmx/GetData",
dataType: "json",
async: false,
data: "{'Series':'" + Series+ "'}",
contentType: "application/json; charset=utf-8",
success: function (data) {
mapValues = JSON.parse(data.d);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
このサービスは、Entity フレームワークを使用してデータベースから読み取ります。
var Context = new DataModel.DBEntities();
IEnumerable<YearClass> r = (from y in Context.Years
where y.Series.Name == Variable
select new YearClass
{
year = y.Name,
value = y.Value,
CountryCode = y.Series.Country.Code
});
yearClass は、ここで使用するためだけに強く型付けされた型です。
次に、すべての年をループし、必要な形式に一致するように文字列を連結して JSON を作成します。
ただし、このプロセスには多くの時間が費やされているため、パフォーマンスを向上させる方法を見つける必要があります。
改善できる部分は?どんなヒントでも大歓迎です。