Monday 5 March 2018

استراتيجية إصدار شمل


استراتيجية إصدار شمل
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
ما هي أفضل الممارسات لإصدار مخططات شمل؟
وغالبا ما يكون لتصميم مخططات شمل لمختلف قواعد شمل قواعد الاستيراد. ومن الواضح أن مخططات شمل سوف تتطور بمرور الوقت أو أنها قد تحتوي على أخطاء ليتم إصلاحها، لذلك فمن المهم التقاط نسخة المخطط ولها بعض آلية لربط ضد إصدار معين.
حاليا لدي سيناريوهين:
تم العثور على الخطأ داخل المخطط ويجب أن تتوافق جميع حالات المخطط مع الإصدار الثابت.
تمت ترقية المخطط ويجب اعتباره أفضل ولكن يجب دعمه القديم أيضا.
وأخيرا جئت مع تخزين معلومات الإصدار داخل مساحة الاسم من المخطط:
عند إصلاح علة إصلاحه في نفس مساحة الاسم ولكن إذا أنا على وشك ترقية مخطط ثم أحتاج إلى إنشاء مساحة اسم جديدة ولكن مع ترقية الشهر وأضاف:
وإذا كان لدي أكثر من ترقية واحدة في شهر ثم مجرد إلحاق يوم أيضا:
هل تعرف أي نهج أفضل؟
هذا هو موضوع صعب بحيث أنه ليس حتى مضحك، واحد أن قضيت سنوات تقديم الدعم الاستشاري ل.
هناك العديد من أفضل الممارسات هناك، ولكن معظمهم لا يعملون في جميع الحالات. على سبيل المثال، العديد من الدعوة لاستخدام "شسد: أي" للسماح ملحقات، وهذا هو مجرد وصفة للكوارث إذا المطورين هي المسؤولة عن الحفاظ على المخطط، وتحويله إلى تفريغ.
في ما يلي بعض النصائح لك إذا كنت تبدأ:
لا تضع رقم الإصدار الثانوي أو رقم الإصدار الصغير أو التاريخ أو أي شيء آخر من هذا النوع في مساحة الاسم. في كل مرة تقوم بتغيير مساحة الاسم، سيتم كسر كافة تطبيقات المعالجة. قم بوضع سمة "إصدار" في وثيقة مثيل شمل. سيؤدي ذلك إلى تمكين تطبيق معالجة أو خدمة محول إصدار لمعرفة ما يتم معالجته. قم بتحديد سياسة ما يشكل تغيير متوافق مع الوراء، على سبيل المثال: إضافة عناصر اختيارية لن يكسر المرسلين، ولن يكسر المستقبلات إما إذا كانوا يستخدمون سياسة تجاهل العناصر التي لا يعرفونها (يمكن تكوين جاكس و شملبانز بهذه الطريقة )

