Önbellek verileri

Verilere çevrimdışı olarak veya Microsoft Office Word veya Microsoft Office Excel'i açmadan erişilebilmesi için veri nesnelerini belge düzeyinde bir özelleştirmede önbelleğe alabilirsiniz. Bir nesneyi önbelleğe almak için, nesnenin belirli gereksinimleri karşılayan bir veri türüne sahip olması gerekir. .NET Framework'teki birçok yaygın veri türü, , DataSetve DataTablegibi Stringbu gereksinimleri karşılar.

Şunlar için geçerlidir: Bu konudaki bilgiler Excel ve Word için belge düzeyi projeleri için geçerlidir. Daha fazla bilgi için bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Veri önbelleğine nesne eklemenin iki yolu vardır:

  • Çözüm oluşturulduğunda veri önbelleğine nesne eklemek için nesne bildirimine CachedAttribute özniteliğini uygulayın. Daha fazla bilgi için bkz . Nasıl yapılır: Verileri çevrimdışı veya sunucuda kullanmak üzere önbelleğe alma.

  • Çalışma zamanında veri önbelleğine program aracılığıyla bir nesne eklemek için veya ThisWorkbook sınıfları gibi bir konak öğesinin ThisDocument yöntemini kullanınStartCaching. Daha fazla bilgi için bkz . Nasıl yapılır: Office belgesinde program aracılığıyla veri kaynağını önbelleğe alma.

    Veri önbelleğine bir nesne ekledikten sonra, Word veya Excel'i başlatmadan önbelleğe alınan verilere erişebilir ve bunları değiştirebilirsiniz. Daha fazla bilgi için bkz . Sunucudaki belgelerdeki verilere erişme.

Veri nesnelerinin önbelleğe alınmasına yönelik gereksinimler

Çözümünüzdeki bir veri nesnesini önbelleğe almak için nesnenin şu gereksinimleri karşılaması gerekir:

  • Veya sınıfları gibi ThisDocument bir konak öğesinin okuma/yazma ortak alanı veya ThisWorkbook özelliği olun.

  • Dizin oluşturucu veya başka bir parametreli özellik olamaz.

    Buna ek olarak, veri nesnesinin sınıfı tarafından XmlSerializer serileştirilebilir olması gerekir; bu da nesnenin türünün şu özelliklere sahip olması gerektiği anlamına gelir:

  • Genel bir tür olun.

  • Parametresiz bir ortak oluşturucuya sahip olun.

  • Ek güvenlik ayrıcalıkları gerektiren kodu yürütmez.

  • Yalnızca okuma/yazma ortak özelliklerini kullanıma sunma (diğer özellikler yoksayılır).

  • Çok boyutlu dizileri kullanıma sunmaz (iç içe diziler kabul edilir).

  • Özelliklerden ve alanlardan arabirim döndürmez.

  • Bir koleksiyon uygulanmıyorsa uygulanmaz IDictionary .

    Bir veri nesnesini önbelleğe aldığınızda, Office çalışma zamanı için Visual Studio Araçları nesneyi belgedeki özel bir XML bölümünde depolanan bir XML dizesi halinde serileştirir. Daha fazla bilgi için bkz . Özel XML bölümlerine genel bakış.

Önbelleğe alınan veri boyutu sınırları

Bir belgedeki veri önbelleğine ekleyebileceğiniz toplam veri miktarının ve veri önbelleğindeki herhangi bir nesnenin boyutunun bazı sınırları vardır. Bu sınırları aşarsanız, veriler veri önbelleğine kaydedildiğinde uygulama beklenmedik bir şekilde kapanabilir.

Bu sınırlardan kaçınmak için şu yönergeleri izleyin:

  • Veri önbelleğine 10 MB'tan büyük bir nesne eklemeyin.

  • Tek bir belgedeki veri önbelleğine toplam 100 MB'tan fazla veri eklemeyin.

    Bunlar yaklaşık değerlerdir. Tam sınırlar, kullanılabilir RAM ve çalışan işlemlerin sayısı dahil olmak üzere çeşitli faktörlere bağlıdır.

Önbelleğe alınan nesnelerin davranışını denetleme

Önbelleğe alınmış bir nesnenin davranışı üzerinde daha fazla denetim elde etmek için, arabirimi önbelleğe alınan nesnenin türüne uygulayabilirsiniz ICachedType . Örneğin, nesne değiştirildiğinde kullanıcıya nasıl bildirim alındığını denetlemek istiyorsanız bu arabirimi uygulayabilirsiniz. uygulamasının nasıl ICachedTypeyapıldığını gösteren kod örnekleri için, Office geliştirme örnekleri ve izlenecek yollarda Excel Dinamik Denetimleri Örneği ve Word Dinamik Denetimleri Örneği'ndeki sınıfına bakınControlCollection.

Parola korumalı belgelerde önbelleğe alınmış verilerde yapılan değişiklikleri kalıcı hale getir

Veri nesnelerini parolayla korunan bir belgede önbelleğe alırsanız, önbelleğe alınan verilerde yapılan değişiklikler kaydedilmez. İki yöntemi geçersiz kılarak önbelleğe alınan verilerdeki değişiklikleri kaydedebilirsiniz. Belge kaydedildiğinde korumayı geçici olarak kaldırmak için bu yöntemleri geçersiz kılın ve kaydetme işlemi tamamlandıktan sonra korumayı yeniden uygulayın.

Daha fazla bilgi için bkz . Nasıl yapılır: Parola korumalı bir belgede verileri önbelleğe alma.

Veri önbelleğine null değerler eklerken veri kaybını önleme

Veri önbelleğine nesneler eklediğinizde, belge kaydedilmeden ve kapatılmadan önce önbelleğe alınan tüm nesnelerin null olmayan bir değere başlatılması gerekir. Belge kaydedildiğinde ve kapatıldığında önbelleğe alınmış herhangi bir nesne null değere sahipse, Office çalışma zamanı için Visual Studio Araçları önbelleğe alınan tüm nesneleri veri önbelleğinden otomatik olarak kaldırır.

Tasarım zamanında özniteliğini kullanarak CachedAttribute veri önbelleğine null değere sahip bir nesne eklerseniz, belge açılmadan önce önbelleğe alınan veri nesnelerini başlatmak için sınıfını kullanabilirsinizServerDocument. Belge bir son kullanıcı tarafından açılmadan önce Word veya Excel yüklü olmayan bir sunucuda önbelleğe alınmış verileri başlatmak istiyorsanız bu yararlı olur. Daha fazla bilgi için bkz . Sunucudaki belgelerdeki verilere erişme.