gRPC چیست؟
فریمورک RPC پرسرعت گوگل که با Protocol Buffers (باینری) بهجای JSON کار میکند — مناسب ارتباط سرویسبهسرویس با کارایی بالا.
چرا مهم است؟
در معماری میکروسرویس با ترافیک داخلی بالا، gRPC بهخاطر سریالسازی باینری فشرده و پشتیبانی از HTTP/2، معمولاً چند برابر سریعتر و کمحجمتر از REST/JSON عمل میکند.
تعریف
gRPC روی HTTP/2 اجرا میشود و پیامها را با Protocol Buffers (فرمت باینری فشرده) تعریف و سریالسازی میکند؛ Contract سرویس در یک فایل .proto نوشته میشود و کد Client/Server از روی آن Generate میشود.
مثال تعریف Contract (.proto)
service OrderService {
rpc GetOrder (GetOrderRequest) returns (OrderReply);
}
message GetOrderRequest { int32 id = 1; }
message OrderReply { int32 id = 1; string status = 2; }
// سمت سرور — پیادهسازی Generate شده
public override Task<OrderReply> GetOrder(GetOrderRequest request, ServerCallContext context)
=> Task.FromResult(new OrderReply { Id = request.Id, Status = "Paid" });
چه زمانی مناسب است
✔ ارتباط سرویسبهسرویس داخلی با ترافیک بالا ✔ Streaming دوطرفه (مثلاً بهروزرسانی زنده) ❌ API عمومی رو به مرورگر — پشتیبانی مستقیم مرورگر از gRPC محدود است؛ آنجا REST/JSON راحتتر است.
اشتباه رایج
❌ استفاده از gRPC برای API عمومی مصرفشده توسط فرانتاند وب بدون در نظر گرفتن محدودیت پشتیبانی مرورگر — برای آن سناریو یا REST بمانید یا از gRPC-Web (با محدودیتهای خودش) استفاده کنید.
منبع و مطالعه بیشتر
خلاصه
gRPC با Protocol Buffers و HTTP/2 ارتباط سرویسبهسرویس سریع و فشرده میسازد، Contract در فایل .proto تعریف میشود. برای API مصرفشده مستقیم توسط مرورگر معمولاً REST مناسبتر است. مرجع کامل: مستندات gRPC در ASP.NET Core، Microsoft Learn.
