嘉兴免费网站建站模板,国内做优秀的农业信息网站,网页布局的基础,手表购物网站排名今天给大家翻译一篇由ASP.NET首席开发工程师James Newton-King前几天发表的一篇博客#xff0c;文中带来了一个实验性的产品gRPC-Web。大家可以点击文末的讨论帖进行相关反馈。我会在文章末尾给出原文链接。全部译文如下#xff1a;我很高兴宣布通过.NET对gRPC-Web进行实验性… 今天给大家翻译一篇由ASP.NET首席开发工程师James Newton-King前几天发表的一篇博客文中带来了一个实验性的产品gRPC-Web。大家可以点击文末的讨论帖进行相关反馈。我会在文章末尾给出原文链接。全部译文如下我很高兴宣布通过.NET对gRPC-Web进行实验性支持。gRPC-Web允许从基于浏览器的应用程序例如JavaScript SPA或Blazor WebAssembly应用程序调用gRPC。.NET的gRPC-Web承诺将gRPC的许多出色功能引入浏览器应用程序强类型代码生成的客户端紧凑的Protobuf消息服务流什么是gRPC-Web无法在浏览器中实现gRPC HTTP / 2规范因为没有浏览器API能够对HTTP请求进行足够的细粒度控制。gRPC-Web通过与HTTP / 1.1和HTTP / 2进行兼容来解决此问题。gRPC-Web不是一项新技术。已经有一个稳定的gRPC-Web JavaScript客户端以及一个用于在gRPC和gRPC-Web之间进行转换的代理 。新的实验性程序包允许ASP.NET Core gRPC应用程序支持不带代理的gRPC-Web 并允许.NET Core gRPC客户端调用gRPC-Web服务。非常适合Blazor WebAssembly应用使用gRPC-Web的新场景从浏览器调用ASP.NET Core gRPC应用程序–浏览器API无法调用gRPC HTTP / 2。gRPC-Web提供了一个兼容的替代方案。JavaScript SPA.NET Blazor Web Assembly应用在IIS和Azure App Service中托管ASP.NET Core gRPC应用程序 –某些服务器例如IIS和Azure App Service当前无法托管gRPC服务。在积极研究这一问题的同时gRPC-Web提供了一种有趣的替代方案可在当今的每个环境中使用。从非.NET Core平台调用gRPC –一些.NET平台HttpClient不支持HTTP / 2。gRPC-Web可用于在这些平台例如Blazor WebAssemblyXamarin上调用gRPC服务。请注意gRPC-Web的性能成本较低并且不再支持两个gRPC功能客户端流和双向流。仍然支持服务端流服务端gRPC-Web说明如果您是.NET中gRPC的新手那么这里有一个简单的入门指南。gRPC-Web不需要对服务进行任何更改唯一的修改是启动配置。要在ASP.NET Core gRPC服务中启用gRPC-Web请添加对Grpc.AspNetCore.Web包的引用。通过在启动文件中添加AddGrpcWeb(...)和UseGrpcWeb()将应用程序配置为使用gRPC-Web Startup.cspublic void ConfigureServices(IServiceCollection services)
{services.AddGrpc();
}public void Configure(IApplicationBuilder app)
{app.UseRouting();// Add gRPC-Web middleware after routing and before endpointsapp.UseGrpcWeb();app.UseEndpoints(endpoints {endpoints.MapGrpcServiceGreeterService().EnableGrpcWeb();});
}
从浏览器调用gRPC-Web可能需要一些其他配置例如将应用程序配置为支持CORS。客户端gRPC-Web说明JavaScript的gRPC的Web客户端有关于设置gRPC Web客户端以在浏览器JavaScript SPAs中使用的说明。使用.NET客户端调用gRPC-Web与常规gRPC相同唯一的修改是创建通道的方式。要启用gRPC-Web请添加对Grpc.Net.Client.Web包的引用。配置通道以使用GrpcWebHandler// Configure a channel to use gRPC-Web
var handler new GrpcWebHandler(GrpcWebMode.GrpcWebText, new HttpClientHandler());
var channel GrpcChannel.ForAddress(https://localhost:5001, new GrpcChannelOptions{HttpClient new HttpClient(handler)});var client Greeter.GreeterClient(channel);
var response await client.SayHelloAsync(new GreeterRequest { Name .NET });
要查看运行.NET的gRPC-Web请花点时间阅读由Steve Sanderson撰写的精彩博客该博客在Blazor WebAssembly中使用gRPC-Web。立即尝试在ASP.NET Core中使用gRPC-WebNuGet上的预览包Grpc.AspNetCore.Web –将gRPC-Web支持添加到ASP.NET Core gRPC服务。Grpc.Net.Client.Web –在.NET调用gRPC-Web端点可以在此处找到将gRPC-Web与.NET Core一起使用的文档。.NET的gRPC-Web是一个实验性项目而不是稳定发布的产品。我们想测试一下我们实现gRPC-Web的方法是否有效并获得反馈与通过代理设置gRPC-Web的传统方法相比该方法对.NET开发人员是否有用。大家可以在https://github.com/grpc/grpc-dotnet上添加使用反馈以确保我们构建出开发人员喜欢并能发挥作用的东西。谢谢原文链接https://devblogs.microsoft.com/aspnet/grpc-web-experiment/原文作者James Newton-King翻译作者依乐祝