JSON-RPC? ืงื— REST ืžืกื•ื‘ืš

JSON-RPC? ืงื— REST ืžืกื•ื‘ืš

ืื ื™ ื‘ื˜ื•ื— ืฉื”ื›ื•ืชืจืช ื’ืจืžื” ืœืชื’ื•ื‘ื” ื‘ืจื™ืื” - "ื˜ื•ื‘, ื–ื” ื”ืชื—ื™ืœ ืฉื•ื‘..." ืื‘ืœ ื”ืจืฉื• ืœื™ ืœืœื›ื•ื“ ืืช ืชืฉื•ืžืช ืœื‘ื›ื ืœืžืฉืš 5-10 ื“ืงื•ืช, ื•ืืฉืชื“ืœ ืœื ืœืื›ื–ื‘ ืืช ืฆื™ืคื™ื•ืชื™ื›ื.

ืžื‘ื ื” ื”ืžืืžืจ ื™ื”ื™ื” ื›ื“ืœืงืžืŸ: ื ืœืงื—ืช ืืžื™ืจื” ืกื˜ืจื™ืื•ื˜ื™ืคื™ืช ื•ืžืชื’ืœื” "ื˜ื‘ืขื•" ื”ื•ืคืขืชื• ืฉืœ ืกื˜ืจื™ืื•ื˜ื™ืค ื–ื”. ืื ื™ ืžืงื•ื•ื” ืฉื–ื” ื™ืืคืฉืจ ืœืš ืœื”ืกืชื›ืœ ืขืœ ื”ื‘ื—ื™ืจื” ื‘ืคืจื“ื™ื’ืžืช ื—ื™ืœื•ืคื™ ื ืชื•ื ื™ื ื‘ืคืจื•ื™ืงื˜ื™ื ืฉืœืš ืžื–ื•ื•ื™ืช ื—ื“ืฉื”.

ื›ื“ื™ ืฉื™ื”ื™ื” ื‘ืจื•ืจ ืžื” ื–ื” RPC, ืื ื™ ืžืฆื™ืข ืœืฉืงื•ืœ ืืช ื”ืชืงืŸ JSON-RPC 2.0. ืขื REST ืื™ืŸ ื‘ื”ื™ืจื•ืช. ื•ื–ื” ืœื ืืžื•ืจ ืœื”ื™ื•ืช. ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš ืœื“ืขืช ืขืœ REST - ืœื ื ื™ืชืŸ ืœื”ื‘ื—ื™ืŸ ื‘ื• HTTP.

ื‘ืงืฉื•ืช RPC ื”ืŸ ืžื”ื™ืจื•ืช ื•ื™ืขื™ืœื•ืช ื™ื•ืชืจ ืžื›ื™ื•ื•ืŸ ืฉื”ืŸ ืžืืคืฉืจื•ืช ืœืš ืœื‘ืฆืข ื‘ืงืฉื•ืช ืืฆื•ื•ื”.

ื”ืขื ื™ื™ืŸ ื”ื•ื ืฉื‘-RPC ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืœื›ืžื” ืคืจื•ืฆื“ื•ืจื•ืช ื‘ื•-ื–ืžื ื™ืช ื‘ื‘ืงืฉื” ืื—ืช. ืœื“ื•ื’ืžื”, ืฆื•ืจ ืžืฉืชืžืฉ, ื”ื•ืกืฃ ืœื• ืื•ื•ื˜ืืจ ื•ื‘ืื•ืชื” ื‘ืงืฉื” ืชืจืฉื•ื ืœื• ื›ืžื” ื ื•ืฉืื™ื. ืจืง ื‘ืงืฉื” ืื—ืช, ื•ื›ืžื” ืชื•ืขืœืช!

ื•ืื›ืŸ, ืื ื™ืฉ ืœืš ืจืง ืฆื•ืžืช ืื—ื•ืจื™ ืื—ื“, ื–ื” ื™ื™ืจืื” ืžื”ื™ืจ ื™ื•ืชืจ ืขื ื‘ืงืฉืช ืืฆื•ื•ื”. ืžื›ื™ื•ื•ืŸ ืฉืฉืœื•ืฉ ื‘ืงืฉื•ืช REST ื™ื“ืจืฉื• ืคื™ ืฉืœื•ืฉื” ื™ื•ืชืจ ืžืฉืื‘ื™ื ืžืฆื•ืžืช ืื—ื“ ื›ื“ื™ ืœื™ืฆื•ืจ ื—ื™ื‘ื•ืจื™ื.

JSON-RPC? ืงื— REST ืžืกื•ื‘ืš