إيباي مخطط النسخة الاستراتيجية.
اعتبارا من أغسطس 2015، وأدنى نسخة معتمدة هو 863.
يصف هذا الموضوع إستراتيجية إصدار إيباي لواجهة برمجة تطبيقات التداول (وواجهة برمجة تطبيقات شوبينغ أبي)، والتي تمكننا من تطوير المخطط مع الحفاظ على التوافق السابق لمدة 18 شهرا على الأقل. وتهدف هذه الاستراتيجية إلى معالجة هذه الشواغل:
يباي يضيف ميزات جديدة كل أسبوعين. إذا قمت بتحديث برنامج العميل الخاص بك بشكل متكرر، يحتاج البرنامج إلى طريقة للتعامل مع البيانات غير المعترف بها من موقع ئي باي. مع مرور الوقت، يصبح من الصعب على موقع ئي باي لدعم برامج طرف ثالث التي تستخدم منطق الأعمال أو الميزات التي عفا عليها الزمن. موقع ئي باي يحتاج إلى وسيلة لخفض الدعم في نهاية المطاف للميزات التي عفا عليها الزمن. نحن ندرك أنه قد يكون من الصعب عليك تحديث البرنامج الخاص بك في غضون مهلة قصيرة. لمساعدتك، يباي يحتاج إلى الحفاظ على دعم الميزات التي عفا عليها الزمن لبعض فترة من الزمن، ونحن بحاجة لتعطيك أكبر قدر ممكن من الإشعار ممكن قبل أن نتوقف تماما دعم ميزة.
في كل إصدار، نبذل قصارى جهدنا لتحديث المخطط بطريقة متوافقة مع الخلف. ومع ذلك، أحيانا نحتاج إلى إجراء تغييرات غير متوافقة مع الإصدارات السابقة:
كما يتم كتابة كتابي مخطط شمل، أي تعديل من شأنه أن يؤدي إلى تغيير نوع هو عدم التوافق المحتملة. وكمثال بسيط جدا، قد نعبر حاليا عن قياس أو عد في قيم صحيحة (شس: إنت)، ولكن في تعزيز مستقبلي قد نحتاج إلى طريقة للسماح بالكسور العشرية لنفس القيمة (شس: دوبل). إذا كان التطبيق الخاص بك يتوقع حقل لإرجاع عدد صحيح في وقت التشغيل ونحن نبدأ في إعادة مزدوجة بدلا من ذلك، يمكن أن تفشل التطبيق الخاص بك. لذلك، نحن بحاجة إلى وسيلة لتجنب تغيير نوع مباشرة. كما أن تغيير تعدد العناصر هو احتمال عدم التوافق. على سبيل المثال، قد نسمح حاليا بحقل عنوان ورل واحد، ولكن في عملية التحسين المستقبلية قد نسمح بحقول عناوين ورل المتكررة (ماكسوكورس = "أونبوندد"). وبما أن بعض مجموعات الأدوات تفسر الحقول المتكررة كمصفوفات، فإن هذا سيكون معادلا لتغيير نوع.
وعندما تكون هذه التغييرات ضرورية، نحتاج إلى طريقة للتقدم بأمان في النهج الجديد وإزالة المرحلة القديمة ببراعة. (وهذا هو، نحن بحاجة إلى إجراء تغييرات دون التسبب في تطبيقات طرف ثالث للفشل بشكل غير متوقع، والتطبيقات تحتاج إلى أن تصمم لاستيعاب التغييرات الروتينية.) ويرد وصف هذا النهج أدناه.
مفاهيم المخطط الأساسي.
قبل قراءة هذه الوثيقة، يجب أن تكون على دراية بهذه المفاهيم الأساسية.
استراتيجية الإصدار النقاط الرئيسية.
يلخص هذا القسم النقاط الرئيسية التي يجب أن تفهمها حول إستراتيجية الإصدار. ويرد شرح هذه النقاط بمزيد من التفصيل في الفروع اللاحقة.
الكائن الموقوف هو كائن لم نعد نوصي به. إصدار المخطط عند حدوث هذا الإهمال هو إصدار إهمال الكائن. على سبيل المثال، إذا تم إهمال كائن يسمى "نكهة" في الإصدار 803 من المخطط، ثم كان إصدار الإيقاف لهذا الكائن 803.
كلما قمنا بإلغاء كائن، نقوم أيضا بحذف الكائن من أحدث المخطط في نفس الوقت (ما لم يذكر خلاف ذلك). يجب ألا يتأثر تطبيقك بعمليات الحذف هذه حتى تتم الترقية إلى إصدار أحدث من المخطط. (راجع جدول إهمال الكائن لقائمة الكائنات التي تم إلغاؤها سابقا والتي تم حذفها من المخطط.)
نحن نتحكم في استخدام كائن موقوف بناء على إصدار الطلب:
إذا كان كائن إدخال، قد تتلقى تحذير فقط (بغض النظر عن إصدار الطلب). إذا كان كائن إخراج، فلن نعيده إلا بإصدارات طلب أقل من إصدار الإيقاف (ما لم يذكر خلاف ذلك). راجع إهمال الكائن مثال أدناه للحصول على مثال لكيفية عمل ذلك. إذا تم إهمالها في وقت سابق من أقل إصدار معتمد (انظر أدناه)، فلن تعمل بعد ذلك.
نحن زيادة أدنى نسخة معتمدة كل 6 أشهر. وأدنى نسخة معتمدة سيكون 18 شهرا من العمر. انظر إيباي في النسخة دعم الجدول الزمني.
إيباي النسخة دعم الجدول الزمني.
في فبراير وأغسطس من كل عام، إيباي يزيد أدنى نسخة مخطط معتمد.
ويبين الجدول أدناه جدول دعم النسخة مخطط باي. يشير الصف الذي يحتوي على نص عريض إلى الإصدار الحالي الأقل دعم. تشير الصفوف ذات النص الرمادي إلى الإصدارات المستقبلية التي لم تنشر بعد أو الإصدارات السابقة التي لم تعد معتمدة.
جدول دعم الإصدار (متوقع)
في ما يلي مثال على كيفية تفسير الجدول:
اعتبارا من فبراير 2015، وأدنى نسخة معتمدة هو 837. في أغسطس 2015، ونحن زيادة أدنى نسخة معتمدة إلى 863. إذا قمت بالترقية إلى الإصدار 861، قبل أغسطس 2015، سوف تكون قادرة على استخدام 861 حتى أغسطس 2015 (عندما أدنى النسخة المعتمدة يتحرك إلى 863).
وإليك كيفية تأثير هذا الجدول الزمني عليك:
إذا كان تطبيقك يستخدم إصدارا أقل من الإصدار الأقل دعما، فيتعين عليك ترقية البرنامج لاستخدام إصدار معتمد. يتم تشجيعك على استخدام أحد أحدث الإصدارات المتاحة. إذا كنت تقوم بإنشاء تطبيق جديد، يجب عليك استخدام أحدث إصدار متاح.
هام: بعد أن تصبح نسخة الوصف المنطقي غير مدعومة، لا يتم دعم الكائنات التي تم إيقافها اعتبارا من هذا الإصدار (أو إصدار سابق)، بغض النظر عن إصدار الطلب.
تغييرات المخطط التي تؤثر على التوافق.
يباي يجعل ثلاثة أنواع أساسية من التغييرات على المخطط:
نضيف أشياء جديدة. نحن نوقف الكائنات الموجودة. نحن استبدال الكائنات الموجودة أو تغيير نوعها.
في كثير من الحالات، لن تؤثر هذه التغييرات على تطبيقك حتى تتم الترقية إلى مخطط أحدث. يمكن أن تعتمد التأثيرات على ما إذا كان تطبيقك يحدث لاستخدام الوظيفة التي تم تغييرها، وإصدار المخطط الذي تستخدمه.
نحن نبذل قصارى جهدنا لإبقاء لكم على علم من التغييرات مخطط من خلال وثائق مخطط، ملاحظات الإصدار، مدونة موقع المطور باي، وضع الموقع، وغيرها من الآليات.
إضافة كائنات جديدة.
يمكننا تقديم كائنات جديدة في أي وقت وعلى أي مستوى من المخطط.
عادة، لا يتحكم إصدار الطلب في قدرتك على استخدام عناصر أو مكالمات جديدة (ما لم يذكر خلاف ذلك). على سبيل المثال، عادة ما يتم إرجاع عناصر الإخراج الجديدة لجميع إصدارات الطلب. نضيف شس: أي عنصر في نهاية كل نوع للتعبير عن هذا الانفتاح. حسب السياسة نحاول أيضا إضافة عناصر إلى نهاية نوع قبل شس: أي عنصر. (هذه سياسة فقط؛ إنها ليست ضمانا.)
ومع ذلك، فإن إصدار الطلب يتحكم في ما إذا كنا نعيد قيم نوع شفرة جديدة (التعدادات) في الردود. إذا كان البرنامج يستخدم بالفعل عنصرا هو نوع شفرة، فأنت بحاجة إلى طريقة آمنة للتعامل مع القيم الجديدة التي لا يتعرف البرنامج عليها بعد. ولذلك، فإننا تحقق من إصدار طلبك، ومن ثم في ردنا نقوم بتعيين أي قيم نوع رمز جديد إلى قيمة افتراضية يمكنك التعرف (كوستومكود) بدلا من ذلك. (راجع نظرة عامة على مخطط واجهة برمجة التطبيقات للحصول على مزيد من المعلومات حول أنواع الشفرة.)
للتوافق مع الإصدارات السابقة:
يجب تصميم البرنامج الخاص بك لتكون قادرة على التعامل مع أو تجاهل بأمان العناصر الإضافية التي نضيفها إلى المخطط. على سبيل المثال، في أي وقت، قد تعيد مكالمات أبي عناصر جديدة بالإضافة إلى تلك المعلنة في إصدار المخطط الذي تستخدمه. كما يجب أن يكون برنامجك مستعدا لرؤية "كوستومكود" (بدون علامات اقتباس) ومعالجتها للقيم التي أضفناها إلى أنواع الشفرة في الإصدارات الأحدث من إصدار الطلب الحالي.
إيقاف الكائنات الموجودة.
كما ذكر سابقا، كائن مهمل هو كائن لم نعد نوصي به (على الرغم من أننا ما زلنا ندعمه). نحن نبذل قصارى جهدنا لعدم إهمال الكائنات، ولكن في بعض الأحيان يصبح من الضروري إهمال كائن بسبب مشاكل تجارية أو قانونية أو وظيفية. إصدار المخطط عند حدوث هذا الإهمال هو إصدار إهمال الكائن.
إليك ما يحدث في واجهة برمجة التطبيقات:
عندما نقوم بإلغاء كائن، نقوم بحذفه من المخطط في نفس الوقت. (إذا كان التطبيق الخاص بك يستخدم الكائن بالفعل، يجب أن لا تتأثر حتى الترقية إلى إصدار الإيقاف أو أعلى.) عندما نقوم بتزايد إصدار مخطط أقل دعم، ونحن سوف إسقاط الدعم لكافة الكائنات التي تم إيقافها في إصدارات أقل. انظر إيباي في النسخة دعم الجدول الزمني.
إليك السلوك الذي يمكن توقعه:
يجب ألا يتأثر طلبك بالأجسام المحذوفة حديثا طالما أنك تستخدم ممارسات ترميز جيدة. على سبيل المثال، لا يجب عليك إجراء فحص شيك ل "العنصر ال 20" في الرد، على سبيل المثال. للحصول على التوافق السابق، تعتمد كيفية استخدام كائن موقوف على ما إذا كان الكائن في الطلب (الإدخال) أو الاستجابة (الإخراج). تفترض السياسة في الجدول أدناه أن إصدار الإبطال وإصدار الطلب مدعومان (أي أكبر من الإصدار الأقل دعما).
انظر مثال "إيقاف كائن" للحصول على مثال ملموس، بما في ذلك الرسم التخطيطي.
عند اختبار مكالمة، يمكنك تعيين وارنينغليفيل إلى هاي لتحديد ما إذا كنت تستخدم كائنات موقوفة في طلبك.
بدائل ونوع التغييرات.
نحن في بعض الأحيان بحاجة إلى تغيير فعال كائن موجود إلى نوع مختلف، أو استبدال أو إعادة تسمية كائن. بدلا من استبدال كائن مباشرة، ونحن عادة ما تستخدم إضافة وإهمال النهج المذكورة أعلاه. وهذا يعني أننا نضيف كائن جديد باسم مختلف ونقوم بإيقاف الكائن القديم.
للتوافق مع الإصدارات السابقة:
تعامل كائن جديد مثل أي كائن جديد آخر. وسوف تكون متاحة بغض النظر عن إصدار الطلب (ما لم يذكر خلاف ذلك). راجع إضافة كائنات جديدة أعلاه. علاج الكائن القديم مثل أي كائن آخر تم إهمالها. راجع تجاهل العناصر الموجودة أعلاه.
يجب أن يبدأ برنامج العميل الذي يعتمد على الكائن القديم باستخدام (أو يتوقع) الجديد في أقرب وقت ممكن. هذا مهم بشكل خاص إذا كان الكائن القديم يعكس وظيفة غير متناسقة مع موقع موقع ئي باي الحالي. وإلا، قد يرى مستخدمو التطبيق سلوكا غير متوقع (وغير مرغوب فيه).
في بعض الحالات، قد نقوم بتغيير سلوك كائن موجود دون استبداله. راجع التغييرات المنطقية التي تؤثر على التوافق للحصول على مثال. مرة أخرى، نحن نبذل قصارى جهدنا لتقليل هذه الأنواع من التغييرات.
مثال إهمال الكائنات.
دعونا نفترض يقدم موقع ئي باي ميزة "نكهة" جديدة، ومن ثم يعزز في وقت لاحق ميزة بطريقة ليست متوافقة مع الوراء.
هذه هي الطريقة التي قد يتغير بها المخطط واستخدام العنصر في هذه الحالة:
التغييرات المنطقية التي تؤثر على التوافق.
ويمكن أن تكون التغييرات غير المتوافقة منطقية أو وظيفية؛ لا تتغير بالضرورة إلى المخطط نفسه. وكما هو الحال مع الكائنات التي تم إهمالها، فإننا ننفذ هذه الأنواع من التغييرات استنادا إلى الإصدار كلما أمكن ذلك.
على سبيل المثال، لنفترض أن مكالمة تقوم بإرجاع عقدة تسمى ماندديتايلز:
في الإصدار 483، نعود دائما مانيديتايلز. في الإصدار 503، نضيف حقل إينلانيمانديتايلز جديد إلى الطلب، وقمنا بتعيين الافتراضي إلى فالس (بحيث يتم إرجاع مانيديتايلز فقط عندما تسأل على وجه التحديد لذلك).
في هذا المثال، نحن لا إهمال مانيديتايلز أو تغيير المخطط بأي شكل من الأشكال، ولكن هذا التغيير كسر أي تطبيق الذي يبحث خصيصا عن مانيديتايلز ويتوقع أن يتم إرجاعها بشكل افتراضي. لذلك، سنقوم بتنفيذ هذا التغيير بحيث العملاء فقط تحديد طلب الإصدار 503 أو أعلى من شأنه أن يرى السلوك الجديد.
راجع جدول التغييرات المنطقية المعتمدة على الإصدارات لملخص الكائنات التي تتصرف بشكل مختلف بناء على إصدار الطلب.
إصدارات ومتطلبات المخطط للتحقق من التطبيق المتوافق.
للالتزام بمتطلبات موقع إيباي للتحقق من التطبيق المتوافق، يجب أن تستخدم التطبيقات الجديدة أحدث إصدار متوفر في بيئة الإنتاج في وقت التحقق من التطبيق المتوافق.
على سبيل المثال، لنفترض أن التطبيق الخاص بك كان تحقق تطبيق متوافق في الإصدار 525. إذا كان الإصدار 555 هو أحدث إصدار متاح في الإنتاج، ثم لا يزال بإمكانك استخدام الإصدار 525 أو أعلى.
من ناحية أخرى، لنفترض أنك تقدم طلبا جديدا للتحقق من تطبيق متوافق. إذا كان الإصدار 555 هو أحدث إصدار متوفر في الإنتاج، فستحتاج إلى استخدام أحدث إصدار (555 في هذا المثال).
نحن زيادة أدنى نسخة معتمدة دوريا. تأكد من فهم كيفية تأثر تطبيقك بهذه التغييرات (راجع جدول دعم إصدار إيباي). خطط للبدء في تعديل تطبيقك لاستخدام أحدث إصدار قبل أن نسقط الدعم للإصدار الذي تستخدمه. (لا تحتاج بالضرورة إلى إعادة تطبيق متوافق تحقق من التطبيق الخاص بك إذا كنت فقط الترقية إلى إصدار أحدث.)
ترقية التطبيقات لدعم الإصدارات الجديدة.
على مستوى عال، نقترح عليك اتباع هذه العملية عند ترقية تطبيق إلى إصدار أحدث من المخطط:
تأكد من أن التطبيق لا يستخدم كائنات أو وظائف غير صالحة. على سبيل المثال: لكل مكالمة، قم بإزالة التبعيات على الكائنات التي تم إيقافها للإصدار الذي تقوم بالترقية إليه. لكل مكالمة، تأكد من أن الطلب يشمل فقط الحقول الصالحة والسارية. على سبيل المثال، قد تكون بعض الحقول الصالحة في استدعاءات أديتم غير صالحة في مكالمات ريفيسيتم. استخدم ساندبوكس لاختبار توافق التطبيق مع الإصدار الجديد. تأكد من أن جميع الطلبات لا تؤدي إلى تحذيرات أو أخطاء. تعيين وارنينغليفيل إلى عالية للتأكد من عدم إرجاع تحذيرات مخطط.
ما هو مستوى التوافق؟
قد ترى أن بعض الأشخاص يستخدمون مصطلح "مستوى التوافق" القديم بدلا من "طلب الإصدار" في المنتديات ومقالات كب والمستندات القديمة وغير ذلك من الموارد. يستخدم المصطلح أيضا في رأس X-إيباي-أبي-كومباتيبيليتي-ليفيل، لطلبات شمل. هذا هو ببساطة اسم أقدم لإصدار الطلب.
كوبيرايت & كوبي؛ 2005 & نداش؛ 2015 إيباي، Inc. جميع الحقوق محفوظة. لا يمكن استخدام هذه الوثائق و أبي إلا وفقا لبرنامج إيباي للمطورين واتفاقية ترخيص أبي.

