使用gRPC-Web从浏览器调用.NET gRPC服务
2021-06-03 22:01
标签:mod int 代码生成 figure get err org new 代码 我很高兴宣布通过.NET对gRPC-Web进行实验性支持。gRPC-Web允许从基于浏览器的应用程序(例如JavaScript SPA或Blazor WebAssembly应用程序)调用gRPC。 .NET的gRPC-Web承诺将gRPC的许多出色功能引入浏览器应用程序: 无法在浏览器中实现gRPC HTTP / 2规范,因为没有浏览器API能够对HTTP请求进行足够的细粒度控制。gRPC-Web通过与HTTP / 1.1和HTTP / 2兼容来解决此问题。 gRPC-Web不是一项新技术。有一个稳定的gRPC-Web JavaScript客户端,以及一个在gRPC和gRPC-Web for services 之间进行转换的代理。新的实验性程序包允许ASP.NET Core gRPC应用程序支持不带代理的gRPC-Web ,并允许.NET Core gRPC客户端调用gRPC-Web服务。(非常适合Blazor WebAssembly应用!) 请注意,gRPC-Web的性能成本较低,并且不再支持两个gRPC功能:客户端流和双向流。(仍然支持服务器流!) 如果您是.NET中gRPC的新手,那么这里有一个简单的入门指南。 gRPC-Web不需要对服务进行任何更改,唯一的修改是启动配置。要使用ASP.NET Core gRPC服务启用gRPC-Web,请添加对Grpc.AspNetCore.Web包的引用。通过在启动文件中添加 启动文件 从浏览器调用gRPC-Web可能需要一些其他配置,例如将应用程序配置为支持CORS。 JavaScript的GRPC的Web客户端的指令用于建立GRPC的Web客户端浏览器的JavaScript的SPA使用。 使用.NET客户端调用gRPC-Web与常规gRPC相同,唯一的修改是创建通道的方式。要启用gRPC-Web,请添加对Grpc.Net.Client.Web包的引用。配置通道以使用 要查看运行.NET的gRPC-Web,请花点时间阅读由Steve Sanderson撰写的精彩博客,该博客在Blazor WebAssembly中使用gRPC-Web。 预览包位于NuGet上: 可以在此处找到将gRPC-Web与.NET Core一起使用的文档。 .NET的gRPC-Web是一个实验性项目,而不是承诺的产品。我们想测试一下我们实现gRPC-Web的方法是否有效,并获得反馈,与通过代理设置gRPC-Web的传统方法相比,该方法对.NET开发人员是否有用。请在此处或在https://github.com/grpc/grpc-dotnet上添加您的反馈,以确保我们构建出开发人员喜欢并能发挥作用的东西。 谢谢! 使用gRPC-Web从浏览器调用.NET gRPC服务 标签:mod int 代码生成 figure get err org new 代码 原文地址:https://www.cnblogs.com/bisslot/p/12346507.html
什么是gRPC-Web
使用gRPC-Web的新机会
HttpClient
不支持HTTP / 2。gRPC-Web可用于在这些平台(例如Blazor WebAssembly,Xamarin)上调用gRPC服务。
服务器gRPC-Web说明
AddGrpcWeb(...)
和UseGrpcWeb()
,将应用程序配置为使用gRPC-Web : 1 public void ConfigureServices(IServiceCollection services)
2 {
3 services.AddGrpc();
4 }
5
6 public void Configure(IApplicationBuilder app)
7 {
8 app.UseRouting();
9
10 // Add gRPC-Web middleware after routing and before endpoints
11 app.UseGrpcWeb();
12
13 app.UseEndpoints(endpoints =>
14 {
15 endpoints.MapGrpcService
客户端gRPC-Web说明
GrpcWebHandler
:1 // Configure a channel to use gRPC-Web
2 var handler = new GrpcWebHandler(GrpcWebMode.GrpcWebText, new HttpClientHandler());
3 var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
4 {
5 HttpClient = new HttpClient(handler)
6 });
7
8 var client = Greeter.GreeterClient(channel);
9 var response = await client.SayHelloAsync(new GreeterRequest { Name = ".NET" });
立即尝试使用带有ASP.NET Core的gRPC-Web
文章标题:使用gRPC-Web从浏览器调用.NET gRPC服务
文章链接:http://soscw.com/index.php/essay/90139.html