ืฉื™ืžื• ืœื‘ ืฉื”ื‘ืงืฉื” ื”ืจืืฉื•ื ื” ื‘ืžืงืจื” ืฉืœ REST ื—ื™ื™ื‘ืช ืœื”ื—ื–ื™ืจ ืืช ืžื–ื”ื” ื”ืžืฉืชืžืฉ ืขืœ ืžื ืช ืฉื™ื‘ื•ืฆืขื• ื‘ืงืฉื•ืช ืขื•ืงื‘ื•ืช. ืžื” ืฉื’ื ืžืฉืคื™ืข ืœืจืขื” ืขืœ ื”ืชื•ืฆืื” ื”ื›ืœืœื™ืช.

ืื‘ืœ ื ื™ืชืŸ ืœืžืฆื•ื ืชืฉืชื™ื•ืช ื›ืืœื” ืจืง ื‘ืคืชืจื•ื ื•ืช ืคื ื™ืžื™ื™ื ื•ื‘ืืจื’ื•ื ื™ื. ื›ืžื•ืฆื ืื—ืจื•ืŸ, ื‘ืคืจื•ื™ืงื˜ื™ WEB ืงื˜ื ื™ื. ืื‘ืœ ืคืชืจื•ื ื•ืช WEB ืžืŸ ื”ืžื ื™ื™ืŸ, ื•ืืคื™ืœื• ื›ืืœื” ืฉื ืงืจืื™ื HighLoad, ืœื ื›ื“ืื™ ืœื‘ื ื•ืช. ื”ืชืฉืชื™ืช ืฉืœื”ื ื—ื™ื™ื‘ืช ืœืขืžื•ื“ ื‘ืงืจื™ื˜ืจื™ื•ื ื™ื ืฉืœ ื–ืžื™ื ื•ืช ื•ืขื•ืžืก ื’ื‘ื•ื”ื™ื. ื•ื”ืชืžื•ื ื” ืžืฉืชื ื”.

JSON-RPC? ืงื— REST ืžืกื•ื‘ืš

ืขืจื•ืฆื™ ืคืขื™ืœื•ืช ืชืฉืชื™ืช ื‘ืื•ืชื• ืชืจื—ื™ืฉ ืžืกื•ืžื ื™ื ื‘ื™ืจื•ืง. ืฉื™ืžื• ืœื‘ ืื™ืš RPC ืžืชื ื”ื’ ืขื›ืฉื™ื•. ื”ื‘ืงืฉื” ืžืฉืชืžืฉืช ื‘ืชืฉืชื™ืช ืขืœ ืจื’ืœ ืื—ืช ื‘ืœื‘ื“ ืžื”ืื™ื–ื•ืŸ ื•ืขื“ ื”ืงืฆื” ื”ืื—ื•ืจื™. ื‘ืขื•ื“ REST ืขื“ื™ื™ืŸ ืžืคืกื™ื“ ื‘ื‘ืงืฉื” ื”ืจืืฉื•ื ื”, ื”ื•ื ืžืคืฆื” ืขืœ ื”ื–ืžืŸ ื”ืื‘ื•ื“ ื‘ืืžืฆืขื•ืช ื”ืชืฉืชื™ืช ื›ื•ืœื”.

ืžืกืคื™ืง ืœื”ื–ื™ืŸ ืœืชืกืจื™ื˜ ืœื ืฉืชื™ ื‘ืงืฉื•ืช ื”ืขืฉืจื”, ืืœื, ื ื’ื™ื“, ื—ืžืฉ ืื• ืขืฉืจ... ื•ื”ืชืฉื•ื‘ื” ืœืฉืืœื” "ืžื™ ืžื ืฆื— ืขื›ืฉื™ื•?" ื”ื•ืคืš ืœื”ื™ื•ืช ืœื ื‘ืจื•ืจ.

ืื ื™ ืžืฆื™ืข ืœื”ืกืชื›ืœ ืืคื™ืœื• ื™ื•ืชืจ ืจื—ื‘ ืขืœ ื”ื‘ืขื™ื”. ื”ืชืจืฉื™ื ืžืจืื” ื›ื™ืฆื“ ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืขืจื•ืฆื™ ืชืฉืชื™ืช, ืืš ืชืฉืชื™ืช ืื™ื ื” ืžื•ื’ื‘ืœืช ืœืขืจื•ืฆื™ื. ืžืจื›ื™ื‘ ื—ืฉื•ื‘ ื‘ืชืฉืชื™ืช ื‘ืขื•ืžืก ื’ื‘ื•ื” ื”ื•ื ืžื˜ืžื•ื ื™ื. ื‘ื•ืื• ื ืงื‘ืœ ืขื›ืฉื™ื• ืกื•ื’ ืฉืœ ื—ืคืฅ ืžืฉืชืžืฉ. ืฉื•ื‘ ื•ืฉื•ื‘. ื ื ื™ื— 32 ืคืขืžื™ื.

JSON-RPC? ืงื— REST ืžืกื•ื‘ืš

