网关和服务发现

This commit is contained in:
administrator committed 2024-04-20 14:33:06 +08:00
1 parent cea1278b71
commit 6f4a338bb4
14 files changed
+190 -52

No files matched your search

+25 -27
View File
@@ -1,39 +1,37 @@
using HelloShop.ApiService.Infrastructure;
using Yarp.ReverseProxy.Configuration;
var builder = WebApplication.CreateBuilder(args);
// Add service defaults & Aspire components.
builder.AddServiceDefaults();
// Add services to the container.
builder.Services.AddProblemDetails();
builder.Services.AddControllers().AddDataAnnotationsLocalization();
builder.Services.AddHttpForwarderWithServiceDiscovery();
builder.Services.AddReverseProxy()
.LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"))
.LoadFromMemory(routes: [], clusters: []);
builder.Services.AddSingleton<IConfiguredServiceEndPointResolver, ConfiguredServiceEndPointResolver>();
builder.Services.AddSingleton<IReverseProxyConfigProvider, CustomReverseProxyConfigProvider>();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseExceptionHandler();
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", () =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
(
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)]
))
.ToArray();
return forecast;
});
app.MapDefaultEndpoints();
app.Run();
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
app.Services.GetRequiredService<IHostApplicationLifetime>().ApplicationStarted.Register(async () =>
{
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
IReverseProxyConfigProvider provider = app.Services.GetRequiredService<IReverseProxyConfigProvider>();
IReadOnlyList<RouteConfig> routes = await provider.GetRoutesAsync();
IReadOnlyList<ClusterConfig> clusters = await provider.GetClustersAsync();
app.Services.GetRequiredService<InMemoryConfigProvider>().Update(routes, clusters);
});
app.MapReverseProxy();
app.MapControllers();
app.Run();