Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft .NET Framework, yüksek kaliteli belgeler oluşturmak ve görüntülemek için güçlü bir ortam sağlar. Hem sabit belgeleri hem de akış belgelerini destekleyen gelişmiş özellikler, gelişmiş görüntüleme denetimleri, güçlü 2B ve 3B grafik özellikleriyle birlikte .NET Framework uygulamalarını yeni bir kalite ve kullanıcı deneyimi düzeyine taşır. Bir belgenin bellek içi gösterimini esnek bir şekilde yönetebilmek .NET Framework'ün önemli bir özelliğidir ve bir veri deposundan belgeleri verimli bir şekilde kaydedip yükleyebilmek neredeyse her uygulamaya ihtiyaç duyar. Bir belgeyi iç bellek içi gösterimden dış veri deposuna dönüştürme işlemi serileştirme olarak kabul edilir. Veri depolarını okumanın ve özgün bellek içi örneğini yeniden oluşturmanın ters işlemi seri durumdan çıkarma olarak adlandırılır.
Belge Serileştirme hakkında
İdeal olarak, bir belgeyi seri hale getirme ve seri durumdan çıkarma ve ardından belleğe geri dönme işlemi uygulama için saydamdır. Uygulama belgeyi kaydetmek için seri hale getirici "yazma" yöntemini çağırırken, seri durumdan çıkarıcı "okuma" yöntemi veri deposuna erişir ve özgün örneği bellekte yeniden oluşturur. Verilerin depolandığı belirli biçim, seri hale getirme ve seri durumdan çıkarma işlemi belgeyi özgün biçimine geri döndürdiği sürece genellikle uygulamayla ilgili değildir.
Uygulamalar genellikle kullanıcının belgeleri farklı bir ortama veya farklı bir biçime kaydetmesine olanak tanıyan birden çok serileştirme seçeneği sağlar. Örneğin, bir uygulama bir belgeyi disk dosyasına, veritabanına veya web hizmetine depolamak için "Farklı Kaydet" seçenekleri sunabilir. Benzer şekilde, farklı serileştiriciler belgeyi HTML, RTF, XML, XPS gibi farklı biçimlerde veya alternatif olarak üçüncü taraf biçiminde depolayabilir. Uygulama için serileştirme, her bir serileştiricinin uygulaması içinde depolama ortamı ayrıntılarını yalıtan bir arabirim tanımlar. Depolama ayrıntılarını kapsüllemenin avantajlarına ek olarak, .NET Framework System.Windows.Documents.Serialization API'leri diğer birçok önemli özellik sağlar.
.NET Framework 3.0 Belge SeriLeştiricilerinin Özellikleri
Üst düzey belge nesnelerine (mantıksal ağaç ve görseller) doğrudan erişim, sayfalandırılmış içeriğin, 2B/3B öğelerin, görüntülerin, medyanın, köprülerin, ek açıklamaların ve diğer destek içeriğinin verimli bir şekilde depolanmasını sağlar.
Eşzamanlı ve eşzamansız çalışma.
Gelişmiş özelliklere sahip eklenti serileştiricileri desteği:
Tüm .NET Framework uygulamaları tarafından kullanılmak üzere sistem genelinde erişim.
Basit uygulama eklentisi bulunabilirliği.
Özel üçüncü taraf eklentileri için basit dağıtım, yükleme ve güncelleştirme.
Özel çalışma zamanı ayarları ve seçenekleri için kullanıcı arabirimi desteği.
XPS Yazdırma Yolu
Microsoft .NET Framework XPS yazdırma yolu, yazdırma çıktısı aracılığıyla belge yazmak için genişletilebilir bir mekanizma da sağlar. XPS hem belge dosyası biçimi olarak görev alır hem de Windows Vista için yerel yazdırma biriktiricisi biçimidir. XPS belgeleri, ara biçime dönüştürmeye gerek kalmadan doğrudan XPS uyumlu yazıcılara gönderilebilir. Yazdırma yolu çıktı seçenekleri ve özellikleri hakkında ek bilgi için "Yazdırma Genel Bakış " bölümüne bakın.
Eklenti Serileştiricileri
System.Windows.Documents.Serialization API'leri, uygulamadan ayrı olarak yüklenen, çalışma zamanında bağlanan ve SerializerProvider bulma mekanizması kullanılarak erişilen eklenti serileştiricileri ve bağlı serileştiriciler için destek sağlar. Eklenti serileştiricileri, dağıtım kolaylığı ve sistem genelinde kullanım için gelişmiş avantajlar sunar. Bağlı serileştiriciler, eklenti serileştiricilerinin erişilebilir olmadığı XAML tarayıcı uygulamaları (XBAP' ler) gibi kısmi güven ortamları için de uygulanabilir. SerializerWriter sınıfının türetilmiş bir uygulamasını temel alan bağlı serileştiriciler derlenir ve doğrudan uygulamaya bağlanır. Hem eklenti seri hale getiricileri hem de bağlı serileştiriciler aynı ortak yöntemler ve olaylar aracılığıyla çalışır ve bu da aynı uygulamada seri hale getirici türlerinden birini veya her ikisini de kullanmayı kolaylaştırır.
Eklenti serileştiricileri, derleme zamanındaki her olası biçim için doğrudan kod oluşturmak zorunda kalmadan yeni depolama tasarımlarına ve dosya biçimlerine genişletilebilirlik sağlayarak uygulama geliştiricilerine yardımcı olur. Eklenti serileştiricileri, özel veya özel dosya biçimleri için sistem tarafından erişilebilen eklentileri dağıtmak, yüklemek ve güncelleştirmek için standartlaştırılmış bir araç sağlayarak üçüncü taraf geliştiricilere de avantaj sağlar.
Eklenti ile Serileştirici Kullanımı
Eklenti serileştiricilerinin kullanımı kolaydır. SerializerProvider sınıfı, sistemde yüklü her eklenti için bir SerializerDescriptor nesnesi numaralandırır. IsLoadable özelliği, yüklü eklentileri geçerli yapılandırmaya göre filtreler ve seri hale getiricinin uygulama tarafından yüklenip kullanılabileceğini doğrular. SerializerDescriptor ayrıca DisplayName ve DefaultFileExtensiongibi diğer özellikleri de sağlar. Bu özellikler, uygulamanın kullanıcıya kullanılabilir bir çıkış biçimi için seri hale getirici seçmesini isteyip istemediğinizi sorabilmesini sağlar. XPS için varsayılan bir eklenti serileştirici, .NET Framework ile sağlanır ve her zaman listelenir. Kullanıcı bir çıkış biçimi seçtikten sonra, belirli bir biçim için CreateSerializerWriter oluşturmak için SerializerWriter yöntemi kullanılır. SerializerWriter.Write yöntemi daha sonra belge akışının veri deposuna çıkışını almak için çağrılabilir.
Aşağıdaki örnekte, "PlugInFileFilter" özelliğinde SerializerProvider yöntemini kullanan bir uygulama gösterilmektedir. PlugInFileFilter, yüklü eklentileri numaralandırır ve bir SaveFileDialogiçin kullanılabilir dosya seçenekleriyle bir filtre dizesi oluşturur.
// ------------------------ PlugInFileFilter --------------------------
/// <summary>
/// Gets a filter string for installed plug-in serializers.</summary>
/// <remark>
/// PlugInFileFilter is used to set the SaveFileDialog or
/// OpenFileDialog "Filter" property when saving or opening files
/// using plug-in serializers.</remark>
private string PlugInFileFilter
{
get
{ // Create a SerializerProvider for accessing plug-in serializers.
SerializerProvider serializerProvider = new SerializerProvider();
string filter = "";
// For each loadable serializer, add its display
// name and extension to the filter string.
foreach (SerializerDescriptor serializerDescriptor in
serializerProvider.InstalledSerializers)
{
if (serializerDescriptor.IsLoadable)
{
// After the first, separate entries with a "|".
if (filter.Length > 0) filter += "|";
// Add an entry with the plug-in name and extension.
filter += serializerDescriptor.DisplayName + " (*" +
serializerDescriptor.DefaultFileExtension + ")|*" +
serializerDescriptor.DefaultFileExtension;
}
}
// Return the filter string of installed plug-in serializers.
return filter;
}
}
Kullanıcı tarafından bir çıkış dosyası adı seçildikten sonra, aşağıdaki örnek belirli bir belgeyi belirtilen biçimde depolamak için CreateSerializerWriter yönteminin kullanımını gösterir.
// Create a SerializerProvider for accessing plug-in serializers.
SerializerProvider serializerProvider = new SerializerProvider();
// Locate the serializer that matches the fileName extension.
SerializerDescriptor selectedPlugIn = null;
foreach ( SerializerDescriptor serializerDescriptor in
serializerProvider.InstalledSerializers )
{
if ( serializerDescriptor.IsLoadable &&
fileName.EndsWith(serializerDescriptor.DefaultFileExtension) )
{ // The plug-in serializer and fileName extensions match.
selectedPlugIn = serializerDescriptor;
break; // foreach
}
}
// If a match for a plug-in serializer was found,
// use it to output and store the document.
if (selectedPlugIn != null)
{
Stream package = File.Create(fileName);
SerializerWriter serializerWriter =
serializerProvider.CreateSerializerWriter(selectedPlugIn,
package);
IDocumentPaginatorSource idoc =
flowDocument as IDocumentPaginatorSource;
serializerWriter.Write(idoc.DocumentPaginator, null);
package.Close();
return true;
}
Eklenti Serileştiricilerini Yükleme
SerializerProvider sınıfı, eklenti seri hale getirici bulma ve erişim için üst düzey uygulama arabirimi sağlar. SerializerProvider, uygulamaya sistemde yüklü ve erişilebilir seri hale getiricilerin listesini bulur ve sağlar. Yüklü serileştiricilerin özellikleri kayıt defteri ayarları aracılığıyla tanımlanır. Eklenti serileştiricileri RegisterSerializer yöntemi kullanılarak kayıt defterine eklenebilir; veya .NET Framework henüz yüklenmemişse, eklenti yükleme betiği doğrudan kayıt defteri değerlerinin kendisini ayarlayabilir. UnregisterSerializer yöntemi, önceden yüklenmiş bir eklentiyi kaldırmak için kullanılabilir veya kayıt defteri ayarları bir kaldırma betiği tarafından benzer şekilde sıfırlanabilir.
Eklenti Serileştirici Oluşturma
Hem eklenti seri hale getiricileri hem de bağlı seri hale getiriciler aynı genel yöntemleri ve olayları kullanır ve benzer şekilde senkron veya asenkron olarak çalışacak şekilde tasarlanabilir. Eklenti seri hale getiricisi oluşturmak için normalde izlenen üç temel adım vardır:
Serileştiriciyi ilk olarak bağlı serileştirici olarak uygulayın ve hatalarını ayıklayın. Başlangıçta doğrudan bir test uygulamasında derlenen ve bağlanan seri hale getiricinin oluşturulması, kesme noktalarına ve test için yararlı olan diğer hata ayıklama hizmetlerine tam erişim sağlar.
Seri hale getirici tam olarak test edildikten sonra, eklenti oluşturmak için bir ISerializerFactory arabirimi eklenir. ISerializerFactory arabirimi, mantıksal ağaç, UIElement nesneleri, IDocumentPaginatorSourceve Visual öğelerini içeren tüm .NET Framework nesnelerine tam erişime izin verir. Ayrıca, ISerializerFactory, bağlı serileştiriciler tarafından kullanılan aynı senkron ve asenkron yöntemleri ve olayları sağlar. Büyük belgelerin çıkışı zaman alabileceğinden, zaman uyumsuz işlemlerin yanıt veren kullanıcı etkileşimini sürdürmesi ve veri deposunda bir sorun oluşması durumunda "İptal et" seçeneği sunulabilmesi önerilir.
Eklenti serileştiricisi oluşturulduktan sonra, eklentiyi dağıtmak ve yüklemek (ve kaldırmak) için bir yükleme betiği uygulanır (yukarıya bakın, "Eklenti SeriLeştiricilerini Yükleme").
Ayrıca bakınız
.NET Desktop feedback