ืจืื” ื›ื™ืฆื“ ืชืฉืชื™ืช RPC ื”ืฉืชืคืจื” ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ ื›ื“ื™ ืœืขืžื•ื“ ื‘ื“ืจื™ืฉื•ืช ืฉืœ ืขื•ืžืก ื’ื‘ื•ื”. ื”ืขื ื™ื™ืŸ ื”ื•ื ืฉ-REST ืžืฉืชืžืฉ ื‘ืžืœื•ื ื”ืขื•ืฆืžื” ืฉืœ ืคืจื•ื˜ื•ืงื•ืœ ื”-HTTP, ื‘ื ื™ื’ื•ื“ ืœ-RPC. ื‘ืชืจืฉื™ื ืœืžืขืœื”, ื›ื•ื— ื–ื” ืžืชืžืžืฉ ื‘ืืžืฆืขื•ืช ืฉื™ื˜ืช ื”ื‘ืงืฉื” - GET.

ืœืฉื™ื˜ื•ืช HTTP, ื‘ื™ืŸ ื”ื™ืชืจ, ื™ืฉ ืืกื˜ืจื˜ื’ื™ื•ืช ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ. ืชื•ื›ืœ ืœืžืฆื•ื ืื•ืชื ื‘ืชื™ืขื•ื“ ื‘ื›ืชื•ื‘ืช HTTP. ืขื‘ื•ืจ RPC, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ื‘ืงืฉื•ืช POST, ืฉืื™ื ืŸ ื ื—ืฉื‘ื•ืช ืื™ื“ื™ืžื•ืช, ื›ืœื•ืžืจ, ื—ื–ืจื•ืช ื—ื•ื–ืจื•ืช ื•ื ืฉื ื•ืช ืฉืœ ืื•ืชืŸ ื‘ืงืฉื•ืช POST ืขืฉื•ื™ื•ืช ืœื”ื—ื–ื™ืจ ืชื•ืฆืื•ืช ืฉื•ื ื•ืช (ืœื“ื•ื’ืžื”, ืœืื—ืจ ืฉืœื™ื—ืช ื›ืœ ืชื’ื•ื‘ื”, ื™ื•ืคื™ืข ืขื•ืชืง ื ื•ืกืฃ ืฉืœ ื”ืขืจื” ื–ื•) (ืžืงื•ืจ).

ื›ืชื•ืฆืื” ืžื›ืš, RPC ืื™ื ื• ืžืกื•ื’ืœ ืœื”ืฉืชืžืฉ ื‘ื™ืขื™ืœื•ืช ื‘ืžื˜ืžื•ื ื™ ืชืฉืชื™ืช. ื–ื” ืžื•ื‘ื™ืœ ืœืฆื•ืจืš "ืœื™ื™ื‘ื" ืžื˜ืžื•ื ื™ ืชื•ื›ื ื”. ื”ืชืจืฉื™ื ืžืฆื™ื’ ืืช Redis ื‘ืชืคืงื™ื“ ื–ื”. ืžื˜ืžื•ืŸ ื”ืชื•ื›ื ื”, ื‘ืชื•ืจื•, ื“ื•ืจืฉ ืžื”ืžืคืชื— ืœื”ื•ืกื™ืฃ ืฉื›ื‘ืช ืงื•ื“ ื ื•ืกืคืช ื•ืฉื™ื ื•ื™ื™ื ื ื™ื›ืจื™ื ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื”.

ื›ืขืช ื ืกืคื•ืจ ื›ืžื” ื‘ืงืฉื•ืช REST ื•-RPC "ื”ื•ืœื™ื“ื•" ื‘ืชืฉืชื™ืช ื”ื ื‘ื“ืงืช?

ื‘ืงืฉื•ืช
ืชื™ื‘ืช ื“ื•ืืจ ื ื›ื ืก
ืœืื—ื•ืจ
ืœ-DBMS
ืœืžื˜ืžื•ืŸ ืจืš (Redis)
ืกืš ื”ื›ืœ

REST
1 / 32 *
1
1
0
3 / 35

RPC
32
32
1
31
96

[*] ื‘ืžืงืจื” ื”ื˜ื•ื‘ (ืื ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžื˜ืžื•ืŸ ื”ืžืงื•ืžื™) ื‘ืงืฉื” ืื—ืช (ืื—ืช!), ื‘ืžืงืจื” ื”ืจืข 1 ื‘ืงืฉื•ืช ื ื›ื ืกื•ืช.

