تسلسل المستند و التخزين

يوفر Microsoft NET Framewor. بيئة فعالة لإنشاء وعرض المستندات عالية الجودة. الميزات المحسنة التي تعتمد كل من المستندات المثبتة ومستندات التدفق وعناصر التحكم فى العرض المتقدمة مضمنة مع قدرات رسومات ثلاثية وثنائية الأبعاد فعالة تنتقل بتطبيقات NET Framewor. مستوى جديد من الجودة وتجربة المستخدم. القدرة على إدارة تمثيل في الذاكرة لمستند هو إحدى الميزات الأساسية لـ NET Framewor. ، وإمكانية تخزين وتحميل المستندات بكفاءة هو تقريباً حاجة لكل تطبيق. عملية تحويل مستند من تمثيل في الذاكرة الداخلية إلى مخزن بيانات خارجية يعرف باسم Serialization. إجراء العملية العكسية وهى قراءة بيانات فى مخزن وإعادة إنشاء المثيل الأصلى في الذاكرة يسمى إلغاء التسلسل.

يشتمل هذا الموضوع على الأقسام التالية.

  • حول تسلسل المستند
  • محولى البيانات الاضافيين
  • موضوعات ذات صلة

حول تسلسل المستند

مثالياً عملية Serializationوإلغاء تسلسل مستند من ثم الى الذاكرة يكون شفافاً بالنسبة إلى التطبيق. يقوم التطبيق باستدعاء أسلوب مُسلسل “ كتابة ” لحفظ المستند بينما يقوم ملغى التسلسل أسلوب “ قراءة ” بالوصول إلى مخزن البيانات ويقوم بإعادة إنشاء المثيل الأصلي في الذاكرة. التنسيق المعين الذى تم تخزين البيانات فى صورته ليس اهتمام بشكل عام للتطبيق طالما أن عملية التسلسل وإلغاء تسلسل تقوم بإعادة إنشاء المستند مرة أخرى إلى النسخة الأصلية الخاصة به.

توفر التطبيقات غالباً خيارات متعددة من التسلسل التي تسمح للمستخدم بحفظ المستندات الى أوساط أو تنسيقات مختلفة. على سبيل المثال، قد يوفر تطبيق خيارات " حفظ باسم ” لتخزين مستند إلى ملف قرص ، قاعدة بيانات أو خدمة ويب. وبشكل مماثل، يمكن للمسلسلين المختلفين تخزين المستند بتنسيقات مختلفة كـ HTML أو RTF XML أو XPS أو يمكنها بدلاً من ذلك التنسيق الى جهة خارجية. بالنسبة إلى التطبيق، عملية تحويل البيانات إلى ملف تقوم بتعريف واجهة تفصل تفاصيل وسيطة التخزين داخل التطبيق الخاص بكل مُسلسل معينة. بالإضافة إلى فوائد تغليف تفاصيل التخزين ، توفر NET Framewor.System.Windows.Documents.Serializationواجهات API عدة ميزات هامة أخرى.

ميزات محولى مستندات .NET Framework 3.0

  • الولوج المباشر إلى كائنات المستند عالية المستوى ( الشجرة المنطقية والمرئيات) تقوم بتمكين تخزين محتوى مرقم الصفحات وعناصر ثنائية/ثلاثية الأبعاد ، الصور ، الوسائط ، الارتباطات التشعبية ، التعليقات التوضيحية و محتويات الدعم الأخرى.

  • عمليات المتزامن و غير متزامن .

  • دعم المكون الإضافي المسلسل مع قدرات محسنة:

    • الوصول واسع الاستخدام من قبل كافة تطبيقات NET Framewor..

    • المكون الاضافى قابلية الكشف عن تطبيق.

    • نشر بسيط, تثبيت، وتحديث للحصول على وظائف التوصيل لجهة خارجية مخصصة.

    • دعم واجهة المستخدم لإعدادات وخيارات وقت التشغيل.

مسار طباعة XPS

The Microsoft NET Framewor. XPS print path also provides an extensible mechanism for writing documents through print output. XPSككل من تنسيق الملف مستند و هو تنسيق التخزين المؤقت للطباعة الأصليWindows Vista. XPSيمكن أن يتم إرسال مستندات مباشرة إلىXPS-متوافق مع الطابعات دون الحاجة للتحويل إلى عنصر تنسيق وسيط. راجع نظرة عامة حول الطباعة للحصول على معلومات إضافية حول خيارات وقدرات اخراج مسار الطباعة.

محولى البيانات الاضافيين

يوفر System.Windows.Documents.Serialization APIsدعمًا لكل من المكون الإضافي للمحولين والمحولين المرتبطين الذين يتم تثبيتهم بشكل منفصل عن التطبيق ،ربط في وقت التشغيل و يتم الوصول إليها عن طريق استخدام آلية الاكتشاف SerializerProvider. يقدم المكون الاضافى لمحولى البيانات فوائد محسّنة لتسهيل نشر والاستخدام على مستوى النظام. يمكن أيضًا تطبيق محولى بيانات مرتبطين على بيئات ثقة جزئية مثل تطبيقات مستعرض XBAP (XBAP) حيث يكون المحول الاضافى غير قابل للوصول. المحولات المرتبطة المستندة إلى تطبيق مشتق من الفئة SerializerWriter يتم تحويلهم برمجياً وربطهم مباشرةً إلى التطبيق. تعمل كل من المحولات الاضافية والمحولات المرتبطة خلال أساليب عامة متطابقة والأحداث التي تجعل من السهل استخدام احد النوعين أو كلا منهما في نفس التطبيق.

