如何使用C#有效地计算社交份额计数

时间:2013-03-22 07:13:41

标签: c# asp.net-mvc social-media

我正在使用asp.net Mvc-3 C#开发分类广告网络应用程序。

每个广告都可以在facebook,twitter,google plus,linkedin等社交媒体上分享。

我正在计算广告在这些网站上分享的次数,并将此记录保存在数据库中。

使用此功能

 string jsonString = new System.Net.WebClient().DownloadString(URL-of-ad);
 var serialize= new System.Web.Script.Serialization.JavaScriptSerializer();
 var dictionary = serialize.Deserialize<Dictionary<string, string>>(jsonString);
 var twitter = dict["count"];
 var facebook= dict["share_count"];

// calculating for other website by this function

这是功能正常,但每个广告都非常耗时。我有数千个广告,所以我必须循环一千次,并为每个广告调用此功能。

我一天两次调用此功能。

还有其他更好,更快的方法来完成这项任务吗?

请提出您的建议。

2 个答案:

答案 0 :(得分:1)

您可能会考虑改进设计

1 - 创建一个Windows服务并将其设置为每天运行两次,最有可能发现您网站上的流量非常小。

2-将共享计数逻辑移动到Windows服务中,该服务将在另一个进程中执行,并释放主应用程序。

3-下载依赖于网络速度的内容,以便yopur下载异步而不是同步。

答案 1 :(得分:1)

一些建议:

  1. 并行运行,例如使用Parrallel.ForEach,传入添加的URL或异步版本,例如DownloadStringAsync。两者都会同时运行多个下载。
  2. 在加载显示添加的页面时运行此选项。加载添加,然后对服务器执行Web服务调用以获取countshare_count。它可能需要更多工作,但它会更新,如果很少显示每个添加,这可能会更有效。
  3. 我假设您在页面创建期间没有运行此功能,但如果您是,请将其移至Saurabh建议的单独服务或流程中。