Пример #1
0
        private static void Register()
        {
            Serilog.ILogger serilog = new LoggerConfiguration()
                                      .Enrich.FromLogProxy()
                                      .Destructure.UsingAttributes()
                                      .WriteTo.Seq(EnvVars.SeqAddress())
                                      .CreateLogger();
            Log.Logger = serilog;

            var builder = new ContainerBuilder();

            // SSL gRPC
            var caCrt          = File.ReadAllText(EnvVars.CaCrtPath());
            var sslCredentials = new SslCredentials(caCrt);

            var registrationEngineGrpcChannel = new Channel(
                EnvVars.Target(@"RegistrationEngineHost", @"RegistrationEnginePort"),
                sslCredentials);

            // Create MagicOnion dynamic client proxy
            var registrationEngineGrpcClient = TrackingProxy.Create <IRegistrationEngineGrpc>(registrationEngineGrpcChannel);

            var registrationEngine = LogProxy.Create <IRegistrationEngine>(new RegistrationEngineClient(registrationEngineGrpcClient), serilog, LogType.All);

            builder.RegisterInstance <Serilog.ILogger>(serilog);
            builder.RegisterInstance <IRegistrationEngine>(registrationEngine);
            builder.RegisterType <MembershipManager>().As <IMembershipManager>();
            IContainer container = builder.Build();

            // Set up the service locator
            ServiceLocator.SetLocatorProvider(() => new AutofacServiceLocator(container));

            GrpcEnvironment.SetLogger(new ConsoleLogger());
        }
Пример #2
0
        public static IWebHost BuildWebHost(ILogger serilog)
        {
            // SSL gRPC
            var caCrt          = File.ReadAllText(EnvVars.CaCrtPath());
            var sslCredentials = new SslCredentials(caCrt);

            var membershipManagerGrpcChannel = new Channel(
                EnvVars.Target(@"MembershipManagerHost", @"MembershipManagerPort"),
                sslCredentials);

            // Create MagicOnion dynamic client proxy
            var membershipManagerGrpcClient = TrackingProxy.Create <IMembershipManagerGrpc>(membershipManagerGrpcChannel);

            var membershipManager = LogProxy.Create <IMembershipManager>(new MembershipManagerClient(membershipManagerGrpcClient), serilog, LogType.All);

            var restApiLogger = serilog;

            return(new WebHostBuilder()
                   .UseKestrel(options =>
            {
                options.Listen(
                    IPAddress.Any,
                    EnvVars.LocalPort(@"RestApiPort"),
                    listenOptions => listenOptions.UseHttps(EnvVars.ServerPfxPath(), EnvVars.CrtPassword()));
            })
                   .ConfigureServices(
                       services => services
                       .AddSingleton <IMembershipManager>(membershipManager)
                       .AddSingleton <ILogger>(serilog))
                   .UseContentRoot(Directory.GetCurrentDirectory())
                   .UseStartup <Startup>()
                   .Build());
        }