0 RU:Codec
Vasiliy Tolstov edited this page 2021-11-19 10:16:02 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Реализация интерфейса https://pkg.go.dev/go.unistack.org/micro/v3/codec#Codec

Кодеки предназначены для встраивания в клиент, сервер и брокер. Но могут использоваться и как самостоятельная единица.

Отвечают за сериализацию/десериализацию сообщений. Внутри клинета/сервера, в зависимости от Content-Type запроса, выбирается кодек (является ключом в мапе одной из опций клиента/сервера) и вызывается метод Marshal/Unmarshal.

Инкапсуляция в интерфейс позволяет легко менять имплементацию (например более производительный вариант декодинга прото или джейсон). Если в кодеке существует метод MarshalAppend, то в некоторых случаях будет использоваться именно он для уменьшения количества мусора. Так как сервер или клиент может использовать буфер пул для массива байт.