ื‘ื”ืฉื•ื•ืื” ืœืชื›ื ื™ืช ื”ืจืืฉื•ื ื”, ื”ื”ื‘ื“ืœ ื‘ื•ืœื˜. ื›ืขืช ืžืชื‘ืจืจ ื”ื™ืชืจื•ืŸ ืฉืœ REST. ืื‘ืœ ืื ื™ ืžืฆื™ืข ืœื ืœืขืฆื•ืจ ืฉื. ื”ืชืฉืชื™ืช ืฉืคื•ืชื—ื” ื›ื•ืœืœืช CDN. ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื–ื” ื’ื ืคื•ืชืจ ืืช ื ื•ืฉื ื”ืชืžื•ื“ื“ื•ืช ืขื ื”ืชืงืคื•ืช DDoS ื•-DoS. ืื ื—ื ื• ืžืงื‘ืœื™ื:

JSON-RPC? ืงื— REST ืžืกื•ื‘ืš

ื–ื” ื”ืžืงื•ื ืฉื‘ื• ื”ื“ื‘ืจื™ื ื ื”ื™ื” ืžืžืฉ ื’ืจื•ืขื™ื ืขื‘ื•ืจ RPC. RPC ืคืฉื•ื˜ ืœื ืžืกื•ื’ืœ ืœื”ืืฆื™ืœ ืืช ืขื•ืžืก ื”ืขื‘ื•ื“ื” ืœ-CDN. ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืกืžื•ืš ืจืง ืขืœ ืžืขืจื›ื•ืช ื›ื“ื™ ืœื”ืชืžื•ื“ื“ ืขื ื”ืชืงืคื•ืช.

ื”ืื ืืคืฉืจ ืœืกื™ื™ื ื›ืืŸ? ื•ืฉื•ื‘, ืœื. ืœืฉื™ื˜ื•ืช HTTP, ื›ืืžื•ืจ ืœืขื™ืœ, ื™ืฉ "ืงืกื" ืžืฉืœื”ืŸ. ื•ืœื ื‘ื›ื“ื™ ืฉื™ื˜ืช GET ื ืžืฆืืช ื‘ืฉื™ืžื•ืฉ ื ืจื—ื‘ ื‘ืื™ื ื˜ืจื ื˜. ืฉื™ืžื• ืœื‘ ืฉืฉื™ื˜ื” ื–ื• ืžืกื•ื’ืœืช ืœื’ืฉืช ืœืคื™ืกืช ืชื•ื›ืŸ, ื”ื™ื ืžืกื•ื’ืœืช ืœื”ื’ื“ื™ืจ ืชื ืื™ื ืฉืจื›ื™ื‘ื™ ืชืฉืชื™ืช ื™ื›ื•ืœื™ื ืœืคืจืฉ ืœืคื ื™ ื”ืขื‘ืจืช ื”ืฉืœื™ื˜ื” ืœืงื•ื“ ืฉืœื›ื ื•ื›ืŸ ื”ืœืื”. ื›ืœ ื–ื” ืžืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ืชืฉืชื™ื•ืช ื’ืžื™ืฉื•ืช ื•ื ื™ืชื ื•ืช ืœื ื™ื”ื•ืœ ืฉื™ื›ื•ืœื•ืช ืœื”ืชืžื•ื“ื“ ืขื ื–ืจืžื™ื ื’ื“ื•ืœื™ื ื‘ืืžืช ืฉืœ ื‘ืงืฉื•ืช. ืื‘ืœ ื‘-RPC ืžืชืขืœืžื™ื ืžื”ืฉื™ื˜ื” ื”ื–ื•...

ืื– ืœืžื” ื”ืžื™ืชื•ืก ืฉื‘ืงืฉื•ืช ืืฆื•ื•ื” (RPC) ืžื”ื™ืจื•ืช ื™ื•ืชืจ ื”ื•ื ื›ืœ ื›ืš ืžืชืžืฉืš? ื‘ืื•ืคืŸ ืื™ืฉื™, ื ืจืื” ืœื™ ืฉืจื•ื‘ ื”ืคืจื•ื™ืงื˜ื™ื ืคืฉื•ื˜ ืœื ืžื’ื™ืขื™ื ืœืจืžืช ืคื™ืชื•ื— ืฉื‘ื” REST ืžืกื•ื’ืœ ืœื”ืจืื•ืช ืืช ื›ื•ื—ื•. ื™ืชืจื” ืžื›ืš, ื‘ืคืจื•ื™ืงื˜ื™ื ืงื˜ื ื™ื, ื”ื•ื ืžื•ื›ืŸ ื™ื•ืชืจ ืœื”ืจืื•ืช ืืช ื”ื—ื•ืœืฉื•ืช ืฉืœื•.

