�� ���� (3� ��)
- ��: ��� (Marshalling)� ��� � ��� ��� ��� �� �� ��� �� ��� ����� ������, ���� (Unmarshalling)� � ����� ��� ���� �� ��� � ��� ���� �� ����.
- ��: �� ����� ���� � �� ����� �� ��� ��� ��� ���� ���� �� �����, RPC, ��� �, �� ��� ������ ��� ��.
- ��: ���� XDR, JSON, Protocol Buffers � ��� ��� ��� ��� �� �����, ��� ��, ��� �� ���, �� �� �� ���� ����� IPC � ���� ��� �� ����.
. �� � ��� (Context & Necessity)
-
��: ���� ���� ��� ��� ���� ��� ���� ���(serializing)����, ����� ���� ��� ���� �� ��� �� ��� ����(deserializing)����. � ��� ��� ��, �� ��, ���ness �� ���� ���� ����� �� ��.
-
���: ����� �� ��� �� ������, � ����� ��� ��� ��(���, �� ��� ��� �)� �� ����� �� ��� � ��. ��� ���� �� ���� ��� ����� ����, ���� ���� ��� ���� ��� ���� ��, �� ���� �� �� ����� ��. �� �� �� ���, ���� �������, ��� �� IPC��� fundamenta��.
-
� ��: ���� ���� �� �� �� ��� �� �� ��� � Place� �� ��(�� �� ���� ���)��, ����� ���� ���� �� �� ��� ����. ��� ��� ���� ���� �� ��� � ��.
-
�� �� � �� ��:
- �� RPC� ��� �� ��: 1980�� � Sun RPC�� ��� ����(���, �� �)� ���� �� ��� ��� �����.
- �� �� ��� ��� ���: Java� Serializable, .NET� BinaryFormatter � �� ���� �� �� � ��� �� ��� ����� ������.
- �� ��� ��� ��: XDR, ASN.1, Protocol Buffers, Avro �� ���� ��� ����� ������.
��� ��� ��� ��� �� ��� �� ��� ����.
��� �� (��� ��)
�� � ��� � ���
struct Person {
char name[20];
int age;
char *address; �� �� ��
};
����: name="Alice", age=30,
address=0x7ffee4b0c1a0 (� ���)
��� � ��� ���
[name: 'Alice'\0 padding] [age: 30 (little endian)]
[address length: 18] [address chars: '123 Main St\0']
�� � ���� ��
1. ������ name� age� ��
2. address ��� �� �� ��� ��� ��
3. address ���� ����, ���� � �� ��� ��
4. ��� Person ���� �� � ���� ���
[����� ��] � ������ �� ��� ���� ��� ���� ���� � ���� ��� �� ��� ����. �� ���� ���� ���� �� ���� ��� ���� ����, �� ���� � ���� ���� ���� ������ ��� ���� �����. ��� ��� �� ���� �� ���� ��� ��� ���� ���, ������ ��� ���� ���� ��� ��� ���� ��.
. ���� � �� �� (Deep Dive)
�� ��
| ��� | �� | �� �� | �� �� | �� |
|---|---|---|---|---|
| �� ��� | ��� �� �� �� | � ��� ��, ��, ��� �� | XDR �� ��, Protocol Buffers �� �� | ��� �� �� �� |
| �� �� | ���/���� ��� �� | �� �� �� ��, ����� �� | malloc/free, �� � | ���� �� �� �� |
| ��� �� | ��� ��� ��� �� | � ��� �� �� ����� �� | htonl/ntohl, XDR ��� | �� �� �� �� |
| ��� �� | ��� � �� ��� �� | ���� ���� ���� ���� | �� ��(deep copy), ��� ��� | �� �� �� � ��� |
| �� �� | ��� �� ��� | �� �� �� �� ��� ��� �� | Protocol Buffers �� ��, Avro ��� | ����� ���� �� |
��� �� �� ��
��� ��� �� ��� �� ��� �����, � ���� ���� � �� ���� ��.
��� ��� ���
1. �� �� ��
- �� �� �� (���/��� ��)
- �� �� � �� ��
- ���/�� �� �� (�� �� �� ��)
2. �� �� ��
- �� �� �� (�� �� + �����)
- �� � �� �� �� �� �� ��
3. ��� ��� ��
- �� ��: � ��� (��� �� ��)
- ���: �� + ��� ��� (� �� �� ��_prefix)
- ��/���: �� + �� �� ���
- ���: �� ��� �� ��_NULL ��
- ��� �� ��: ��� ��� ��
4. ����� �� ��
- �� ��, ��� ���
- ��� �� �� (�� ��)
5. �� �� ��
- ���� ��� ��� � �� �� ��
[����� ��] � ������ ���� �� ��� ���� ����. �� 3���� ��� ��� ��� �� ��� ��� ����� ����, 1����� �� ��� �� ��� ���� �� ��� �� ���� ���� ����. 4��� ������ �� �� ���� �� ����.
. �� �� � ��� ��
�� 1: ��� �� ��
| �� �� | ��� �� �� | XDR �� | �� ��� (Java/.NET) | Protocol Buffers |
|---|---|---|---|---|
| �� �� | �� (�� ��� ��) | �� (�� ��) | �� (�� ��) | �� (�� �� ��) |
| �� | ��� �� | �� | ��� ���� | �� (���� ����) |
| ��� | �� | ��� (XDR ��) | �� (����) | �� (�� �� ��) |
| ��� | �� �� �� | �� (��) | �� � �� | �� (��� �� ��) |
| ��� | �� | �� �� �� | ��� �� | ��� �� �� |
��� �� ���� �� �� ����� �� �����, ��� �� �� ��� ��, �� ���� ����� ��� �� ����� ��. Protocol Buffers� ��� ��� ��� ���� ���� �� ����.
�� �� ��
- ��� ���� (Computer Network): TCP/IP ���� ���� ������ ��� ���� ���� �� �� ����. HTTP� JSON/XML ��, gRPC� Protocol Buffers body �� �� ���� ����.
- ������ (Database): ��-�� ��(ORM) ������� ������ ���� �� � ��� ���/���� ����, JDBC� ODBC ���� ����� ��� ��� ����.
���� ���� OSI ��� �� ��� ������ ����, � ��� ��� � � ��.
���� OSI �� �� ��
7��: �� �� (Presentation Layer)
- ��� �� ��, ���, ��
- **���/���� ��**
6��: �� �� (Session Layer)
- �� ��, ��, ��
...
���� �� ���� �����, �� ���� �� ��
������ ���� ��� ���� ��� ���� ����.
[����� ��] OSI 7�� ���� ���� �� ��(Presentation Layer)� ���. � ��� ������� ��� ���� ���� ��� ��� ��� �����, ��� ���� ������� �� ��� ��� ���� ��� ��. ��� ���� ��� ���� ���� �� ���, ��� ��, ��� �� ���, �� �� �� ���� ���� ��� � �� �� ��� ��� ���� �� �� ����.
. �� �� � ���� ��
�� ����
-
���� -- �� �� ������ ��� �� �� ��: �� ���� �� ����� �� ��(��, ��, �� �)� ��� �� ��� ���� ��. � ���� �� ��� �� �� ���� ��� � ���, ��� ��� �� �� ���� �� �� �� ��� ����� ������ �� ��� ��� ���� � ��. �� ��� �� ��� ��� ����, ������ ���� �� �� ��� �����.
-
���� -- ������� � ��� ����� ��� ��: ��� �� ���� ���� ���������� ��� ���� ���� � ��(�: ��� �� ��). ��� �� �� �� �� ��(Protocol Buffers ��)� ����, ��� ���� ��� ��� ���� ��� ���� ��� ��� ����� ��� � �� ���� ��� � ��. � �� ��� ������ ��� �� �� ��� ���� ��.
-
���� -- ���� ������� �� ���: �� ��� �� ��� �� ��� �� �� ����� � �� ��� ��� ��. ��� RAM� ������ ��� �� ���� ��� �����, ��� ���� ��(�� �� ��)� ���� ��. �� ��� �� ��� ��� ���� ��� ��� ��.
�� ��� ��� "�� ��� ������ ��"� ���, ���� ��, ��, ��� �� ���, �� �� �� �� �� ����� ���� ��. �� ���� ���� ���� ��� ��� ��� � ���� � ��� ��� ���.
��� �� �� ���� ���
[��� ���� ����?]
��� �� �����?
� [�� ��� (��� ���) ��]
[��� ��� ��]
��� [��� ��� �� ��]
�� ����� stringent��?
� [�� ��� �� �� + ��� ��� �]
[��� ���� ����]
��� [�� ��� ����� (JSON �) ��]
��� ��� �����?
� [�� �� �� �� �� ��� ��]
[Protocol Buffers, Avro ��]
��� [��� ��-��-� �� sufficient]
�� ��: �� vs ��� vs �� �� � ��� ��
[����� ��] � ���� ��� ��� "��� ��� ��� �� ��� ��� ���"�� ���. ��� ���, �� ����, ��� �� ��� �� �� ��� ��� ���� ��. ��� ����� �� ���� �� �����, ���� �� ���� �� ����� Protocol Buffers� �� ��� �� ��� ����. ��� � �� ��� sempre "�� ��� ��� ���� ���?"�� ���� ��.
�� �����
- ���: ���� ���� ���� �� ������?(�� �� �� ��) �� ����� ��� �� �� ��� ������? ��� �� ��� ���� ������?
- �� ���: �� ��� ����� �� ��� �� �����? ����� ��� �� �� �� ��� �����?
����
-
�� �� ��� (Shallow Copy Marshalling): ��� �� ���� ���� ���� ���� �� �. �� ��� ��� �� ��� �� ���� ����.
-
�� �� ��: �� �� ���(���, �� �)� ��� � �� ��� ���� �� �� ��� ��� ��� � �� �.
-
� �� �� ��: �� �� ���� �� � ��� �� �� � ���� ��� �� �� ���, ���� �� ��� �� �� � � �� �� ���� �� ��.
. ���� � ��
��/�� ����
| �� | ��� � | ��� � | �� �� |
|---|---|---|---|
| �� | �� ��� ��� �� ��� �� | ��� ��� �� | ��� �� �� �� 0% |
| �� | �� ��� �� �� �� | �� ����� ��� | �� �� 40~60% �� |
| �� | ��� ��� �� �� | ��� ��� �� | �� �� � �� ��� �� |
�� ��
- �� ���� (Zero-Copy Serialization): ��� �� �� ��� ��� ��� ��� �� ��� ��� ��� ��� �� ���(�: Apache Arrow� ��� ��).
- ���� �� ���: ���� ��� ��� NIC��� ���� ��� ��� ��� ���� CPU ���� �� � ��.
- �� ��� ��: ����� ���� � ��� �� � �� ��� �� ��� �� ���.
��� ��� �� ��� ����� ����, �� ���� ���� �� �����, �� ��� �� ��� ���� ���� ��� ��� � ��.
��� �� �� ���
1980�� � 1990�� �� 2000�� �� 2020��+
[�� ���] [��� ��] [��� �� ���] [�� ��]
���� �� ��
�� ��� ��
��� � �� �� �� �� ��
�� ��:
"��� ��" -> "�� ��" -> "���� ��" -> "�� ���"
[����� ��] 1980�� ��� � �������� ���� ��� ��� ���� ���, 1990�� ���� Java Serializable � �� ���� �� ���� ����� ����, 2000�� ���� Protocol Buffers � ��� ��� ���� ��� ��� ��� ��� ��� ����. ��� �� �� ��� ���� ��� ���� ���, ���� �� ��� ����� ���� ��� ������� �� ��� � ���.
� �� �� � (Knowledge Graph)
| �� �� | �� � ��� �� |
|---|---|
| XDR (External Data Representation) | ���� � ��� �� ����, � ��� ��� ��� ��� �� ��� ����. |
| Protocol Buffers | ���� ��� ���� ��� ����, ���� ��� ����. |
| Serializaton (���) | ���� ���� ����, ��� ��� ����� ��� � �� �� ����. |
| Deserialization (����) | ����� ����, ���� ���� �� ��� ���� ����. |
| ������ ���� | HTTP, gRPC ��� ��(body)� ���/���� ���� ����. |
� ���� �� 3� �� ��
- ���� ���� ��� �� �, ����� �� ��� �� �� �� ��. ��� ��� ��� �� ���� �� � ��.
- ����� ���� �� ��� ���� ��� ����� ��� ����, ��� ��� ��� � � ��.
- ��� ����� ��� ��� ���� ��, ������ �� ��� ���� �� � ��, ����� ��� �� ��� � � ���.
(End of file - total lines will be around 300)