JSON-RPC یک پروتکل ارتباطی سبک و ساده است که برای درخواستهای دورکار (remote procedure calls) از آن استفاده میشود. این پروتکل از فرمت JSON (JavaScript Object Notation) برای ارسال دادهها استفاده میکند و امکان ارتباطات میان سیستمها را فراهم میآورد. به عبارت دیگر، JSON-RPC به شما این امکان را میدهد که از یک سرور یا سیستم درخواست کنید که یک عملیات خاص را انجام دهد، و نتیجه آن را به شما برگرداند. این پروتکل بیشتر برای توسعهدهندگان وب و برنامههای توزیعشده کاربرد دارد و با توجه به سادگی و مقیاسپذیری بالا، در بسیاری از پروژهها، از جمله بلاکچینها و سرویسهای وب، بهطور گستردهای مورد استفاده قرار میگیرد.
در این مقاله به طور جامع به اصول JSON-RPC پرداخته میشود. ابتدا با نحوه عملکرد این پروتکل آشنا میشویم و سپس مزایا، معایب، و کاربردهای آن را بررسی خواهیم کرد. در ادامه، به بررسی چگونگی پیادهسازی JSON-RPC و تفاوت آن با سایر پروتکلها خواهیم پرداخت.
JSON-RPC یک پروتکل ارتباطی برای انجام درخواستهای دورکاری است که بر اساس JSON (یک فرمت ساده و متنی برای تبادل دادهها) عمل میکند. این پروتکل به شما این امکان را میدهد که درخواستهایی به سرور ارسال کنید و از آن سرور بخواهید تا عملیاتی را انجام دهد، و سپس پاسخهای آن را در قالب یک شیء JSON دریافت کنید.
در JSON-RPC، درخواستها و پاسخها به صورت متن ساده (text-based) فرستاده میشوند، که از این نظر مشابه پروتکلهای دیگر مانند XML-RPC است، اما بهواسطه استفاده از JSON که کم حجمتر و خواناتر است، به مراتب از XML سریعتر و کارآمدتر است.
در پروتکل JSON-RPC، درخواستها معمولاً شامل چهار قسمت اصلی هستند:
یک مثال از درخواست JSON-RPC میتواند به شکل زیر باشد:
در اینجا:
"method": "subtract"
به سرور میگوید که باید تابع subtract
را اجرا کند."params": [42, 23]
پارامترهای این تابع هستند."id": 1
برای شناسایی و ارتباط با پاسخ استفاده میشود.JSON-RPC با استفاده از فرمت ساده و متنی JSON، به سرعت قابل درک و پیادهسازی است. این سادگی باعث میشود که JSON-RPC برای پروژههای کوچک و بزرگ مناسب باشد و از لحاظ مقیاسپذیری بسیار کارا باشد. زیرا بار زیادی بر روی منابع سرور و شبکه وارد نمیآورد.
JSON-RPC این امکان را به شما میدهد که متدهای مختلفی را از سرور فراخوانی کنید. سرور میتواند هر متدی را که نیاز دارید در اختیار شما قرار دهد، که این قابلیت باعث میشود که این پروتکل برای ارتباطات پیچیدهتر و نیازهای بیشتر مناسب باشد.
یکی از مزایای کلیدی JSON-RPC استفاده از JSON به عنوان فرمت داده است. این فرمت استاندارد در بسیاری از زبانهای برنامهنویسی از جمله JavaScript، Python، و PHP پشتیبانی میشود و به راحتی میتوان دادهها را در آن پردازش کرد.
پروتکل JSON-RPC از نسخهها پشتیبانی میکند. به این معنی که شما میتوانید از نسخههای مختلف این پروتکل استفاده کنید بدون اینکه مشکلی در ارتباطات پیش بیاید. این ویژگی به پروژهها این امکان را میدهد که به راحتی بهروز شوند و سازگاری میان نسخههای مختلف حفظ شود.
برای استفاده از JSON-RPC، شما نیاز به یک کلاینت و یک سرور دارید که با یکدیگر ارتباط برقرار کنند. سرور باید درخواستهای JSON-RPC را دریافت کرده و طبق متد مشخصشده در درخواست، عملیات را انجام دهد، و سپس پاسخی با فرمت JSON به کلاینت بازگرداند.
برای راهاندازی سرور JSON-RPC، باید از یک زبان برنامهنویسی که از JSON پشتیبانی میکند استفاده کنید. به عنوان مثال، میتوانیم یک سرور ساده در Node.js بنویسیم که درخواستهای JSON-RPC را پردازش کند.
در اینجا یک مثال ساده از نحوه پیادهسازی یک سرور JSON-RPC با استفاده از Node.js آورده شده است:
در این مثال:
subtract
دریافت شد، عملیات مربوطه را انجام میدهد و نتیجه را در پاسخ به کلاینت ارسال میکند.برای ارسال درخواستها به سرور JSON-RPC، میتوانیم از هر زبان برنامهنویسی که امکان ارسال درخواست HTTP را دارد، استفاده کنیم. در اینجا یک مثال از نحوه ارسال درخواست از طریق Node.js آورده شده است:
در اینجا:
subtract
را به سرور ارسال میکند.JSON-RPC در مقایسه با دیگر پروتکلها مانند XML-RPC و RESTful APIs مزایای خاصی دارد:
JSON-RPC یک پروتکل سبک و موثر برای انجام ارتباطات ریموت و فراخوانی متدها در سیستمهای توزیعشده است. این پروتکل ساده، سریع و بر اساس JSON عمل میکند که باعث میشود تا در برابر سایر پروتکلها مانند XML-RPC و SOAP برتری پیدا کند. با توجه به پشتیبانی از نسخههای مختلف، این پروتکل به راحتی قابل گسترش و سازگاری با سیستمهای پیچیدهتر است.