ื”ื‘ื—ื™ืจื” ืฉืœ REST ืื• RPC ืื™ื ื” ื‘ื—ื™ืจื” ืžืจืฆื•ืŸ ืฉืœ ืื“ื ื‘ืคืจื•ื™ืงื˜. ื‘ื—ื™ืจื” ื–ื• ื—ื™ื™ื‘ืช ืœืขืžื•ื“ ื‘ื“ืจื™ืฉื•ืช ื”ืคืจื•ื™ืงื˜. ืื ืคืจื•ื™ืงื˜ ืžืกื•ื’ืœ ืœืกื—ื•ื˜ ื›ืœ ืžื” ืฉื”ื•ื ื‘ืืžืช ื™ื›ื•ืœ ืžืชื•ืš REST, ื•ื”ื•ื ื‘ืืžืช ืฆืจื™ืš ืืช ื–ื”, ืื– REST ืชื”ื™ื” ื‘ื—ื™ืจื” ืžืฆื•ื™ื ืช.

ืื‘ืœ ืื, ื›ื“ื™ ืœืงื‘ืœ ืืช ื›ืœ ื”ื™ืชืจื•ื ื•ืช ืฉืœ REST, ืืชื” ืฆืจื™ืš ืœืฉื›ื•ืจ ืžื•ืžื—ื™ devops ืœืคืจื•ื™ืงื˜ ื›ื“ื™ ืœื”ื’ื“ื™ืœ ืืช ื”ืชืฉืชื™ืช ื‘ืžื”ื™ืจื•ืช, ืžื ื”ืœื™ื ืœื ื”ืœ ืืช ื”ืชืฉืชื™ืช, ืืจื›ื™ื˜ืงื˜ ืฉื™ืชื›ื ืŸ ืืช ื›ืœ ื”ืฉื›ื‘ื•ืช ืฉืœ ืฉื™ืจื•ืช WEB... ื•ื”ืคืจื•ื™ืงื˜ , ื‘ืžืงื‘ื™ืœ, ืžื•ื›ืจ ืฉืœื•ืฉ ื—ื‘ื™ืœื•ืช ืžืจื’ืจื™ื ื” ื‘ื™ื•ื... ืื ื™ ื”ื™ื™ืชื™ ื ืฉืืจ ืขื RPC, ื›ื™... ื”ืคืจื•ื˜ื•ืงื•ืœ ื”ื–ื” ื™ื•ืชืจ ืชื•ืขืœืชื ื™. ื–ื” ืœื ื™ื“ืจื•ืฉ ื™ื“ืข ืžืขืžื™ืง ื›ื™ืฆื“ ืžื˜ืžื•ื ื™ื ื•ืชืฉืชื™ื•ืช ืขื•ื‘ื“ื™ื, ืืœื ื™ืžืงื“ ืืช ื”ืžืคืชื— ื‘ืงืจื™ืื•ืช ืคืฉื•ื˜ื•ืช ื•ืžื•ื‘ื ื•ืช ืœื”ืœื™ื›ื™ื ืฉื”ื•ื ืฆืจื™ืš. ื”ืขืกืง ื™ืฉืžื—.

ื‘ืงืฉื•ืช RPC ืืžื™ื ื•ืช ื™ื•ืชืจ ืžื›ื™ื•ื•ืŸ ืฉื”ืŸ ื™ื›ื•ืœื•ืช ืœื‘ืฆืข ื‘ืงืฉื•ืช ืืฆื•ื•ื” ื‘ืชื•ืš ืขืกืงื” ืื—ืช

ืชื›ื•ื ื” ื–ื• ืฉืœ RPC ื”ื™ื ื™ืชืจื•ืŸ ืžื•ื‘ื”ืง, ืžื›ื™ื•ื•ืŸ ืงืœ ืœืฉืžื•ืจ ืขืœ ืขืงื‘ื™ื•ืช ืžืกื“ ื”ื ืชื•ื ื™ื. ืื‘ืœ ืขื REST ื–ื” ื ื”ื™ื” ื™ื•ืชืจ ื•ื™ื•ืชืจ ืžืกื•ื‘ืš. ื‘ืงืฉื•ืช ืขืฉื•ื™ื•ืช ืœื”ื’ื™ืข ื‘ืื•ืคืŸ ืœื ืขืงื‘ื™ ืœืฆืžืชื™ื ืขื•ืจืคื™ื™ื ืฉื•ื ื™ื.

ื”"ื—ื™ืกืจื•ืŸ" ื”ื–ื” ืฉืœ REST ื”ื•ื ื”ืฆื“ ื”ืฉื ื™ ืฉืœ ื”ื™ืชืจื•ืŸ ืฉืœื• ืฉืชื•ืืจ ืœืขื™ืœ - ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ื™ืขื™ืœื•ืช ื‘ื›ืœ ืžืฉืื‘ื™ ื”ืชืฉืชื™ืช. ืื ื”ืชืฉืชื™ืช ืžืชื•ื›ื ื ืช ื‘ืฆื•ืจื” ื’ืจื•ืขื”, ื•ืขื•ื“ ื™ื•ืชืจ ืื ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ื”ืคืจื•ื™ืงื˜ ื•ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืคืจื˜ ืžืชื•ื›ื ื ื•ืช ื‘ืฆื•ืจื” ื’ืจื•ืขื”, ืื– ื–ื” ื‘ืืžืช ื›ืื‘ ื’ื“ื•ืœ.

