Services.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using ServiceStack.CacheAccess;
  5. using ServiceStack.CacheAccess.Providers;
  6. using ServiceStack.CacheAccess.Memcached;
  7. using ServiceStack.CacheAccess.AwsDynamoDb;
  8. using ServiceStack.CacheAccess.Azure;
  9. using ServiceStack.Common.Web;
  10. using ServiceStack.Redis;
  11. using ServiceStack.ServiceHost;
  12. using ServiceStack.ServiceInterface;
  13. namespace ServiceStackBenchmark
  14. {
  15. #region Hello World Services
  16. [Api("Test #1 (JSON serialization) using Service Stack")]
  17. [Route("/json", "GET")]
  18. public class JsonRequest { }
  19. public class JsonService : Service
  20. {
  21. public object Get(JsonRequest request)
  22. {
  23. var response = new { message = "Hello, World!" };
  24. return response;
  25. }
  26. }
  27. [Api("Test #6 (Plaintext) using Service Stack")]
  28. [Route("/plaintext", "GET")]
  29. public class PlainTextRequest { }
  30. public class PlainTextService : Service
  31. {
  32. public object Get(PlainTextRequest request)
  33. {
  34. var response = new HttpResult("Hello, World!", "text/plain");
  35. return response;
  36. }
  37. }
  38. [Api("Set Cache Provider")]
  39. [Route("/cacheprovider/{provider}", "GET")]
  40. public class SetCacheProviderRequest
  41. {
  42. [ApiMember(Name ="provider", Description = "Cache Provider", DataType = "string", IsRequired = true)]
  43. [ApiAllowableValues("provider", new string[] { "inmem", "memcache", "redis", "aws", "azure" })]
  44. public string provider { get; set; }
  45. }
  46. public class CacheProviderService : Service
  47. {
  48. public object Any(SetCacheProviderRequest request)
  49. {
  50. try
  51. {
  52. switch (request.provider)
  53. {
  54. case "memcache":
  55. var memcache = new MemcachedClientCache();
  56. AppHost.Instance.Container.Register<ICacheClient>(memcache);
  57. return new HttpResult("Cache Provider switched to MemCache.");
  58. case "redis":
  59. AppHost.Instance.Container.Register<ICacheClient>(c => c.Resolve<IRedisClientsManager>().GetCacheClient());
  60. return new HttpResult("Cache Provider switched to Redis.");
  61. case "aws":
  62. var aws = new DynamoDbCacheClient("", "", Amazon.RegionEndpoint.APSoutheast1);
  63. AppHost.Instance.Container.Register<ICacheClient>(aws);
  64. return new HttpResult("Cache Provider switched to Amazon Web Service DynamoDb Cache Client.");
  65. case "azure":
  66. AppHost.Instance.Container.Register<ICacheClient>(new AzureCacheClient("default"));
  67. return new HttpResult("Cache Provider switched to Microsoft Azure Cache Client.");
  68. default:
  69. AppHost.Instance.Container.Register<ICacheClient>(new MemoryCacheClient());
  70. return new HttpResult("Cache Provider switched to In-Memory Cache Client.");
  71. }
  72. }
  73. catch
  74. {
  75. throw;
  76. }
  77. }
  78. }
  79. #endregion
  80. }