다음을 통해 공유


데이터 캐시

오프라인으로 또는 Microsoft Office Word 또는 Microsoft Office Excel을 열지 않고도 데이터에 액세스할 수 있도록 문서 수준 사용자 지정에서 데이터 개체를 캐시할 수 있습니다. 개체를 캐시하려면 개체에 특정 요구 사항을 충족하는 데이터 형식이 있어야 합니다. .NET Framework의 많은 공통 데이터 형식은 이러한 요구 사항(예String: 및 DataSetDataTable)을 충족합니다.

적용 대상: 이 항목의 정보는 Excel 및 Word용 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 유형에서 사용할 수 있는 기능을 참조하세요.

데이터 캐시에 개체를 추가하는 방법에는 두 가지가 있습니다.

캐시할 데이터 개체에 대한 요구 사항

솔루션에서 데이터 개체를 캐시하려면 개체가 다음 요구 사항을 충족해야 합니다.

  • 호스트 항목의 읽기/쓰기 공용 필드 또는 ThisDocument 속성(예: ThisWorkbook 클래스)이어야 합니다.

  • 인덱서 또는 기타 매개 변수가 있는 속성이 아닙니다.

    또한 데이터 개체는 클래스에서 XmlSerializer 직렬화할 수 있어야 합니다. 즉, 개체의 형식에 다음과 같은 특성이 있어야 합니다.

  • public 형식이어야 합니다.

  • 매개 변수가 없는 공용 생성자를 갖습니다.

  • 추가 보안 권한이 필요한 코드를 실행하지 않습니다.

  • 읽기/쓰기 공용 속성만 노출합니다(다른 속성은 무시됨).

  • 다차원 배열을 노출하지 않습니다(중첩된 배열은 허용됨).

  • 속성 및 필드에서 인터페이스를 반환하지 않습니다.

  • 컬렉션인 경우 구현 IDictionary 하지 않습니다.

    데이터 개체를 캐시할 때 Visual Studio Tools for Office 런타임은 개체를 문서의 사용자 지정 XML 부분에 저장된 XML 문자열로 직렬화합니다. 자세한 내용은 사용자 지정 XML 파트 개요를 참조하세요.

캐시된 데이터 크기 제한

문서의 데이터 캐시에 추가할 수 있는 총 데이터 양과 데이터 캐시의 개별 개체 크기에는 몇 가지 제한이 있습니다. 이러한 제한을 초과하면 데이터가 데이터 캐시에 저장될 때 애플리케이션이 예기치 않게 닫힙니다.

이러한 제한을 방지하려면 다음 지침을 따르세요.

  • 10MB보다 큰 개체를 데이터 캐시에 추가하지 마세요.

  • 단일 문서의 데이터 캐시에 100MB 이상의 총 데이터를 추가하지 마세요.

    대략적인 값입니다. 정확한 제한은 사용 가능한 RAM 및 실행 중인 프로세스 수를 포함하여 여러 요인에 따라 달라집니다.

캐시된 개체의 동작 제어

캐시된 개체의 동작을 더 자세히 제어하려면 캐시된 개체의 형식에서 인터페이스를 구현 ICachedType 할 수 있습니다. 예를 들어 개체가 변경되었을 때 사용자에게 알림을 받을 방법을 제어하려는 경우 이 인터페이스를 구현할 수 있습니다. 구현 ICachedTypeControlCollection 하는 방법을 보여 주는 코드 예제는 Office 개발 샘플 및 연습의 Excel 동적 컨트롤 샘플 및 Word 동적 컨트롤 샘플의 클래스를 참조하세요.

암호로 보호된 문서에서 캐시된 데이터에 대한 변경 내용 유지

암호로 보호되는 문서에서 데이터 개체를 캐시하는 경우 캐시된 데이터의 변경 내용은 저장되지 않습니다. 두 가지 방법을 재정의하여 캐시된 데이터에 대한 변경 내용을 저장할 수 있습니다. 이러한 메서드를 재정의하여 문서를 저장할 때 보호를 일시적으로 제거한 다음 저장 작업이 완료된 후 보호를 다시 적용합니다.

자세한 내용은 방법: 암호로 보호된 문서에서 데이터 캐시를 참조하세요.

데이터 캐시에 null 값을 추가할 때 데이터 손실 방지

데이터 캐시에 개체를 추가하면 문서를 저장하고 닫기 전에 캐시된 모든 개체를 null 이 아닌 값으로 초기화해야 합니다. 문서를 저장하고 닫을 때 캐시된 개체에 null 값이 있으면 Visual Studio Tools for Office 런타임은 데이터 캐시에서 캐시된 모든 개체를 자동으로 제거합니다.

디자인 타임에 CachedAttribute을 사용하여 null 값이 있는 개체를 데이터 캐시에 추가하는 경우 문서를 열기 전에 ServerDocument를 사용하여 캐시된 데이터 개체를 초기화할 수 있습니다. 이는 최종 사용자가 문서를 열기 전에 Word 또는 Excel이 설치되지 않은 서버에서 캐시된 데이터를 초기화하려는 경우에 유용합니다. 자세한 내용은 서버의 문서에 있는 Access 데이터를 참조하세요.