ืื‘ืœ ื”ืื ื‘ืงืฉื•ืช ืืฆื•ื•ื” ืืžื™ื ื•ืช ื›ืคื™ ืฉื”ืŸ ื ืจืื•ืช? ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืžืงืจื”: ืื ื—ื ื• ื™ื•ืฆืจื™ื ืžืฉืชืžืฉ, ืžืขืฉื™ืจื™ื ืืช ื”ืคืจื•ืคื™ืœ ืฉืœื• ื‘ืชื™ืื•ืจ ื›ืœืฉื”ื• ื•ืฉื•ืœื—ื™ื ืœื• SMS ืขื ืกื•ื“ ืœื”ืฉืœืžืช ื”ืจื™ืฉื•ื. ื”ึธื”ึตืŸ. ืฉืœื•ืฉ ืฉื™ื—ื•ืช ื‘ื‘ืงืฉืช ืืฆื•ื•ื” ืื—ืช.

JSON-RPC? ืงื— REST ืžืกื•ื‘ืš

ื”ื‘ื” ื ืชื‘ื•ื ืŸ ื‘ืชืจืฉื™ื. ื”ื•ื ืžืฆื™ื’ ืชืฉืชื™ืช ืขื ืืœืžื ื˜ื™ื ืฉืœ ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื”. ื™ืฉื ื ืฉื ื™ ืขืจื•ืฆื™ ืชืงืฉื•ืจืช ืขืฆืžืื™ื™ื ืขื ืฉืขืจื™ SMS. ืื‘ืœ... ืžื” ืื ื—ื ื• ืจื•ืื™ื? ื‘ืขืช ืฉืœื™ื—ืช ื”ื•ื“ืขืช SMS ืžืชืจื—ืฉืช ืฉื’ื™ืื” 503 - ื”ืฉื™ืจื•ืช ืื™ื ื• ื–ืžื™ืŸ ื‘ืื•ืคืŸ ื–ืžื ื™. ื›ื™ ืฉืœื™ื—ืช SMS ืืจื•ื–ื” ื‘ื‘ืงืฉืช ืืฆื•ื•ื”, ื•ืื– ื™ืฉ ืœื”ื—ื–ื™ืจ ืืช ื›ืœ ื”ื‘ืงืฉื” ืœืื—ื•ืจ. ืคืขื•ืœื•ืช ื‘-DBMS ืžื‘ื•ื˜ืœื•ืช. ื”ืœืงื•ื— ืžืงื‘ืœ ืฉื’ื™ืื”.

ื”ื ื™ืกื™ื•ืŸ ื”ื‘ื ื”ื•ื ื”ื’ืจืœื”. ืื• ืฉื”ื‘ืงืฉื” ืชืคื’ืข ื‘ืื•ืชื• ืฆื•ืžืช ืฉื•ื‘ ื•ืฉื•ื‘ ืชื—ื–ื™ืจ ืฉื’ื™ืื”, ืื• ืฉื™ื”ื™ื” ืœืš ืžื–ืœ ื•ื”ื™ื ืชืชื‘ืฆืข. ืื‘ืœ ื”ืขื™ืงืจ ืฉืœืคื—ื•ืช ืคืขื ืื—ืช ื”ืชืฉืชื™ืช ืฉืœื ื• ื›ื‘ืจ ืขื‘ื“ื” ืœืฉื•ื•ื. ื”ื™ื” ืขื•ืžืก, ืื‘ืœ ืœื ืจื•ื•ื—.

ืื•ืงื™ื™, ื‘ื•ืื• ื ื“ืžื™ื™ืŸ ืฉื”ืชืืžืฆื ื• (!) ื•ื—ืฉื‘ื ื• ืขืœ ื”ืืคืฉืจื•ืช ืžืชื™ ื ื™ืชืŸ ื™ื”ื™ื” ืœื”ืฉืœื™ื ืืช ื”ื‘ืงืฉื” ื‘ืื•ืคืŸ ื—ืœืงื™ ื‘ื”ืฆืœื—ื”. ื•ื ื ืกื” ืœื”ืฉืœื™ื ืืช ื”ืฉืืจ ืฉื•ื‘ ืœืื—ืจ ืžืจื•ื•ื— ื–ืžืŸ ืžืกื•ื™ื (ืื™ื–ื”? ื”ืื ื”ื—ื–ื™ืช ืžื—ืœื™ื˜ื”?). ืื‘ืœ ื”ื”ื’ืจืœื” ื ืฉืืจื” ืื•ืชื• ื”ื“ื‘ืจ. ืœื‘ืงืฉื” ืœืฉืœื•ื— SMS ื™ืฉ ืกื™ื›ื•ื™ ืฉืœ 50/50 ืœื”ื™ื›ืฉืœ ืฉื•ื‘.

