يسعدنا أن نعلن عن دعم تجريبي لـ gRPC-Web مع .NET. يسمح لك gRPC-Web باستدعاء gRPC من التطبيقات المستندة إلى المستعرض مثل تطبيقات JavaScript SPA أو Blazor WebAssembly.تتعهد gRPC-Web for .NET بجلب العديد من ميزات gRPC الرائعة إلى تطبيقات المتصفح:- عملاء مطبوعين بدقة على التعليمات البرمجية
- المشاركات Protobuf المدمجة
- دفق الخادم

ما هو gRPC-Web
لا يمكن تنفيذ مواصفات gRPC HTTP / 2 في المستعرض نظرًا لعدم وجود واجهة برمجة تطبيقات للمتصفح مع تحكم تفصيلي كافٍ في طلبات HTTP. يحل gRPC-Web هذه المشكلة من خلال التوافق مع HTTP / 1.1 و HTTP / 2.gRPC-Web ليست تقنية جديدة. هناك عميل جافا سكريبت gRPC-Web ثابت ، بالإضافة إلى وكيل للترجمة بين gRPC و gRPC-Web للخدمات. تسمح الحزم التجريبية الجديدة لتطبيق ASP.NET Core gRPC بدعم gRPC-Web بدون خادم وكيل وتسمح لعميل .NET Core gRPC باستدعاء خدمات gRPC-Web. (رائع لتطبيقات Blazor WebAssembly!)ميزات جديدة مع gRPC-Web
- استدعاء تطبيقات ASP.NET Core gRPC من متصفح - لا يمكن لواجهة برمجة تطبيقات المتصفح استدعاء gRPC HTTP / 2. يقدم gRPC-Web بديلاً متوافقًا.
- JavaScript SPA
- تطبيقات تجميع ويب .NET Blazor
- استضافة تطبيقات gRPC لـ ASP.NET Core في IIS وخدمة تطبيق Azure. بعض الخوادم ، مثل IIS و Azure Application Service ، غير قادرة حاليًا على استضافة خدمات gRPC. بينما يعملون بنشاط على ذلك ، تقدم gRPC-Web بديلاً مثيرًا للاهتمام يعمل اليوم في أي بيئة.
- استدعاء gRPC من أنظمة أساسية بخلاف .NET Core. بعض الأنظمة الأساسية .NET
HttpClient
لا تدعم HTTP / 2. يمكن استخدام gRPC-Web لاستدعاء خدمات gRPC على هذه الأنظمة الأساسية (مثل Blazor WebAssembly ، Xamarin).
لاحظ أن أداء gRPC-Web منخفض في الأداء ولم تعد ميزتان gRPC مدعومتين: بث العميل ودفق ثنائي الاتجاه. (التدفق إلى الخادم لا يزال مدعومًا!)تعليمات خادم ويب GRPC
إذا لم تكن قد درست gRPC في .NET بعد ، فإليك برنامج تعليمي بسيط حتى تتمكن من البدء .لا يتطلب gRPC-Web أي تغييرات على خدماتك ، التعديل الوحيد هو التكوين الأولي. لتمكين gRPC-Web مع خدمة ASP.NET Core gRPC ، قم بإضافة الرابط إلى حزمة Grpc.AspNetCore.Web . تكوين التطبيق لاستخدام gRPC ويب، مضيفا AddGrpcWeb(...)
، و UseGrpcWeb()
ملف بدء التشغيل: Startup.cspublic void ConfigureServices(IServiceCollection services)
{
services.AddGrpc();
}
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
// gRPC-Web
app.UseGrpcWeb();
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>().EnableGrpcWeb();
});
}
قد يتطلب الاتصال بـ gRPC-Web من متصفح تكوينًا إضافيًا ، على سبيل المثال ، تهيئة تطبيق لدعم CORS.تعليمات عميل ويب GRPC
يحتوي عميل gRPC-Web JavaScript على تعليمات لإعداد عميل gRPC-Web للاستخدام في متصفح JavaScript SPA.يشبه استدعاء gRPC-Web مع عميل .NET gRPC العادي ، والتغيير الوحيد هو الطريقة التي يتم بها إنشاء القناة. لتمكين gRPC-Web ، أضف الرابط إلى حزمة Grpc.Net.Client.Web . قم بتكوين القناة للاستخدام GrpcWebHandler
:// 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" });
لرؤية gRPC-Web مع .NET قيد التشغيل ، اقرأ أروع مشاركة مدونة لزميلنا الذين استخدموا gRPC-Web في Blazor WebAssembly .جرب gRPC-Web مع ASP.NET Core اليوم
حزم معاينة على NuGet:يمكنك العثور على وثائق حول استخدام gRPC-Web مع .NET Core هنا .ملاحظة: في حين أن gRPC-Web for .NET ليس سوى مشروع تجريبي ، وليس منتجًا مدعومًا.