Serialization(Visual Basic)
Serialization은 개체를 저장하거나 메모리, 데이터베이스 또는 파일로 전송하기 위해 개체를 바이트 스트림으로 변환하는 프로세스입니다. 주 목적은 필요할 때 다시 개체로 만들 수 있도록 개체의 상태를 저장하는 것입니다. 역 프로세스를 deserialization이라고 합니다.
Serialization 작동 방법
이 그림에서는 serialization의 전체 프로세스를 보여 줍니다.
개체는 스트림으로 serialize되어 데이터 뿐만 아니라 버전, 문화권 및 어셈블리 이름과 같은 개체 형식에 대한 정보를 운반합니다. 해당 스트림에서 데이터베이스, 파일 또는 메모리에 저장될 수 있습니다.
serialization의 용도
Serialization을 사용하여 개발자는 개체의 상태를 저장하고 필요할 때 다시 만들어 개체 교환 뿐 아니라 개체의 스토리지 기능도 제공할 수 있습니다. Serialization을 통해 개발자는 웹 서비스를 통해 원격 애플리케이션에 개체를 전송하거나, 한 도메인에서 다른 도메인으로 개체를 전달하거나, 방화벽을 통해 XML 문자열로 개체를 전달하거나, 애플리케이션 간에 보안 또는 사용자별 정보를 유지 관리하는 등의 작업을 수행할 수 있습니다.
개체를 Serialize 가능하게 만들기
개체를 직렬화하려면 직렬화할 개체, 직렬화된 개체를 포함할 스트림 및 Formatter가 필요합니다. System.Runtime.Serialization은 개체를 직렬화하거나 역직렬화하는 데 사용할 수 있는 클래스를 포함합니다.
형식에 SerializableAttribute 특성을 적용하여 이 형식의 인스턴스를 직렬화할 수 있음을 나타냅니다. 직렬화하려고 하지만 형식에 SerializableAttribute 특성이 없는 경우 SerializationException 예외가 throw됩니다.
클래스 내의 필드를 직렬화 가능하게 하지 않으려면 NonSerializedAttribute 특성을 적용합니다. serialize 가능한 형식의 필드에 특정 환경과 관련된 포인터, 핸들 또는 다른 데이터 구조가 포함되어 있고 필드를 다른 환경에서 의미 있게 재구성할 수 없으면 serialize할 수 없게 만들 수 있습니다.
직렬화된 클래스에 SerializableAttribute가 표시된 다른 클래스의 개체에 대한 참조가 포함된 경우 해당 개체도 직렬화됩니다.
이진 및 XML 직렬화
이진 또는 XML serialization을 사용할 수 있습니다. 이진 serialization에서는 읽기 전용이더라도 모든 멤버가 serialize되고 성능이 향상됩니다. XML serialization은 상호 운용성을 위한 보다 유연한 개체 공유 및 사용 뿐만 아니라 보다 읽기 쉬운 코드를 제공합니다.
이진 Serialization
이진 serialization은 이진 인코딩을 사용하여 스토리지 또는 스트림 기반 네트워크 스트림과 같은 용도로 사용할 수 있는 압축 serialization을 생성합니다.
XML Serialization
XML serialization은 개체의 public 필드와 속성 또는 메서드의 매개 변수와 반환 값을 특정 XSD(XML 스키마 정의 언어) 문서와 일치하는 XML 스트림으로 serialize합니다. XML serialization을 사용하면 XML로 변환되는 public 속성 및 필드가 있는 강력한 형식의 클래스가 만들어집니다. System.Xml.Serialization은 XML을 직렬화하거나 역직렬화하는 데 사용할 수 있는 클래스를 포함합니다.
XmlSerializer가 클래스 인스턴스를 직렬화 또는 역직렬화하는 방법을 제어하기 위해 클래스 및 클래스 멤버에 특성을 적용할 수 있습니다.
기본 및 사용자 지정 Serialization
serialization은 기본 및 사용자 지정의 두 가지 방법으로 수행할 수 있습니다. 기본 serialization은 .NET Framework를 사용하여 개체를 자동으로 serialize합니다.
기본 Serialization
기본 serialization의 유일한 요구 사항은 개체에 SerializableAttribute 특성이 적용되어야 한다는 것입니다. NonSerializedAttribute는 특정 필드가 직렬화되지 않도록 하는 데 사용할 수 있습니다.
기본 serialization을 사용하면 개체의 버전을 관리하는 데 문제가 발생할 수 있습니다. 이 경우에는 사용자 지정 serialization이 더 적합할 수 있습니다. 기본 serialization은 serialization을 수행하는 가장 쉬운 방법이지만 프로세스를 강력하게 제어하기는 어렵습니다.
사용자 지정 Serialization
사용자 지정 serialization에서는 serialize될 개체 및 수행 방법을 정확하게 지정할 수 있습니다. 클래스에 SerializableAttribute가 표시되어야 하고 ISerializable 인터페이스를 구현해야 합니다.
개체를 사용자 지정 방식으로 역직렬화하려면 사용자 지정 생성자를 사용해야 합니다.
디자이너 serialization
디자이너 serialization은 일반적으로 개발 도구와 관련해서 개체 지속성이 적용되는 특수한 형태의 serialization입니다. 디자이너 serialization은 개체 그래프를 소스 파일로 변환하여 나중에 개체 그래프를 복구하는 데 사용할 수 있도록 하는 프로세스입니다. 소스 파일에는 코드, 태그 또는 심지어 SQL 테이블 정보도 포함될 수 있습니다.
관련 항목 및 예제
연습: Visual Studio에서 개체 유지(Visual Basic)
serialization을 사용하여 인스턴스 간에 개체의 데이터를 유지함으로써 다음에 개체를 인스턴스화할 때 값을 저장하고 검색하는 방식을 보여 줍니다.
방법: XML 파일에서 개체 데이터 읽기(Visual Basic)
XmlSerializer 클래스를 사용하여 이전에 XML 파일에 기록된 개체 데이터를 읽는 방법을 보여 줍니다.
방법: XML 파일에 개체 데이터 쓰기(Visual Basic)
XmlSerializer 클래스를 사용하여 클래스의 개체를 XML 파일에 쓰는 방법을 보여 줍니다.