ืžืกื›ื™ื, ืžืฆื“ ื”ืœืงื•ื— ื”ืฉื™ืจื•ืช ืœื ื ืจืื” ืืžื™ืŸ ื›ืžื• ืฉื”ื™ื™ื ื• ืจื•ืฆื™ื... ืžื” ืขื REST?

JSON-RPC? ืงื— REST ืžืกื•ื‘ืš

REST ืžืฉืชืžืฉ ืฉื•ื‘ ื‘ืงืกื ืฉืœ HTTP, ืื‘ืœ ืขื›ืฉื™ื• ืขื ืงื•ื“ื™ ืชื’ื•ื‘ื”. ื›ืืฉืจ ืžืชืจื—ืฉืช ืฉื’ื™ืื” 503 ื‘ืฉืขืจ ื”-SMS, ื”ืงืฆื” ื”ืื—ื•ืจื™ ืžืฉื“ืจ ืฉื’ื™ืื” ื–ื• ืœืžืื–ืŸ. ื”ืžืื–ืŸ ืžืงื‘ืœ ืฉื’ื™ืื” ื–ื• ื•ืžื‘ืœื™ ืœื ืชืง ืืช ื”ืงืฉืจ ืขื ื”ืœืงื•ื—, ืฉื•ืœื— ืืช ื”ื‘ืงืฉื” ืœืฆื•ืžืช ืื—ืจ, ืืฉืจ ืžืขื‘ื“ ื‘ื”ืฆืœื—ื” ืืช ื”ื‘ืงืฉื”. ื”ึธื”ึตืŸ. ื”ืœืงื•ื— ืžืงื‘ืœ ืืช ื”ืชื•ืฆืื” ื”ืฆืคื•ื™ื”, ื•ื”ืชืฉืชื™ืช ืžืืฉืจืช ืืช ื”ืชื•ืืจ ื”ื’ื‘ื•ื” ืฉืœื” "ื ื’ื™ืฉ ื‘ื™ื•ืชืจ". ื”ืžืฉืชืžืฉ ืžืจื•ืฆื”.

ื•ืฉื•ื‘ ื–ื” ืœื ื”ื›ืœ. ื”ืžืื–ืŸ ืœื ืงื™ื‘ืœ ืกืชื ืงื•ื“ ืชื’ื•ื‘ื” ืฉืœ 503. ื›ืฉืžื’ื™ื‘ื™ื, ืœืคื™ ื”ืชืงืŸ, ืจืฆื•ื™ ืœืกืคืง ืงื•ื“ ื–ื” ืขื ื”ื›ื•ืชืจืช "Retry-After". ื”ื›ื•ืชืจืช ืžื‘ื”ื™ืจื” ืœืžืื–ืŸ ืฉืœื ื›ื“ืื™ ืœื”ืคืจื™ืข ืœืฆื•ืžืช ื–ื” ื‘ืžืกืœื•ืœ ื–ื” ืœื–ืžืŸ ืžื•ื’ื“ืจ. ื•ื”ื‘ืงืฉื•ืช ื”ื‘ืื•ืช ืœืฉืœื™ื—ืช SMS ื™ื™ืฉืœื—ื• ื™ืฉื™ืจื•ืช ืœืฆื•ืžืช ืฉืื™ืŸ ืœื• ื‘ืขื™ื•ืช ืขื ืฉืขืจ ื”-SMS.

ื›ืคื™ ืฉืื ื• ื™ื›ื•ืœื™ื ืœืจืื•ืช, ื”ืืžื™ื ื•ืช ืฉืœ JSON-RPC ืžื•ืขืจื›ืช ื™ืชืจ ืขืœ ื”ืžื™ื“ื”. ืื›ืŸ, ืงืœ ื™ื•ืชืจ ืœืืจื’ืŸ ืขืงื‘ื™ื•ืช ื‘ืžืกื“ ื”ื ืชื•ื ื™ื. ืื‘ืœ ื”ื”ืงืจื‘ื”, ื‘ืžืงืจื” ื–ื”, ืชื”ื™ื” ื”ืืžื™ื ื•ืช ืฉืœ ื”ืžืขืจื›ืช ื›ื•ืœื”.

