jsonrpc

package
v0.0.0-...-50b27ac Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 3, 2023 License: MIT Imports: 2 Imported by: 0

README

jsonrpc

Главная идея RPC (remote procedure call) заключается в том, чтобы вызов удаленных процедур (например, работающих на другой машине) был очень похожим на вызов функций внутри программы. Вся механика удаленных вызовов прячется от пользователя.

Для чего это нужно? Например, для облегчения организации распределенных вычислений.

Реализация RPC включает в себя два компонента: сетевой протокол для обмена в режиме клиент-сервер и язык сериализации объектов.

В данной задаче нужно реализовать RPC, используя http в качестве транспорта и json для сериализации запросов/ответов.

Клиентская часть

Call(ctx context.Context, endpoint string, method string, req, rsp interface{}) error

Call делает http запрос на заданную ручку (endpoint+method), передавая в body сериализованный запрос и возвращает десериализованный ответ через аргумент.

Логической частью запроса занимается сервер. Для пользователя работа с Call выглядит практически так же, как работа с обычной функцией:

method(req, &resp) error

Серверная часть

MakeHandler(service interface{}) http.Handler

RPC сервис - это структура, на которой определено несколько RPC методов. RPC метод - это функция с сигнатурой вида:

Method(ctx context.Context, req *Request) (*Response, error)

MakeHandler создаёт http.Handler, предоставляющий http ручки для всех RPC методов сервиса (http endpoint = method name).

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Call

func Call(ctx context.Context, endpoint string, method string, req, rsp interface{}) error

func MakeHandler

func MakeHandler(service interface{}) http.Handler

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL