gRPC یک سیستم فراخوانی منبع گشوده از شیوه بدور میباشد که در طراحی اپلیکیشن سال 2015 بوسیله گوگل پیشرفته میباشد.
این سیستم از HTTP/2 برای جابجایی پیامهای باینری و بافرهای پروتکل پیشفرض تحت عنوان لهجه تعریف و تمجید رابط (IDL) برای تعریف رابط خدمت و ساختار پیامها استعمال مینماید.
// The greeter service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user\'s name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
gRPC چهار نوع طرز خدمت دهی را تعریفوتمجید مینماید:
1. Unary RPCs: در آن کلاینت صرفا یک درخواست را به سرور ارسال مینماید و جواب واحدی اخذ مینماید.
2. Server streaming RPCs: کلاینت درخواست را به سرور ارسال مینماید و جریانی (استریم) را برای قرائت دنبالهای از پیامها اخذ مینماید.
3. Client Streaming RPCs: کلاینت دنبالهای از پیامها را مینویسد و آنان را به سرور میفرستد، مجدد از یک جریان ارائه گردیده به کار گیری مینماید.
4. Bidirectional Streaming RPCs: هر دو طرف دنبالهای از پیامها را با استعمال از جریان تلاوت-تایپ کردن ارسال مینمایند.
در حالتی که gRPC را با Web API مقایسه کنیم، تفاوتهای ذیل وجود داراست:
1. Web API بر اساس معماری REST میباشد جایی که همچون gRPC سبک RPC را توصیه مینماید، مدلی که تحت عنوان کلاینت، ریموت پروسیجر را بر روی سرور فراخوانی مینماید.
2. Web API از HTTP برای جابجایی به کار گیری مینماید در حالی که gRPC از HTTP/2 به کارگیری مینماید.
3. داده های رد و بدل گردیده بوسیله Web API فرمت قابل قرائت به وسیله آدم میباشد (معمولا JSON)، در حالی که gRPC از فرمت باینری به هم پیوسته به کارگیری مینماید.
پیش نیازها
پیش از ساختوساز خدمتهای gRPC مطمئن گردید که NET Core 3.1 SDK. به طور لوکال برای شما نصب شدهاست، این گزینه می تواند با تایپ فرمان تحت محاسبه گردد: ‘dotnet –version’ را در پنجره کنسول تحقیق نمایید. در حالتی که نصب نشده میباشد NET Core 3.1 (Linux, macOS, and Windows). را دانلود کرده و بر روی دستگاه خویش نصب فرمایید.
ساخت و ساز خدمت gRPC
اپای که میخواهیم بسازیم یک میکروسرویس میباشد که تخفیف را مطابق نوع مشتری (gold یا این که platinum یا این که silver) به حساب آوردن مینماید که قادر است بیشتر قابل سرایت کردن باشد. با ایجاد کرد یک پوشه تازه، grpc-dotnet-microservice، و اضافه کردن نرم افزار های کلاینت و خدمت استارت فرمایید.
بدین پوشه بروید و پروژه خدمت را با تایپ کردن فرمان تحت در پنجره کنسول بسازید:
فرمان بالا یک مثال نو پروژه NET Core gRPC. در پوشه تشکیل شده CalculateDiscountService میسازد.
تعریفوتمجید تفاهم نامه
اولین گام تمجید تفاهم نامه (contract) میباشد که اینترفیسی میباشد که همت یا این که توابع علامت داده گردیده به وسیله خدمت را ذکر مینماید. در کادر ورک gRPC این اینترفیس از روش Protocol buffer یا این که protobuf تعریفوتمجید میگردد. به صورت خاص این اینترفیس در فولدر proto. تعریف و تمجید گردیده است.
پس به پوشه ~\\CalculateDiscountService\\Protos بروید، فولدر پیش فرض proto را به فولدر discount-calculate-service.proto تغییرو تحول اسم دهید و تغییرات تحت را اعمال دهید: