직렬화 란 무엇입니까?
컴퓨터 프로그래밍에서 직렬화는 로컬 메모리에 저장된 데이터 구조를 취하고이를 네트워크를 통해 전송되거나 다른 프로그램에 의해 재 조립 및 사용할 수 있도록 디스크에 저장 될 수있는 바이트 스트림으로 전환하는 과정입니다. 직렬화는 객체의 상태를 저장하는 데 사용하여 나중에 동일한 프로그램을 사용하여 다시로드 할 수 있습니다. 이 메커니즘은 또한 대형 네트워크 시스템을 통해 데이터 객체를 배포 할 수 있습니다.
거의 모든 현대 컴퓨터 언어는이 기능을 추가 할 수있는 직렬화에 대한 기본 지원 또는 라이브러리가 직렬화되면 객체의 모든 분야가 평평하게 알려져 있습니다.이 데이터는 수정 또는 마샬링이 될 수 있습니다.스트림. 출력 스트림의 유형은 중요하지 않으며 파일 또는 네트워크 소켓 일 수 있습니다.
일단 데이터가 직렬화되어 최종 위치로 전송되면 사막화 과정이 시작됩니다. 바이트 스트림을 읽는 프로그램은 모든 정보를 복원하고 원래 객체의 새로운 인스턴스에 배치하여 정확한 사본을 만듭니다. 개체가 보유하고있는 데이터만이 마샬링된다는 것을 이해하는 것이 중요합니다. 객체와 그 방법 및 기타 구현 데이터는 그렇지 않습니다. 이는 데이터를 필수화하는 프로그램이 원래 직렬화 된 클래스의 인스턴스를 생성 할 수 있어야한다는 것을 의미합니다.
데이터 구조 직렬화는 다양한 목적으로 사용될 수 있습니다. 객체 정보는 물리적 매체에 저장 될 수 있으므로 모든 객체의 정확한 상태를 프로그램 실행 중단 시점까지 복원 할 수 있습니다.원격 절차가 실행되는 다른 컴퓨터로의 메시지. 직렬화를 사용하여 실시간 응용 프로그램의 상태 변경을 효율적으로 비교할 수도 있습니다.
.객체 직렬화를 사용하기 전에, 그것이 부과하는 일부 한계를 이해하는 것이 중요합니다. 가장 중요한 것은 객체를 바이트 스트림으로 변환하는 과정을 통해 개인으로 선언 된 필드가 노출 될 것이라는 점입니다. 스트림 전송 중에이 데이터는 보안 홀을 제시 할 수 있으며, 대부분의 언어는이 데이터를 포착 할 수 있습니다. 위험.
명심해야 할 또 다른 요인은 직렬화가 일반적으로 직렬화 된 객체와 정확히 동일한 객체에서만 작동한다는 것입니다. 새 필드 또는 메소드가 객체에 추가되면 객체의 서명이 변경됩니다. 이것은 저장된 개체가 원인을 의미합니다.e 예외는 원래의 수정되지 않은 객체의 인스턴스가 복원을 시도 할 때까지 데이터를 복구 할 수 없게됩니다.