تساعد الحولات الاضافية مطوري التطبيقات بواسطة توفير التوسعة لتصميمات تخزين جديدة وتنسيقات ملفات دون الحاجة إلى التعليمات البرمجية مباشرة لتنسيق لكل تنسيق محتمل في وقت الإنشاء. تفيد المحولات الاضافية أيضاً المطورين من جهة خارجية عن طريق توفير وسائل قياسية لنشر وتثبيت وتحديث المكونات الاضافية للنظام التى يمكن الوصول إليها لتنسيقات ملفات خاصة أو مخصصة.

استخدام مُسلسل اضافى

المحول الاضافى يكون سهل الاستخدام تقوم الفئة SerializerProvider بتعداد كائن SerializerDescriptor لكل مكون اضافى مثبت على النظام. تعمل الخاصية IsLoadable على تصفية المكونات الإضافية المثبتة استناداً إلى الضبط الحالي والتحقق من أنه يمكن تحميل المُسلسل واستخدامه بواسطة التطبيق. يوفر SerializerDescriptor أيضاً خصائص أخرى مثل DisplayName و DefaultFileExtension ، التي يمكن للتطبيق استخدامهم لمطالبة المستخدم بتحديد مُسلسل للحصول على تنسيق اخراج متوفر. مُسلسل المكون إضافي موجود افتراضياً لـ XPS بواسطة NET Framewor. ويتم دوماً تعداده. بعد تحديد المستخدم لتنسيق اخراج، يتم استخدام الأسلوب CreateSerializerWriter لإنشاء SerializerWriter للتنسيق المحدد. SerializerWriter. ثم يمكن بعد ذلك استدعاء الأسلوب Write لاخراج المستند إلى مخزن البيانات.

يوضح المثال التالي تطبيق يستخدم الأسلوب SerializerProvider في الخاصية “ PlugInFileFilter ”. يقوم PlugInFileFilter بتعداد وظائف التوصيل المثبتة وببناء سلسلة تصفية بخيارات الملفات المتوفرة لـ SaveFileDialog.

// ------------------------ 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;
    }
}

بعد أن قام المستخدم بتحديد اسم ملف الاخراج ، يوضح المثال التالي استخدام الأسلوب CreateSerializerWriter لتخزين مستند محدد في التنسيق المحدد.

// 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;
}

تثبيت المُسلسل الاضافى

SerializerProviderفئة بتوفير واجهة تطبيق المستوى العلوي لاكتشاف مسلسل المكون الإضافي و الوصول. SerializerProviderتحديد موقع و يوفر تطبيق قائمة serializers المثبتة و يمكن الوصول إليها تشغيل النظام. يتم تعريف مواصفات المُلسلين المثبتين من خلال إعدادات التسجيل. يمكن إضافة المُلسلين الاضافيين الى التسجيل باستخدام الأسلوب RegisterSerializer; أو إذا كان NET Framewor. غير مثبت بعد تثبيته، يمكن لمثبت المكون الإضافي تعيين قيم التسجيل بنفسه تلقائياً. يمكن استخدام الأسلوب UnregisterSerializer لإزالة مكون اضافى مثبت مسبقًا أو يتم اعادة تعيين اعدادات التسجيل بنفس الطريقة بواسطة برنامج ازالة تثبيت.

إنشاء مُسلسل اضافى

يستخدم كل من المُسلسلين الاضافيين والمُسلسلين المرتبطين نفس الأساليب العامة المكشوفة والأحداث و وبالمثل يمكن تصميمها لتعمل بشكل متزامن أو بشكل غير متزامن . هناك ثلاث خطوات أساسية عادةً متبوعة لإنشاء مُسلسل الوظيفة الإضافية:

  1. تنفيذ وتصحيح المُسلسل أولاً كمُسلسل مرتبط. فى البداية إنشاء أداة التسلسل المترجمة المرتبطة مباشرة في تطبيق اختبار يوفر وصول كامل الى نقاط التوقف وخدمات التصحيح الاخرى المفيدة للاختبار.

  2. بعد المسلسل هو تماما اختبار، ISerializerFactoryواجهة هو تمت الإضافة إلى إنشاء كائن إضافي. ISerializerFactoryواجهة تسمح بالوصول الكامل إلى الجميع NET Framewor.الكائنات التي تتضمن شجرة منطقية، UIElementالكائنات، IDocumentPaginatorSource، و Visualعناصر. بالإضافة يوفر ISerializerFactory نفس الأساليب المتزامن وغير المتزامنة والأحداث المستخدمة من قبل المُسلسلين المرتبطين. بما أن المستندات الكبيرة يمكن أن يستغرق وقتاً للإخراج ، يوصى للعمليات غير المتزامنة بالاحتفاظ بالتفاعل مع تفاعل المستخدم ويوفر خيار “إلغاء” فى حالة حدوث مشكلة مع مخزن البيانات.

  3. بعد إنشاء المُسلسل الإضافي يتم تنفيذ برنامج تثبيت لتوزيع وتثبيت (و إلغاء تثبيت) الأداة الإضافية (انظر أعلاه “ Installing Plug-in Serializers ”).

راجع أيضًا:

المهام

أعضاء البيانات مستند XPS

المرجع

System.Windows.Documents.Serialization

XpsDocumentWriter

XpsDocument

المبادئ

المستندات فى WPF

نظرة عامة حول الطباعة

موارد أخرى

XPS