데이터 캐시

오프라인으로 또는 Microsoft Office Word 또는 Microsoft Office Excel을 열지 않고 데이터에 액세스할 수 있도록 문서 수준 사용자 지정에서 데이터 개체를 캐시할 수 있습니다. 개체를 캐시하려면 개체에 특정 요구 사항을 충족하는 데이터 형식이 있어야 합니다. .NET Framework의 많은 일반적인 데이터 형식은 String, DataSet, DataTable을 포함하여 이러한 요구 사항을 충족합니다.

적용 대상: 이 항목의 정보는 Excel 및 Word의 문서 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 애플리케이션 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하세요.

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

캐시할 데이터 개체의 요구 사항

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

  • 읽기/쓰기 공용 필드나 ThisDocument 또는 ThisWorkbook 클래스와 같은 호스트 항목이어야 합니다.

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

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

  • public 형식이어야 합니다.

  • 매개 변수가 없는 public 생성자가 있어야 합니다.

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

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

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

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

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

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

캐시된 데이터 크기 제한

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

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

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

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

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

캐시된 개체의 동작 제어

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

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

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

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

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

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

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