ASP.NET4.0を使用してアプリを構築しています。
エントリと呼ばれるテーブルがあります。エントリーはFacebook経由で高く評価することができます。いいねを介して並べ替える機能を実装したいので、各エントリのいいねの数を保存し、その列を使用して注文するというアプローチを取っています。問題は、いいねの数を取得するためのオーバーヘッドです。13エントリのデータを取得するのに4秒かかるので、今のように改善できると思います。これは長すぎます。
FBグラフAPIとJSON.NETを使用して応答を解析しています。次のコードでは、エントリタイプのリストがあり、エントリIDと組み合わせたアプリ設定を使用してエントリの同様のURLを取得しています。これは私がしていることです:
foreach (Entry entry in entries)
{
int likes;
try
{
// the url that is tied to the entry
string url = "http://graph.facebook.com/?ids=" + Properties.Settings.Default.likeUrl + "?id=" + entry.EntryId;
//open a WebClient and get the results of the url
WebClient client = new WebClient();
Stream data = client.OpenRead(url);
StreamReader reader = new StreamReader(data);
string s = reader.ReadToEnd();
//parse out the response
var json = JObject.Parse(s);
//shares are how many likes the entry has
likes = Convert.ToInt32(json.First.First.SelectToken("shares").ToString());
}
catch (Exception ex)
{
likes = 0;
}
}
私が言ったように、この方法は非常に高価です。誰かが私がここで試みていることを行うためのより良い方法を提案することができれば、私は本当に助けていただければ幸いです。どうもありがとう!