Skip to content

Latest commit

 

History

History
115 lines (111 loc) · 3.83 KB

QuickRef.md

File metadata and controls

115 lines (111 loc) · 3.83 KB
//RabbitMQ client
var services = new ServiceCollection();
services.AddNClientContract<IServiceAsync>();
services.AddNClientContract<IService>();
services.AddNRabbitMQClient(o => o.CopyFrom(Helper.GetMQOptions()));
var sp = services.BuildServiceProvider();
var clientProxy = sp.GetService<IClientProxy<IService>>();
clientProxy.Connected += (_, _) => Console.WriteLine("[event] Connected");
clientProxy.DisConnected += (_, _) => Console.WriteLine("[event] DisConnected");
clientProxy.ExceptionInvoked += (_, _) => Console.WriteLine("[event] ExceptionInvoked");

//Heartbeat
clientProxy.HeartbeatAsync += (s, e) =>
{
    Console.WriteLine("[event] Heartbeat");
    ((IService)((IClientProxy)s).Proxy).Hearbeat();
    return Task.CompletedTask;
};
clientProxy.StartHeartbeat(true);

var proxy = clientProxy.Proxy;
var proxyAsync = sp.GetService<IClientProxy<IServiceAsync>>()!.Proxy;
//Grpc client
var services = new ServiceCollection();
services.AddNClientContract<IServiceAsync>();
services.AddNClientContract<IService>();
services.AddNGrpcClient(o => o.Url = "http://localhost:50001");
var sp = services.BuildServiceProvider();
var clientProxy = sp.GetService<IClientProxy<IService>>();
var proxy = clientProxy.Proxy;
var proxyAsync = sp.GetService<IClientProxy<IServiceAsync>>()!.Proxy;
//Http client
var services = new ServiceCollection();
services.AddNClientContract<IService>();
services.AddNClientContract<IServiceAsync>();
services.AddNHttpClient(o =>
{
    o.ApiUrl = "http://localhost:50002/api";
});
var sp = services.BuildServiceProvider();
var clientProxy = sp.GetService<IClientProxy<IService>>();
var proxy = clientProxy.Proxy;
var proxyAsync = sp.GetService<IClientProxy<IServiceAsync>>()!.Proxy;
//rabbitMQ service
var mpHost = new HostBuilder()
    .ConfigureServices((_, services) =>
    {
        services.AddNRabbitMQService(i => i.CopyFrom(Helper.GetMQOptions()));
        services.AddNServiceContract<IServiceAsync, ServiceAsync>();
        services.AddNServiceContract<IService, Service>();
    })
    .Build();
await mpHost.RunAsync();
//grpc service
var grpcHost = Host.CreateDefaultBuilder()
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.ConfigureKestrel((_, options) =>
            {
                options.ListenAnyIP(50001, listenOptions => listenOptions.Protocols = HttpProtocols.Http2);
            })
            .ConfigureServices((_, services) =>
            {
                services.AddNGrpcService();
                services.AddNServiceContract<IServiceAsync, ServiceAsync>();
                services.AddNServiceContract<IService, Service>();
            }).Configure(app => { app.UseNGrpc(); });
    }).Build();
await grpcHost.RunAsync();
//http service
var httpHost = Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(builder =>
    {
        builder.ConfigureKestrel((_, options) =>
            {
                options.Limits.MaxRequestBodySize = 10737418240; //10G
                options.ListenAnyIP(50002);
            })
            .ConfigureServices(services =>
            {
                services.AddCors();
                services.AddSignalR();
                services.AddNHttpService();
                services.AddNServiceContract<IServiceAsync, ServiceAsync>();
                services.AddNServiceContract<IService, Service>();
            })
            .Configure(app =>
            {
                app.UseCors(set =>
                {
                    set.SetIsOriginAllowed(_ => true)
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                        .AllowCredentials();
                });

                app.UseRouting();
                app.UseEndpoints(endpoints => { endpoints.MapHub<CallbackHub>("/callback"); });
                app.UseNHttp();
            });
    }).Build();
await httpHost.RunAsync();