CodeShot
gRPC1 دقیقه مطالعه

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.

این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←