استراتيجية إصدار شمل
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
أفضل الممارسات لإصدار أبي؟ [مغلق]
هل هناك أي كيفية معروفة أو أفضل الممارسات لخدمة ويب ريست أبي إصدار؟
لقد لاحظت أن أوس لا الإصدار من قبل ورل من نقطة النهاية. هل هذه هي الطريقة الوحيدة أم أن هناك طرقا أخرى لتحقيق نفس الهدف؟ إذا كانت هناك طرق متعددة، ما هي مزايا كل طريقة؟
مغلقة كما في المقام الأول على أساس الرأي من قبل تمبلاتتيبديف، آمون، جورج ستوكر & # 9830؛ 6 مارس 2014 في 13:22.
العديد من الأسئلة الجيدة تولد قدرا من الرأي استنادا إلى خبرة الخبراء، ولكن الإجابات على هذا السؤال سوف تميل إلى أن تستند بشكل كامل تقريبا إلى الآراء، بدلا من الحقائق أو المراجع أو الخبرة المحددة. إذا كان يمكن إعادة صياغة هذا السؤال لتناسب القواعد في مركز المساعدة، يرجى تعديل السؤال.
مقفل بواسطة أنيموسون & # 9830؛ 8 آذار (مارس) 2016 الساعة 3:40.
هذا السؤال موجود لأنه ذو أهمية تاريخية، ولكنه لا يعتبر سؤالا جيدا حول الموضوع لهذا الموقع، لذا يرجى عدم استخدامه كدليل على أنه يمكنك طرح أسئلة مشابهة هنا. يتم تجميد هذا السؤال وإجاباته ولا يمكن تغييره. مزيد من المعلومات: مركز المساعدة.
هذا سؤال جيد وصعب. موضوع تصميم أوري هو في الوقت نفسه الجزء الأبرز من واجهة برمجة التطبيقات ريست، وبالتالي، التزام يحتمل أن يكون طويل الأجل تجاه مستخدمي أبي.
وبما أن تطور التطبيق، وإلى حد أقل، أبي هو حقيقة من حقائق الحياة وأنه حتى تشبه تطور منتج تبدو معقدة مثل لغة البرمجة، يجب أن يكون تصميم أوري قيود أقل طبيعية ويجب الحفاظ عليه متأخر , بعد فوات الوقت . يعد عمر التطبيق و أبي، وزيادة الالتزام لمستخدمي التطبيق و أبي.
ومن ناحية أخرى، ثمة حقيقة أخرى للحياة هي أنه من الصعب التنبؤ بجميع الموارد وجوانبها التي يمكن أن تستهلك من خلال أبي. لحسن الحظ، فإنه ليس من الضروري لتصميم أبي بأكمله والتي سيتم استخدامها حتى نهاية العالم. ويكفي التحديد الصحيح لجميع نقاط نهاية الموارد ومخطط معالجة كل مورد للموارد والموارد.
بمرور الوقت، قد تحتاج إلى إضافة موارد جديدة وسمات جديدة لكل مورد معين، ولكن يجب ألا تتغير الطريقة التي يتبعها مستخدمو واجهة برمجة التطبيقات للدخول إلى موارد معينة بمجرد أن يصبح المورد الذي يعالج النظام عاما وبالتالي يكون نهائيا.
وتنطبق هذه الطريقة على دلالات الفعل هتب (على سبيل المثال، يجب أن يتم تحديث / استبداله دائما) وشفرات حالة هتب المدعومة في إصدارات أبي السابقة (يجب أن تستمر في العمل بحيث يكون عملاء أبي الذين عملوا بدون تدخل بشري قادرين على الاستمرار في العمل مثل هذا).
وعلاوة على ذلك، نظرا لأن تضمين نسخة أبي في عنوان أوري سيؤدي إلى تعطيل مفهوم الوسائط الفائقة كمحرك حالة التطبيق (المذكورة في أطروحة دكتوراه روي T. فيلدنغس) من خلال وجود عنوان مورد / عنوان أوري يتغير بمرور الوقت، أود أن أخلص إلى أن أبي يجب عدم الاحتفاظ بالإصدارات في عناوين ورل للموارد لفترة طويلة مما يعني أن عناوين ورل للموارد التي يعتمد عليها مستخدمو واجهة برمجة التطبيقات يجب أن تكون روابط ثابتة.
بالتأكيد، من الممكن تضمين إصدار واجهة برمجة التطبيقات في أوري الأساسي ولكن فقط للاستخدامات المعقولة والمقيدة مثل تصحيح أخطاء عميل أبي الذي يعمل مع إصدار أبي الجديد. يجب أن تكون واجهات برمجة التطبيقات المصورة هذه محدودة زمنيا ومتوفرة لمجموعات محدودة من مستخدمي واجهة برمجة التطبيقات (كما هو الحال في بيتا المغلقة) فقط. وإلا، فإنك تلتزم بنفسك حيث لا ينبغي لك ذلك.
وهناك بضعة أفكار بشأن صيانة إصدارات أبي التي لها تاريخ انتهاء الصلاحية عليها. جميع منصات البرمجة / اللغات التي تستخدم عادة لتنفيذ خدمات الويب (جافا، فب، بيرل، القضبان، وما إلى ذلك) تسمح سهلة ملزمة من خدمة الإنترنت نقطة نهاية (ق) إلى أوري قاعدة. بهذه الطريقة فإنه من السهل لجمع والحفاظ على مجموعة من الملفات / الطبقات / طرق منفصلة عبر إصدارات أبي مختلفة.
من مستخدمي أبي بوف، فإنه من الأسهل أيضا للعمل مع وربط إصدار معين أبي عندما يكون هذا واضح ولكن فقط لفترة محدودة، أي أثناء التنمية.
من بوف أبي الحفاظ عليه، فإنه من الأسهل للحفاظ على إصدارات أبي مختلفة في موازاة ذلك باستخدام أنظمة التحكم المصدر التي تعمل في الغالب على الملفات كأصغر وحدة من (المصدر التعليمات البرمجية) الإصدار.
ومع ذلك، مع إصدارات أبي مرئية بوضوح في أوري هناك تحذير: يمكن للمرء أيضا أن يعترض هذا النهج منذ يصبح التاريخ أبي مرئية / أبارنت في تصميم أوري وبالتالي عرضة للتغيرات مع مرور الوقت الذي يتعارض مع المبادئ التوجيهية من ريست. أنا أتفق!
الطريق للذهاب حول هذا الاعتراض المعقول، هو تنفيذ أحدث إصدار أبي تحت الإصدار أبي قاعدة أوري. في هذه الحالة، يمكن لمطوري برامج واجهة برمجة التطبيقات (أبي) اختيار إما:
تطوير ضد أحدث واحد (تلتزم نفسها للحفاظ على تطبيق حمايته من التغييرات أبي في نهاية المطاف التي قد كسر عميل أبي مصممة بشكل سيء).
ربط نسخة محددة من أبي (الذي يصبح واضحا) ولكن فقط لفترة محدودة.
على سبيل المثال، إذا كان الإصدار 3.0 من واجهة برمجة التطبيقات هو أحدث إصدار من واجهة برمجة التطبيقات، فيجب أن يكون الاسمان التاليان مستعارة (أي تتعامل بشكل مماثل مع جميع طلبات واجهة برمجة التطبيقات):
وبالإضافة إلى ذلك، عملاء أبي التي لا تزال تحاول أن أشير إلى أبي القديمة يجب أن تكون على علم لاستخدام أحدث إصدار أبي السابق، إذا كان إصدار أبي انهم يستخدمون عفا عليها الزمن أو غير معتمدة بعد الآن. لذا، فإن الوصول إلى أي من عناوين ورل القديمة مثل هذه:
يجب أن ترجع أي من رموز حالة هتب 30x التي تشير إلى إعادة التوجيه التي يتم استخدامها بالاقتران مع رأس موقع هتب الذي يعيد التوجيه إلى الإصدار المناسب من معرف الموارد المنتظم (أوري) للموارد الذي يظل كما يلي:
هناك اثنان على الأقل من رموز حالة هتب لإعادة التوجيه المناسبة لسيناريوهات إصدار أبي:
301 تم نقلها بشكل دائم تشير إلى أن المورد الذي يحتوي على عنوان أوري المطلوب يتم نقله بشكل دائم إلى أوري آخر (والذي يجب أن يكون مثيل مورد ثابت لا يحتوي على معلومات إصدار واجهة برمجة التطبيقات). يمكن استخدام رمز الحالة هذا للإشارة إلى إصدار واجهة برمجة التطبيقات المتقادمة / غير المعتمدة، وإعلام عميل واجهة برمجة التطبيقات بأنه تم استبدال معرف أوري المصدر الذي تم إصداره بواسطة رابط ثابت للموارد.
302 تم العثور على أن المورد المطلوب موجود مؤقتا في مكان آخر، بينما قد يظل عنوان أوري المطلوب مدعوما. قد يكون رمز الحالة هذا مفيدا عندما تكون عناوين ورل الأقل إصدارا غير متوفرة مؤقتا ويجب تكرار الطلب باستخدام عنوان إعادة التوجيه (مثل الإشارة إلى عنوان أوري مع إصدار أبي مضمن) ونريد أن نخبر العملاء بالاستمرار في استخدامه (أي روابط ثابتة).
يجب ألا يحتوي عنوان ورل على الإصدارات. الإصدار ليس له علاقة مع "فكرة" المورد الذي تطلبه. يجب أن تحاول التفكير في عنوان ورل باعتباره مسارا للمفهوم الذي تريده - وليس بالطريقة التي تريدها للعودة. النسخة تملي تمثيل الكائن، وليس مفهوم الكائن. وكما ذكرت الملصقات الأخرى، يجب تحديد التنسيق (بما في ذلك الإصدار) في رأس الطلب.
إذا نظرت إلى طلب هتب الكامل لعناوين ورل التي تحتوي على إصدارات، فسيبدو ذلك كما يلي:
يحتوي الرأس على السطر الذي يحتوي على التمثيل الذي تطلبه ("قبول: تطبيق / شمل"). هذا هو المكان الذي يجب أن تذهب النسخة. يبدو أن الجميع يلمح إلى حقيقة أنك قد ترغب في نفس الشيء في أشكال مختلفة، وأن العميل يجب أن تكون قادرة على طلب ما تريد. في المثال أعلاه، العميل يطلب أي تمثيل شمل من المورد - وليس حقا التمثيل الحقيقي لما تريد. يمكن للخادم، من الناحية النظرية، أن يعيد شيئا لا علاقة له بالطلب طالما كان شمل، وأنه يجب تحليله لتحقيق ذلك.
وأفضل طريقة هي:
وعلاوة على ذلك، يتيح القول العملاء يعتقدون أن شمل هو مطول جدا والآن يريدون جسون بدلا من ذلك. في الأمثلة الأخرى، يجب أن يكون لديك عنوان ورل جديد للعميل نفسه، لذا ستنتهي ب:
(أو شيئا من هذا القبيل). في الواقع، تحتوي كل طلبات هتب على التنسيق الذي تبحث عنه:
باستخدام هذه الطريقة، لديك حرية أكثر بكثير في التصميم وهي في الواقع التمسك الفكرة الأصلية من ريست. يمكنك تغيير الإصدارات دون تعطيل العملاء أو تغيير العملاء بشكل متزايد مع تغيير واجهات برمجة التطبيقات. إذا اخترت إيقاف دعم التمثيل، يمكنك الرد على الطلبات باستخدام رمز حالة هتب أو الرموز المخصصة. يمكن للعميل أيضا التحقق من الاستجابة في التنسيق الصحيح، والتحقق من صحة شمل.
أحد الأمثلة الأخيرة لإظهار كيفية جعل الإصدار في عنوان ورل سيئا. دعونا نقول تريد بعض قطعة من المعلومات داخل الكائن، وكان لديك إصدار مختلف الكائنات الخاصة بك (العملاء هم v3.0، أوامر v2.0، و شيبتو الكائن هو v4.2). في ما يلي عنوان ورل الذي يجب تقديمه في العميل:
وجدنا أنه من العملي والمفيد لوضع النسخة في ورل. فإنه يجعل من السهل أن أقول ما كنت تستخدم في لمحة. ونحن نفعل الاسم المستعار / فو ل / فو / (أحدث الإصدارات) لسهولة الاستخدام، أقصر / أنظف عناوين المواقع، وما إلى ذلك، كما يقترح الجواب المقبول.
الحفاظ على التوافق إلى الوراء إلى الأبد غالبا ما تكون باهظة التكلفة و / أو صعبة للغاية. نحن نفضل إعطاء إشعار مسبق عن الإهمال، وعمليات إعادة التوجيه مثل المقترحة هنا، والمستندات، وآليات أخرى.
أوافق على أن إصدار تمثيل الموارد بشكل أفضل يتبع نهج ريست. ولكن هناك مشكلة كبيرة في أنواع مايم المخصصة (أو أنواع مايم التي تلحق معلمة إصدار) هي ضعف الدعم للكتابة إلى رؤوس "قبول" و "نوع المحتوى" في هتمل وجافا سكريبت.
على سبيل المثال، لا يمكن للمنظمة البحرية الدولية المشاركة مع الرؤوس التالية في نماذج HTML5، من أجل إنشاء مورد:
وذلك لأن السمة إنتيب نوع HTML5 هي تعداد، وبالتالي أي شيء آخر غير التطبيق المعتاد / x-ووو-فورمورلنكوديد، مولتبارت / فورم-داتا والنص / عادي غير صالحة.
. ولا أنا متأكد من أنه معتمد في جميع المتصفحات في HTML4 (الذي يحتوي على سمة إنسيتب أكثر التراخي، ولكن سيكون مشكلة تنفيذ المتصفح فيما إذا كان قد تم إعادة توجيه نوع مايم)
وبسبب هذا أنا أشعر الآن أنسب طريقة للإصدار هو عن طريق أوري، ولكنني أقبل أنها ليست الطريقة "الصحيحة".
ضع الإصدار في معرف الموارد المنتظم (أوري). لن يدعم إصدار واحد من واجهة برمجة التطبيقات دوما الأنواع من أخرى، لذا فإن الوسيطة القائلة بأن الموارد يتم ترحيلها من إصدار إلى آخر هي مجرد خطأ بسيط. انها ليست نفس تبديل شكل من شمل إلى جسون. قد لا توجد أنواع، أو أنها قد تغيرت بشكل دلالي.
الإصدارات هي جزء من عنوان المورد. أنت بصدد التوجيه من واجهة برمجة تطبيقات واحدة إلى أخرى. انها ليست ريستفول لإخفاء العناوين في رأس.
هناك عدد قليل من الأماكن التي يمكن القيام به الإصدار في أبي ريست:
كما لوحظ، في عنوان أوري. هذا يمكن أن يكون تراكتابل وحتى جماليا حتى إذا تم استخدام عمليات إعادة التوجيه وما شابه ذلك.
في الرأس المقبول: بحيث يكون الإصدار في نوع الملف. مثل 'mp3' مقابل 'mp4'. وهذا العمل أيضا، على الرغم من المنظمة البحرية الدولية أنها تعمل قليلا أقل لطيف من.
في المورد نفسه. العديد من تنسيقات الملفات لها أرقام الإصدارات جزءا لا يتجزأ منها، وعادة في رأس؛ وهذا يسمح أحدث البرامج إلى "العمل فقط" من خلال فهم كافة الإصدارات الموجودة من نوع الملف بينما البرامج القديمة يمكن بونت إذا تم تحديد إصدار غير معتمد (الأحدث). في سياق واجهة برمجة تطبيقات ريست، فهذا يعني أن عناوين ورل الخاصة بك لا بد أن تتغير، فقط ردك على إصدار معين من البيانات التي تم تسليمها.
ويمكنني أن أرى أسبابا لاستخدام النهج الثلاثة التالية:
إذا كنت ترغب في القيام "اكتساح نظيف" واجهات برمجة التطبيقات الجديدة، أو لتغييرات النسخة الرئيسية حيث تريد مثل هذا النهج. إذا كنت تريد للعميل أن يعرف قبل أن يفعل بوت / بوست ما إذا كان الذهاب الى العمل أم لا. إذا كان على ما يرام إذا كان العميل لديه للقيام بوت / بوست لمعرفة ما اذا كان ذاهب الى العمل.
يعد إصدار أبي ريست مشابها لإصدار أي واجهة برمجة تطبيقات أخرى. يمكن إجراء تغييرات طفيفة في المكان، قد تتطلب التغييرات الرئيسية واجهة برمجة تطبيقات جديدة كليا. أسهل بالنسبة لك هو أن تبدأ من الصفر في كل مرة، وهو عندما وضع الإصدار في ورل يجعل من المنطقي. إذا كنت تريد أن تجعل الحياة أسهل للعميل حاولت الحفاظ على التوافق إلى الوراء، والتي يمكنك القيام به مع الإهمال (إعادة توجيه دائم)، والموارد في العديد من الإصدارات الخ هذا هو أكثر فيدلي ويتطلب المزيد من الجهد. ولكنه أيضا ما يشجع ريست في "عناوين ورل كول لا تتغير".
في النهاية انها تماما مثل أي تصميم أبي أخرى. وزن الجهد ضد راحة العميل. النظر في اعتماد إصدار الدلالي ل أبي الخاص بك، الأمر الذي يجعل من الواضح لعملائك كيف متوافق مع الإصدار الجديد الخاص بك إلى الوراء.

