我目前正在试验.NET Aspire.According to docs,Aspire用于简化应用程序中服务之间的连接和通信.Aspire提供的功能之一是,通过 for each 服务赋予一个可以通过它们解析的特殊名称,使服务之间的通信变得容易,从而消除了手动设置端口和匹配地址以使服务连接的需要.
在.NET Aspire Quickstart Documentation中,是否解释了您可以在AppHost
Project的Program.cs
文件中为您的项目设置自定义名称,如下所示:
var builder = DistributedApplication.CreateBuilder (args);
var usersApi = builder
.AddProject<Projects.Bargeh_Users_API> ("usersapi"); // Setting the name "usersapi" to the project
builder.AddProject<Projects.Bargeh_Main_Wapp> ("bargehmainwapp")
.WithReference (usersApi)
.WithReference (smsApi)
.WithLaunchProfile ("https");
builder.Build ().Run ();
同样,从the documentation开始,您可以在希望访问其他服务的项目中添加以下代码,并让Aspire知道您需要该服务并为您解析该URL:
builder.Services.AddHttpClient<UsersApiHttpClientProvider>(
static client=> client.BaseAddress = new("http://usersapi"));
然后,你可以在任何你想注射的地方注射UsersApiHttpClientProvider
,并使用它.
此方法有效,但仅适用于访问对普通HTTP请求开放的API.问题是,我使用的UsersApi
不是REST API,而是GRPC服务.我可以连接到API并向其发送请求,但无法发送真正的GRPC请求.
我的问题是,我如何让我的客户端项目(本例中是Blazor Web App)使用Grpc.Net
个包连接到我的后端GRPC服务,而它们之间的连接是由.NET Aspire建立的?