MongoDBHandlers.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.Linq;
  5. using System.Web;
  6. using System.Web.Script.Serialization;
  7. using MongoDB.Driver.Builders;
  8. using Benchmarks.AspNet.Models;
  9. public class MongoDBDbHandler : IHttpHandler
  10. {
  11. bool IHttpHandler.IsReusable
  12. {
  13. get { return true; }
  14. }
  15. void IHttpHandler.ProcessRequest(HttpContext context)
  16. {
  17. Random random = new Random();
  18. int queries = Common.GetQueries(context.Request);
  19. List<World> worlds = new List<World>(queries);
  20. Benchmarks.AspNet.Models.MongoDB db = new Benchmarks.AspNet.Models.MongoDB("MongoDB");
  21. for (int i = 0; i < worlds.Capacity; i++)
  22. {
  23. int randomID = random.Next(0, 10000) + 1;
  24. worlds.Add(db.Worlds.FindOne(Query<World>.EQ(w => w.id, randomID)));
  25. }
  26. HttpResponse response = context.Response;
  27. response.ContentType = "application/json";
  28. response.Write(new JavaScriptSerializer().Serialize(
  29. worlds.Count > 1 ? (Object)worlds : (Object)worlds[0]));
  30. }
  31. }
  32. public partial class MongoDBFortunesPage : System.Web.UI.Page
  33. {
  34. protected void Page_Load(object sender, EventArgs e)
  35. {
  36. Benchmarks.AspNet.Models.MongoDB db = new Benchmarks.AspNet.Models.MongoDB("MongoDB");
  37. List<Fortune> fortunes = db.Fortunes.FindAll().ToList();
  38. fortunes.Add(new Fortune { ID = 0, Message = "Additional fortune added at request time." });
  39. fortunes.Sort();
  40. Fortunes = fortunes;
  41. }
  42. public List<Fortune> Fortunes
  43. {
  44. get; set;
  45. }
  46. }
  47. public class MongoDBUpdatesHandler : IHttpHandler
  48. {
  49. bool IHttpHandler.IsReusable
  50. {
  51. get { return true; }
  52. }
  53. void IHttpHandler.ProcessRequest(HttpContext context)
  54. {
  55. Random random = new Random();
  56. Benchmarks.AspNet.Models.MongoDB db = new Benchmarks.AspNet.Models.MongoDB("MongoDB");
  57. int queries = Common.GetQueries(context.Request);
  58. List<World> worlds = new List<World>(queries);
  59. for (int i = 0; i < worlds.Capacity; i++)
  60. {
  61. int randomID = random.Next(0, 10000) + 1;
  62. int randomNumber = random.Next(0, 10000) + 1;
  63. World world = db.Worlds.FindOne(Query<World>.EQ(w => w.id, randomID));
  64. world.randomNumber = randomNumber;
  65. worlds.Add(world);
  66. db.Worlds.Save(world);
  67. }
  68. HttpResponse response = context.Response;
  69. response.ContentType = "application/json";
  70. response.Write(new JavaScriptSerializer().Serialize(
  71. worlds.Count > 1 ? (Object)worlds : (Object)worlds[0]));
  72. }
  73. }