Startup.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using EasyRpc.AspNetCore.Serializers;
  2. using EasyRpc.AspNetCore.Utf8Json;
  3. using Microsoft.Extensions.Configuration;
  4. namespace Benchmarks
  5. {
  6. using System.Text.Encodings.Web;
  7. using System.Text.Unicode;
  8. using Benchmarks.Data;
  9. using Benchmarks.Services;
  10. using EasyRpc.AspNetCore;
  11. using Microsoft.AspNetCore.Builder;
  12. using Microsoft.Extensions.DependencyInjection;
  13. public class Startup
  14. {
  15. private IConfiguration _configuration;
  16. public Startup(IConfiguration configuration)
  17. {
  18. _configuration = configuration;
  19. }
  20. public void ConfigureServices(IServiceCollection services)
  21. {
  22. services.AddRpcServices(c => c.RegisterJsonSerializer = false);
  23. services.AddSingleton<IContentSerializer, Utf8JsonContentSerializer>();
  24. services.AddSingleton<IRawDb, RawDb>();
  25. var appSettings = new AppSettings();
  26. _configuration.Bind(appSettings);
  27. services.AddSingleton(appSettings);
  28. // for views
  29. services.AddControllersWithViews();
  30. var settings = new TextEncoderSettings(UnicodeRanges.BasicLatin,
  31. UnicodeRanges.Katakana,
  32. UnicodeRanges.Hiragana);
  33. settings.AllowCharacter('\u2014'); // allow EM DASH through
  34. services.AddWebEncoders((options) => options.TextEncoderSettings = settings);
  35. }
  36. public void Configure(IApplicationBuilder app)
  37. {
  38. app.UseRpcRouting(api =>
  39. {
  40. api.Method.Get("/plaintext", () => "Hello, World!").Raw("text/plain");
  41. api.Method.Get("/json", () => new { message = "Hello, World!" });
  42. api.Expose<QueryService>();
  43. api.Expose<FortuneService>();
  44. });
  45. }
  46. }
  47. }