آموزش پیاده سازی gRPC در Asp net Core 5

در این آموزش نحوه پیاده سازی gRPC در زبان Asp.Net Core 5 به صورت کامل همراه با مثال عملی آموزش داده شده . اما قبل از شروع بهتر است کمی با آن آشنا شویم .(در بخش ابتدایی آموزش تمام موارد تئوری شرح داده شده)


gRPC چیست ؟  

در حقیقت gRPC یک فریمورک است که به ما این امکان را می دهد تا API  هایی از جنس  (Remote Procedure Call) 
یا RPC بسازیم . این API  ها نسبت به سایر رقیب های خودش مثل  SOAP و REST بسیار سریع تر ، سبک تر و قابل انعطاف تر است . فریمورک gRPC برای سریالایز کردن داده های خود از پروتکل بافر استفاده می کند . پروتوباف در واقع داده ها را به آرایه یا استریمی از بایت ها تبدیل می کند که در مقایسه با JSON دارای حجم کمتری است .
RPC ها به کلاینت ها این امکان را می دهند که متد درخواستی را درسمت کلاینت نیز بتوانند پیاده سازی کنند . شاید در ابتدا برایتان نامفهوم باشد اما تصمیم دارم در قابل یک مثال آن را توضیح دهم . فرض کنید در حال پیاده سازی یک سیستم فروشگاهی آنلاین هستیم . متدی داریم به نام GetOrder(int id) که یک شناسه سفارش را از کلاینت دریافت می کند و اطلاعات سفارش ثبت شده را مجددا در قالب یه پاسخ به کلاینت ارسال می کند ، اما این متد در کدام قسمت پیاده سازی شده ؟ بله در سمت سرور . حالا RPC به ما این امکان را می دهد که برای استفاده از این متد ،  آن را در سمت کلاینت نیز بتوانیم پیاده سازی کنیم یعنی در این حالت ما به ساختار و اجزای همان متد در سمت کلاینت نیز دسترسی داریم در صورتی که در روش REST  کلاینت صرفا با یک سری endpoint  ها از جنس url  در ارتباط است که بر اساس مستندات آن متد در آن آدرس می تواند آن را فراخوانی کند .
این فریمورک از http2 (نسخه بهبود یافته HTTP 1.1 است که از یک ارتباط ، برای چندین درخواست می تواند استفاده کند ، همچنین شامل مزایای دیگری نیز هست که در مقاله ای جداگانه آن را شرح خواهم داد) به عنوان پروتکل ارتباطی استفاده می نماید و همچنین از Streaming های مختلفی مانند Server Streaming  ،  Client Streaming و Bidirectional Streaming نیز پشتیبانی می کند .
تمام متد های ما (API  هایمان برای ارائه به کلاینت) درون یک فایل با پسوند .proto قرار می گیرد . درون هر فایل .proto می توانیم یک یا چند message  تعریف کنیم که ورودی و خروجی های هر متد در آن مشخص می گردد و می توانیم یک سرویس تعریف کنیم که تعریف اولیه یا امضا هر متد درون آن صورت می گیرد . 
Message ها را می توانید همان DTOs ها در سی شارپ و service ها را نیز همان اینترفیس ها در نظر بگیرید . اگر بخواهم message  ها و service ها را بیشتر توضیح دهم ترجیح می دهم در قالب یک مثال آن را بازگو کنم . فرض کنید متدی داریم به نام SUM(int a ,int b) که دو عدد از ورودی دریافت می کند و در نهایت یک عدد به عنوان جمع آنها و خروجی برمی گرداند . ورودی های این متد و نیز خروجی آن می تواند در قالب message  ها تعریف شود . به کد های زیر دقت کنید : 

message SumRequest{
            int64 first_number =1;
        int64 second_number =2;
}
message SumResponse{
            int64 result =1;
}

SumRequest  ورود های متد ما هستند که دو عدد از نوع عددی صحیح دریافت می کنند و SumResponse نیز خروجی متد ماست که از نوع عددی صحیح تحت عنوان result ارجاع می دهد . در این دوره آموزشی تمام این موارد هم به صورت تئوری و هم به صورت عملی و در قالب یک مثال کاربردی برای شما عزیزان آموزش  داده  شده است . 

سرفصل دوره آموزشی  پیاده سازی gRPC در Asp.Net Core 5 به شرح زیر است :

فصل اول :

  • مقدمه ای بر gRPC : در این قسمت با تمام اجزا gRPC  آشنا می شوید . message  ها Service ها ، فایل های .proto ، enum  ها ، انواع DataType  ها در پروتوباف ، موارد استفاده از gRPC  و ... 
  • پیاده سازی gRPC در یک پروژه Asp.net Core 5  به همراه مثال عملی .
     


ثبت دیدگاه فقط برای اعضای سایت ورود ثبت نام