ื”ืžืกืงื ื” ื“ื•ืžื” ื‘ืžื™ื“ื” ืจื‘ื” ืœืงื•ื“ืžืชื”. ื›ืืฉืจ ื”ืชืฉืชื™ืช ืคืฉื•ื˜ื”, ื”ืžื•ื‘ืŸ ืžืืœื™ื• ืฉืœ JSON-RPC ื”ื•ื ื‘ื”ื—ืœื˜ ื™ืชืจื•ืŸ. ืื ื”ืคืจื•ื™ืงื˜ ื›ื•ืœืœ ื–ืžื™ื ื•ืช ื’ื‘ื•ื”ื” ืขื ืขื•ืžืก ื’ื‘ื•ื”, REST ื ืจืื” ื›ืžื• ืคืชืจื•ืŸ ื ื›ื•ืŸ ื™ื•ืชืจ, ืื ื›ื™ ืžื•ืจื›ื‘ ื™ื•ืชืจ.

ืกืฃ ื”ื›ื ื™ืกื” ืœ-REST ื ืžื•ืš ื™ื•ืชืจ

ืื ื™ ื—ื•ืฉื‘ ืฉื”ื ื™ืชื•ื— ืฉืœืขื™ืœ, ืฉื”ืคืจื™ืš ืืช ื”ืกื˜ืจื™ืื•ื˜ื™ืคื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ RPC, ื”ืจืื” ื‘ื‘ื™ืจื•ืจ ืฉื”ืกืฃ ืœื›ื ื™ืกื” ืœ-REST ื”ื•ื ืœืœื ืกืคืง ื’ื‘ื•ื” ื™ื•ืชืจ ืžืืฉืจ ืœ-RPC. ื–ื” ื ื•ื‘ืข ืžื”ืฆื•ืจืš ื‘ื”ื‘ื ื” ืžืขืžื™ืงื” ืฉืœ ืื•ืคืŸ ืคืขื•ืœืช ื”-HTTP, ื›ืžื• ื’ื ืžื”ืฆื•ืจืš ื‘ื™ื“ืข ืžืกืคื™ืง ืขืœ ืจื›ื™ื‘ื™ ืชืฉืชื™ืช ืงื™ื™ืžื™ื ืฉื ื™ืชืŸ ื•ืฆืจื™ื›ื™ื ืœืฉืžืฉ ื‘ืคืจื•ื™ืงื˜ื™ WEB.

ืื– ืœืžื” ืื ืฉื™ื ืจื‘ื™ื ื—ื•ืฉื‘ื™ื ืฉ-REST ื™ื”ื™ื” ืคืฉื•ื˜ ื™ื•ืชืจ? ื“ืขืชื™ ื”ืื™ืฉื™ืช ื”ื™ื ืฉื”ืคืฉื˜ื•ืช ื”ื ืจืื™ืช ืœืขื™ืŸ ืžื’ื™ืขื” ืžื’ื™ืœื•ื™ื™ ื”-REST ืขืฆืžื. ื”ึธื”ึตืŸ. REST ื”ื•ื ืœื ืคืจื•ื˜ื•ืงื•ืœ ืืœื ืžื•ืฉื’... ืœ-REST ืื™ืŸ ืชืงืŸ, ื™ืฉ ื›ืžื” ื”ื ื—ื™ื•ืช... REST ืœื ื™ื•ืชืจ ืžืกื•ื‘ืš ืž-HTTP. ื—ื•ืคืฉ ื•ืื ืจื›ื™ื” ืœื›ืื•ืจื” ืžื•ืฉื›ื™ื "ืืžื ื™ื ื—ื•ืคืฉื™ื™ื".

ื›ืžื•ื‘ืŸ, REST ืื™ื ื• ืžืกื•ื‘ืš ื™ื•ืชืจ ืž-HTTP. ืื‘ืœ HTTP ืขืฆืžื• ื”ื•ื ืคืจื•ื˜ื•ืงื•ืœ ืžืขื•ืฆื‘ ื”ื™ื˜ื‘ ืฉื”ื•ื›ื™ื— ืืช ืขืจื›ื• ื‘ืžืฉืš ืขืฉืจื•ืช ืฉื ื™ื. ืื ืื™ืŸ ื”ื‘ื ื” ืขืžื•ืงื” ืฉืœ HTTP ืขืฆืžื•, ืื–ื™ ืœื ื ื™ืชืŸ ืœืฉืคื•ื˜ REST.

ืื‘ืœ ืœื’ื‘ื™ RPC - ืืชื” ื™ื›ื•ืœ. ืžืกืคื™ืง ืœืงื—ืช ืืช ื”ืžืคืจื˜ ืฉืœื•. ืื– ืืชื” ืฆืจื™ืš JSON-RPC ื˜ื™ืคืฉ? ืื• ืฉื–ื” ืขื“ื™ื™ืŸ ืžืกื•ื‘ืš REST? ืืชื” ืชื—ืœื™ื˜.

ืื ื™ ืžืื•ื“ ืžืงื•ื•ื” ืฉืœื ื‘ื–ื‘ื–ืชื™ ืืช ื–ืžื ืš.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”