تأثير مخطط شمل الإصدار على تصميم النظام.
(استراتيجيات لتسهيل تطور النظام)
المقدمة.
إنشاء نسخة جديدة من مخطط شمل قد يكون لها آثار تموج من خلال أجزاء كثيرة من النظام. إدارة هذه الآثار يمكن أن تكون مكلفة. لذلك من المفيد دراسة طرق التخفيف من آثار تموج مكلفة من الإصدارات الجديدة من مخطط.
في كثير من الأحيان، يعتبر إصدار نسخة المخطط بمعزل عن بقية النظام. ومع ذلك، وكما لوحظ، قد تؤثر تغييرات المخطط على أجزاء أخرى من النظام، لذا نوصي بأن يكون إصدار المخطط جزءا من خطة تطوير نظام متكاملة. إصدار إصدار المخطط هو أحد برامج تطوير النظام.
كاستراتيجية لتسهيل تطور النظام نركز على هذه الأجزاء الثلاثة من نظام - مخططات، وثائق مثيل، والتطبيقات. ومن أجل معالجة هذه الأجزاء الثلاثة بطريقة شاملة، نقدم التوصيات التالية:
توصيات تصميم المخطط:
توصيات تصميم وثيقة المثيل:
توصيات تصميم التطبيق:
ويرد شرح للأساس المنطقي لكل توصية من هذه التوصيات خلال هذه الورقة. لكننا نبدأ أولا بتحديد طبيعة الأنظمة المستهدفة.
النظام.
عرض المشكلة.
فئات مخطط التغييرات التي تؤثر وثائق المثيل والتطبيقات.
ملاحظة: هناك العديد من التغييرات الأخرى التي يمكن أن تحدث في مخطط شمل من تلك المذكورة أعلاه. ومع ذلك، فهي تغييرات داخلية إلى المخطط وليس لها أي مظهر في المستندات المثيل.
نناقش أدناه كيفية التخفيف من تأثير كل من هذه التغييرات.
1. تطبيقات مساحة المعرفة.
معظم تطبيقات شمل هي "مساحة الاسم على علم". وهذا هو، تم تصميم التطبيق لمعالجة العناصر التي تنتمي إلى مساحة اسم محددة.
على سبيل المثال، معالج لغة ورقة أنماط شمل (زسلت) المعالج هو تطبيق يفهم مساحة الاسم زسلت: هذا يعني أن معالج زسلت (تطبيق) يعرف كيفية معالجة عناصر مثل & لوت؛ قالب & لوت؛ لكل & كوت؛ ، & لوت؛ إف> وما إلى ذلك، شريطة أن تكون العناصر مرتبطة بمساحة اسم زسلت.
يؤدي تغيير مساحات الأسماء إلى كسر تطبيقات معرفة مساحة الاسم. وهذا يقودنا إلى توصيتنا الأولى:
التوصية 1: لتجنب كسر التطبيقات المعرفة مساحة الاسم مع كل إصدار جديد من مخطط شمل استخدام نفس مساحة الاسم لجميع الإصدارات.
2. ضع النسخة الجديدة من مخطط في موقع جديد لتجنب كسر وثائق المثول القديمة.
لنفترض أنه تم إنشاء نسخة جديدة من مخطط شمل (باستخدام نفس مساحة الاسم، كما هو موضح أعلاه). والنسخة الجديدة ببساطة الكتابة فوق النسخة القديمة. وهذا يعني أن الإصدار الجديد له نفس اسم الملف وموقع عنوان ورل نفسه كمخطط قديم. اعتمادا على أنواع التغييرات التي تم إجراؤها، قد يؤدي هذا إلى كسر كافة مستندات المثيل التي تمت كتابتها لتتوافق مع المخطط القديم.
التوصية 2: لمنع كسر وثائق المثيل القديمة إعطاء النسخة مخطط جديد اسم ملف مختلف أو موقع ورل مختلف أو كليهما.
3. التعامل مع التغيير إلى نموذج محتوى العنصر.
حدث شائع عند إنشاء نسخة جديدة من مخطط شمل هو تغيير محتوى العنصر. (التعبير الفني هو: "تغيير نموذج المحتوى للعنصر")
على سبيل المثال، في عنصر الإصدار 1، قد يكون العنصر & لوت؛ لوكاتيون> قد تم تضمينه على أنه يتكون من & لوت؛ لات> و & لوت؛ لون> بينما في الإصدار 2 قد تكون محتوياته & لوت؛ x> و & لوت؛ y>.
لنفترض أن أحد التطبيقات يتلقى وثيقة مثيل يتوافق مع أحدث نسخة من المخطط. ودعونا نفترض أن التطبيق لا يزال مشفرة إلى الإصدار السابق من المخطط. تطبيق يوزع من خلال وثيقة مثيل ويصل، على سبيل المثال، في & لوت؛ الموقع> عنصر. كيف سيعترف التطبيق بأن نموذج المحتوى في الموقع قد تغير؟
سيكون من المفيد إذا كان التطبيق يمكن استشارة محلل: "ما هو نوع (نموذج المحتوى) من & لوت؛ الموقع>؟" إذا كان النوع ليس واحدا أنه يتوقع ثم التطبيق يجب أن تقرر كيفية المضي قدما.
كيف يمكننا تسهيل تطبيق في التعرف على نوع العنصر؟ وهذا هو، كيف يمكننا تمكين التطبيقات لتحديد نوع كل عنصر تواجهه؟ الإجابة: يجب تصميم مخطط شمل لتوفير معلومات النوع الصريح.
التوصية 3: لتيسير تطبيق في الاعتراف بأن محتوى العنصر قد تغير، لا تستخدم أنواع مجهولة المصدر. بدلا من ذلك، استخدم الأنواع المسماة.
مثال. لا تصمم مخططك على النحو التالي:
ما هو نوع الموقع؟ الجواب: هو مجهول. لم يتم تصميم هذا المخطط لتسهيل تطبيق في الحصول على معلومات النوع.
بدلا من ذلك، تصميم المخطط الخاص بك مثل هذا: ما هو نوع الموقع؟ الإجابة: النوع المسمى، لوكاتيونتيب-x_y_version. وبالتالي، تم تصميم هذا المخطط لتسهيل تطبيق في الحصول على معلومات النوع.
لنفرض أن مصمم مخطط يتبع التوصية 3 ويستخدم دائما أنواع اسمه. سيؤدي هذا إلى تمكين التطبيقات من الاستعلام عن محلل لمعلومات النوع، على سبيل المثال، "ما هو نوع & لوت؛ لوكاتيون>؟" سيجيب المحلل ب: "النوع هو لوكاتيونتيب-x_y_version". إذا كان هذا هو النوع الذي لم يتوقع التطبيق (أي لم يتم ترميزه لفهمه) فسيتخذ الخطوات المناسبة (كما هو موضح أعلاه).
لنستمر في المثال & لوت؛ لوكاتيون>. أعلاه رأينا الدافع لاستخدام أنواع اسمه - فإنه يتيح تطبيق بسهولة اكتشاف نموذج المحتوى عنصر. وبطبيعة الحال، إذا تم إنشاء نسخة جديدة من المخطط و & لوت؛ الموقع> الصورة يتم تغيير نوع ولكن يتم إعطاء النوع الجديد نفس اسم النوع القديم، ثم يهزم الغرض الكامل من نوع المعلومات. وهذا يقودنا إلى التوصية التالية:
التوصية 4: إذا قمت بتغيير نوع عند إنشاء إصدار جديد من مخطط ثم إعطاء نوع اسم مختلف.
مثال. لنفترض أنه في الإصدار 1 من المخطط & لوت؛ لوكاتيون> يحتوي على محتوياته: & لوت؛ لات> و & لوت؛ لون>. يعلن المخطط هذا النوع المحدد:
افترض الآن أنه في النسخة 2 من المخطط يتم تغيير محتويات & لوت؛ لوكاتيون> إلى & لوت؛ x> و & لوت؛ y>. من المهم إعطاء اسم جديد لنوع الموقع:
وبالتالي، إذا كان تطبيق الإصدار 1 يتلقى وثيقة مثيل الإصدار 2 ثم، عندما ينقسم إلى عنصر & لوت؛ الموقع>، فإنه سيكون قادرا على التعرف بسهولة أن & لوت؛ الموقع> الصورة محتوى النموذج قد تغير (قد تغير من لوكاتيونتيب إلى لوكاتيونتيب-x_y_version).
3.b توطين نوع التغييرات.
لنفترض أن العنصر & لوت؛ لوكاتيون> متداخل ضمن عنصر & لوت؛ إيركرفت>، على سبيل المثال،
من الناحية الفنية، تغيرت محتويات & لوت؛ الطائرات منذ تغير محتويات & لوت؛ لوكاتيون>. هل يجب تغيير اسم النوع & لوت؛ الطائرات؟ الجواب: لا. والسبب هو أننا نريد للحد من التغييرات. وهذا هو، ونحن نريد تطبيق لرؤية العديد من العناصر المألوفة وأنواع ممكن. نوع الطائرة نوع مألوف. لا يزال لديه محتوياته عنصر & لوت؛ الموقع>. نحن نريد الحفاظ على هذه الألفة.
التوصية 5: تغيير اسم نوع العنصر فقط إذا تغير مضمونه المباشر.
3.c استخدام سمة الإصدار.
سوف تجد التطبيقات أنه من المفيد أن يكون مؤشرا على ما إذا كان يمكن أن نتوقع التغييرات لأنها تعالج وثيقة مثيل. يمكن تحقيق ذلك باستخدام سمة إصدار على عنصر الجذر.
لاحظ أن هذا هو ما يفعله زسلت. بما أن تقنية زسلت قد تم ترحيلها إلى إصدار جديد، تشير مستندات المثيل (أي مستندات زسلت) إلى الإصدار الذي يتم استخدامه مع سمة الإصدار على العنصر الجذر.
التوصية 6: استخدام سمة إصدار على عنصر الجذر. إذا كانت وثيقة المثيل وثيقة مركبة - أي تجميع شظايا شمل - ثم ضع سمة إصدار على جذر كل جزء.
4. تأثير عناصر المراوغة.
قد يؤدي إصدار جديد من المخطط إلى إجراء تغيير بسيط مثل إعادة ترتيب محتويات عنصر ما. على سبيل المثال، في النسخة 1 مخطط قد يكون الترتيب A، B، C، على سبيل المثال،
في النسخة 2 المخطط يمكن تغيير الترتيب إلى B، C، A، على سبيل المثال،
إذا تم ترميز تطبيق لتوقع ترتيب معين من البيانات ثم النسخة الجديدة من مخطط كسر التطبيق. لتجنب هذا التطبيق يجب أن لا تعتمد على ترتيب معين من البيانات. يجب تحديد موقع البيانات باستخدام العلامات.
التوصية 7: ينبغي أن تستخدم التطبيقات أسماء الوسم لتحديد البيانات في وثائق معينة. يجب تصميم التطبيقات لتوقع تغيير ترتيب العلامات.
5. تأثير إزالة عنصر أو سمة.
قد يؤدي إنشاء إصدار جديد من مخطط شمل إلى إزالة عنصر أو سمة. النظر في أحد التطبيقات التي لم تتم ترقيتها إلى الإصدار الجديد، ويتلقى وثيقة مثيل يتوافق مع الإصدار الجديد. يجب أن يقرر التطبيق ما إذا كان عدم وجود العنصر أو السمة كارثية أو ما إذا كان يمكن أن يعيش بدون المعلومات. اإلجراء املتخذ هو تطبيق خاص) وهو خارج نطاق هذه الورقة (.
6. تأثير إضافة عنصر أو سمة.
قد يؤدي إنشاء إصدار جديد من مخطط شمل إلى إضافة عنصر أو سمة. النظر في أحد التطبيقات التي لم تتم ترقيتها إلى الإصدار الجديد، ويتلقى وثيقة مثيل يتوافق مع الإصدار الجديد. يجب أن يقرر التطبيق ما يجب القيام به مع معلومات إضافية. ومرة أخرى، ما هو الإجراء الذي يتم اتخاذه هو تطبيق معين.
ما يجب القيام به عند كسر التطبيق.
ستساعد التوصيات المذكورة أعلاه على تخفيف الكسر بسبب تغييرات المخطط. ومع ذلك، فإنها لا تضمن أن التطبيقات لن كسر. قد يتلقى تطبيق قديم مثيل جديد يفتقد معلومات حاسمة، أو قد تغير نموذج المحتوى لعنصر حاسم إلى نوع لا يمكن فهمه ديناميكيا.
لتوقع مثل هذه الأحداث سيكون من المفيد لوضع بروتوكول النظام الذي يحدد الإجراءات التي ينبغي اتخاذها من قبل التطبيقات عندما يحدث الكسر. أحد البروتوكولات الممكنة هو تطبيق للرد على المرسل مع رسالة خطأ.
التوصية 8: تحديد بروتوكول على نطاق المنظومة (على سبيل المثال، آلية الإبلاغ عن الأخطاء) ليتم استخدامها عندما يتعذر على التطبيق معالجة وثيقة مثيل تتلقاها من تطبيق آخر.
لتقليل التأثير على مستندات وتطبيقات المثيل الموجودة عند إنشاء نسخ جديدة من مخططات شمل، نقدم التوصيات التالية:
التوصية 1: لتجنب كسر التطبيقات المعرفة مساحة الاسم مع كل إصدار جديد من مخطط شمل استخدام نفس مساحة الاسم لجميع الإصدارات.
التوصية 2: لمنع كسر وثائق المثيل القديمة إعطاء النسخة مخطط جديد اسم ملف مختلف أو موقع ورل مختلف أو كليهما.
التوصية 3: لتيسير تطبيق في الاعتراف بأن محتوى العنصر قد تغير، لا تستخدم أنواع مجهولة المصدر. بدلا من ذلك، استخدم الأنواع المسماة.
التوصية 4: إذا قمت بتغيير نوع عند إنشاء إصدار جديد من مخطط ثم إعطاء نوع اسم مختلف.
التوصية 5: تغيير اسم نوع العنصر فقط إذا تغير مضمونه المباشر.
التوصية 6: استخدام سمة إصدار على عنصر الجذر. إذا كانت وثيقة المثيل وثيقة مركبة - أي تجميع شظايا شمل - ثم ضع سمة إصدار على جذر كل جزء.
التوصية 7: ينبغي أن تستخدم التطبيقات أسماء الوسم لتحديد البيانات في وثائق معينة. يجب تصميم التطبيقات لتوقع تغيير ترتيب العلامات.

No comments:

Post a Comment