Thursday 15 March 2018

بيزتالك استراتيجية الإصدار


بيزتالك هامش.


حكايات من الحدود التكامل:


"كيف يأتي عندما لا أحد يعرف ولا معنى له، أنها تأتي إلينا؟"


lunedì، جينايو 10، 2018.


إستراتيجية إصدار بيزتالك (3/4)


الإصدارات.


لذلك كل مشكلة يبدو بسبب حقيقة أن أورشيستراشيون يقترن بإحكام مع أنواع تمثل مخططات رسالة وبالتالي فإنها & # 8217؛ سوف تفشل في تنفيذ إذا تغذى مع نوع خاطئ.


في الواقع نحن & # 8217؛ لقد خفضت مشكلة استراتيجية بيزتالك الإصدار إلى الإصدار العادي واحد:


لقد قمنا بنشر تطبيق (أورشستراشيون) أنواع المراجع الواردة في تجميع آخر (مخططاتنا، v1.0.0.0). لقد نشرنا نسخة جديدة من هذا التجميع المشار إليه (v1.0.0.1). سوف يستمر تطبيقنا للعمل تتأثر عند تلقي 1.0.0.1 أنواع بدلا من 1.0.0.0؟


في الواقع، كما هو موضح هنا،


يتم تسجيل النسخة المحددة للتجميع وإصدارات التجميعات التابعة في بيان التجميع. سياسة الإصدار الافتراضي لوقت التشغيل هو تشغيل التطبيقات فقط مع الإصدارات التي تم بناؤها واختبارها مع.


لذلك يبدو أن الجواب لا يبدو إلا، واستمر في قراءة:


ما لم يتم تجاوزها بواسطة سياسة الإصدار الصريح في ملفات التكوين (ملف تكوين التطبيق وملف سياسة الناشر وملف تهيئة مسؤول الكمبيوتر).


لذلك هناك & # 8217؛ s طريقة: افتراضيا سوف تعطل تحطم (لأن تلقي نوع غير متوقع) ولكن يمكننا تجاوز هذا السلوك ببساطة عن طريق إعلان صراحة سياسة الإصدار!


اقترحت الصفحة أعلاه 3 مقاربات، دعنا ندرسها بالتفصيل:


ملف تكوين التطبيق.


يتكون هذا النهج من وضع توجيهات إعادة توجيه مباشرة داخل ملف تكوين التطبيق.


وهذا يعني أننا يجب أن نضع إعادة توجيهنا من 1.0.0.0 إلى 1.0.0.1 مباشرة داخل الملف BTSNTSvc. exe. config.


لا أريد أن الفوضى مع بيزتالك ملف تكوين التطبيق وأنه من الخطأ حتى من وجهة نظر منطقية للعرض: ويعتقد هذا النوع من إعادة توجيه لمطوري التطبيقات (في هذه الحالة هي مجموعة منتجات بيزتالك) إلى تأكيد صراحة (في تكوين التطبيق) أن البرنامج سوف تعمل مع هذه التجميعات إعادة توجيه الإصدار. ولكن أنا & # 8217؛ لم يتم تطوير بيزتالك سيرفر، أنا & # 8217؛ لقد وضعت ببساطة بعض المكونات المستضافة في بيزتالك سيرفر.


لذلك أنا لا & # 8217؛ ر مثل هذا النهج كثيرا.


مسؤول تكوين ملف الكمبيوتر.


ويتكون هذا النهج من وضع توجيهات إعادة توجيه داخل ملف تكوين الجهاز.


إذا كان ذلك ممكنا أنا أحب هذا النهج أقل من سابقتها لنفس الأسباب:


إذا كنت دون & # 8217؛ ر ترغب في الفوضى مع بيزتالك ملف التكوين يمكنك أن تتخيل كم أكره أن الفوضى مع Machine. config كله.


ومن وجهة نظر منطقية، يعتقد هذا النوع من إعادة التوجيه لمديري نظام الجهاز و أنا & # 8217؛ م لا أيضا، أنا & # 8217؛ م مجرد مطور الذي يحتوي على مكونات استضافت على هذا الجهاز.


ملف سياسة الناشر.


هذا النهج، أكثر تعقيدا قليلا من السابقتين، يتكون في إنشاء ملف تجميع سياسة التوأم الذي، عند نشرها جنبا إلى جنب مع التجمع الأصلي، تمكين إعادة التوجيه.


هذا هو أفضل نهج للمطور بيزتالك: يتم استخدامه من قبل مطور مكون (ونحن & # 8217؛ إعادة مطوري المكونات) أن أذكر أن مكون متوافق مع نسخة أخرى من نفسه (وهذا هو بالضبط ما نحن & # 8217؛ إعادة محاولة القيام به).


فهم كيفية إنشاء ملف نهج الناشر هو إيقاف الموضوع لهذا (طويل جدا) آخر، ولكن وضعت على مسن رمز معرض نص بويرشيل التي يجب أن تساعدك على إنتاج ملفات سياسة الناشر الخاص بك.


ولذلك، فإن سياستي الخاصة بتخطيط الإصدار المنطقي هي التالية:


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


عملية بناء بلدي بناء القطع الأثرية المخطط تغيرت حديثا تنتج أيضا ملف سياسة الناشر (باستخدام نسخة معدلة قليلا من البرنامج النصي أنا مرتبط أعلاه).


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


بعد ذلك وضعت في غاك ملف سياسة الناشر المقابلة المخططات الجديدة.


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


تعليق واحد:


يتم كسر الارتباط إلى البرنامج النصي بويرشيل الخاص بك، يمكنك الرجاء نشر السيناريو على مكان جديد.


بيزتالك هامش.


حكايات من الحدود التكامل:


"كيف يأتي عندما لا أحد يعرف ولا معنى له، أنها تأتي إلينا؟"


venerdì، جينايو 07، 2018.


إستراتيجية إصدار بيزتالك (1/4)


كما قال في الوظيفة السابقة بيزتالك إدارة الحل يمكن أن يكون مهمة صعبة نظرا لتعقيد عملية تحديث القطع الأثرية بيزتالك.


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


فلنجعل الحالة التالية غير افتراضية:


I & # 8217؛ في أورشيستراشيون (الواردة في التجميع ProcessA. orchestrations. dll) الذي يستخدم خريطة (المضمنة في ProcessA. maps. dll) الذي يستخدم بعض المخططات (الواردة في System1.schemas. dll و System2.schemas. dll) .


كما ترون، I & # 8217؛ اتبعت أفضل الممارسات لفصل القطع الأثرية بيزتالك مختلفة في مختلف الجمعيات وتعزيزه قليلا (مزيد من القطع الأثرية للعمليات والأنظمة) للكشف بسهولة عن تأثير تعديلاتنا المستقبلية على المشروع.


لنفترض أننا بحاجة إلى تنفيذ عملية أخرى بين الأنظمة نفسها.


ما نحتاج إلى القيام به هو إضافة مخطط جديد إلى System1.schemas. dll لتمثيل الرسائل الجديدة التي تم تبادلها في العملية الثانية.


حسنا، لتحديث System1.schemas. dll نحن بحاجة إلى:


نظرا لأنك تعمل على تحديث مخطط دل، يجب إزالته. منذ يتم استخدام المخطط على الخرائط تحتاج إلى إزالة الخرائط التي تستخدمه (ProcessA. maps. dll). منذ يتم استخدام الخرائط في أورشيستراشيون تحتاج إلى إزالة أورشيستراتيونس أيضا (ProcessA. orchestrations. dll) لإزالة تجميع أورشستراشيون تحتاج إلى إلغاء إلغاء كل التذييل الواردة فيه. لإلغاء إلغاء كل تنسيق، يجب إنهاء كل مثيل خدمة موجود يشير إليها. إذا كان لا بد من أورشستراشيون إلى منفذ المادية تحتاج إلى إيقاف & أمب؛ ونينليست كل منفذ ذات الصلة. إذا تم استخدام الخرائط في منفذ أنت & # 8217؛ سوف تحتاج إلى إزالة الخرائط يدويا من كل منفذ حيث يتم استخدامه. وأخيرا يمكنك نشر المخطط. ولكن بعد أن تحتاج إلى إعادة نشر أيضا خرائط قمت بإزالتها (ProcessA. maps. dll) ولكن بعد أن تحتاج إلى إعادة نشر أيضا أورشيستراتيونس قمت بإزالتها (ProcessA. orchestrations. dll) يجب أن نتذكر أن تجند مرة أخرى تزامن. يجب أن نتذكر أن تجنيد / بدء تلقي / إرسال الموانئ تحتاج إلى إعادة تعيين الخرائط على استقبال / إرسال الموانئ التي تمت إزالتها.


سلسلة طويلة طويلة من الخطوات خاصة بالنظر إلى أنني اضطر إلى إعادة نشر بروسيسا تماما عندما أعلم أنه ليس من الضروري لأن التعديل الوحيد الذي فعلته في التجمع المخطط هو إضافة مخطط جديد ترك لم يمسها القديم واحد & # 8230؛ وبعبارة أخرى كانت التغييرات بلدي متخلفة ولكن افتراضيا بيزتالك يفترض أنها & # 8217؛ وليس وهذا يسبب المشكلة.


غير عادل بعض الشيء.


وأنا أعلم، أعلاه أنا طوعا حذفت بضعة أشياء من شأنها أن تجعل الحياة أسهل وأنا & # 8217؛ م الذهاب إلى علاج هنا إضافة أيضا أسباب لماذا لا & # 8217؛ ر النظر لهم حل على الإطلاق.


استخدام & # 8220؛ تعديل & # 8221؛


إذا قمت بتحديد مورد من وحدة تحكم إدارة بيزتالك واضغط على مفتاح الفأرة الأيمن، فستشاهد & # 8220؛ تعديل & # 8230؛ & # 8221؛ صوت في القائمة المنبثقة.


ينقلنا هذا الخيار إلى نافذة حوار متطابقة تقريبا مع & # 8220؛ إضافة & # 8211؛ & غ؛ نيو بيزتالك أسمبلي & # 8230؛ & # 8221؛


ولكن مع اختلاف: إذا قررنا & # 8220؛ تحديث & # 8221؛ التجمع مع واحد جديد، أصبح بيزتالك أكثر ذكاء وسوف تتيح لنا نشر واحدة جديدة دون إزالة القديم. لذلك، في السيناريو العلوي، كل قائمة من الخطوات الأولى المبلغ عنها يمكن تجنبها ببساطة باستخدام تعديل بدلا من الكلاسيكية & # 8220؛ إضافة & # 8211؛ & غ؛ نيو بيزتالك أسمبلي & # 8211؛ & غ؛ أوفيروريت & # 8221؛


لماذا قرر فريق بيزتالك لتنفيذ مثل هذا السلوك المختلفة لهذين الخيارين متطابقة تقريبا (إضافة مع الكتابة وتعديل) هو لغوي ولكن طالما أعرف أن الفرق هناك أنه & # 8217؛ ق طيب بالنسبة لي.


حتى حل المشكلة؟


لا، بالتأكيد لا ولاثنين (إمهو جيدة) الأسباب:


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


السبب الثاني يحتاج إلى تفسير أفضل: دعنا نقول عن المشروع أعلاه قمت بتعريف تطبيقات مختلفة مثل كومون (تحتوي على كافة المكونات الشائعة مثل المخططات ووظائف المساعد وما إلى ذلك) بروسيسا (التي تحتوي على أورشستراتيونس والموانئ والخرائط المتعلقة بروسيسا ) وما إلى ذلك وهلم جرا.


ومن الواضح أن بروسيسا التطبيق سوف مرجع التطبيق المشترك وعندما نحاول تعديل schema. dll في المشتركة (تماما كما فعلنا من قبل عندما جميع العمليات حيث في نفس التطبيق) نحصل على فشل كما هو موضح أدناه.


زيادة إصدار الجمعية.


حل آخر يمكن أن يكون ببساطة لزيادة نسخة التجميع من المخططات دمل تعديل (اسمحوا & # 8217؛ ق يقول من 1.0.0.0 إلى 1.0.0.1).


بيزتالك يسمح جنبا إلى جنب نشر التجميعات (أكثر على هذا في وقت لاحق)، وهذا يمكن أن يكون الحل الذي كنا نبحث عنه:


سوف تستمر بروسيسا لاستخدام 1.0.0.0 نسخة من المخططات في حين أن بروسسب الجديد سوف تستخدم الإصدار 1.0.0.1 الجديد (وبالتالي تحتوي على مخطط جديد)


قد يبدو أن هذا يعمل ولكن عاجلا أو آجلا (إذا كنت تستخدم أورشيستراتيونس) أنت & # 8217؛ سوف تواجه استثناء مماثل.


لفهم لماذا (وعندما) سيتم رفع هذا الاستثناء وكيف يمكننا حل المشكلة مرة واحدة للجميع ونحن بحاجة إلى فحص بيزتالك آلية القرار في العمق.


أفضل الممارسات لتحديث التطبيقات.


في هذه المقالة.


يصف هذا الموضوع أفضل الممارسات التي يجب أن تفكر في استخدامها عند تحديث تطبيقات بيزتالك والتحف.


الإصدارات.


تنفيذ استراتيجية إصدار.


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


تطابق المجموعات في قاعدة بيانات إدارة بيزتالك ومخزن ذاكرة التخزين المؤقت العمومية (غاك)


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


استخدام مدقق الجمعية بيزتالك أداة غاك عن بعد للتحقق من الإصدار.


يتحقق بيزتالك مدقق الجمعية أداة غاك البعيد (BTSAssemblyChecker. exe) إصدارات التجميعات التي تم نشرها إلى قاعدة بيانات إدارة بيزتالك والتحقق من أنها مسجلة بشكل صحيح في غاك على كافة أجهزة الكمبيوتر بيزتالك سيرفر. يمكنك استخدام هذه الأداة للتحقق من أن كافة التجميعات التي تحتوي على القطع الأثرية لتطبيق بيزتالك معينة مثبتة على كافة العقد بيزتالك. الأداة مفيدة بشكل خاص بالتزامن مع استراتيجية إصدار ثابت للتحقق من تثبيت الإصدار الصحيح من مجموعة من التجميعات على كل جهاز بيزتالك، وخصوصا عندما يتم استخدام نهج نشر جنبا إلى جنب.


تتوفر الأداة مع وسائط تثبيت بيزتالك سيرفر في سوبورت \ تولس \ x86 \ BTSAssemblyChecker. exe.


يجب استخدام منتج إصدار، مثل ميكروسوفت فيسوال StudioВ® تيم فونداتيون سيرفر 2018، لتتبع وإصدار التحف بيزتالك. لمزيد من المعلومات حول ميكروسوفت فيسوال StudioВ® فريق الأساس سيرفر 2018 راجع ميكروسوفت فيسوال StudioВ® فريق خادم الأساس 2018 (go. microsoft/fwlink/؟LinkId=210637)


عامل التحف في تطبيقات بيزتالك متعددة.


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


تحديث التطبيق.


استخدام ملف. مسي لتحديث تطبيق.


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


إذا قمت بتحديث تجميع بيزتالك، يجب أن تتوقف، ونينليست، إعادة التعيين ثم قم بتشغيل التحف بيزتالك يدويا قبل وبعد استيراد وتثبيت ملف. مسي. لمزيد من المعلومات حول تحديث مجموعة بيزتالك راجع قائمة التحقق: تحديث الجمعية.


إذا قمت بترقية تجميع بيزتالك سيرفر باستخدام إصدار جنبا إلى جنب، سيكون لديك لتنفيذ الخطوات اليدوية قبل وبعد استخدام ملف. مسي. للحصول على مزيد من المعلومات حول الخطوات اليدوية المطلوبة، راجع قائمة التحقق: تحديث تطبيق باستخدام إصدار جنبا إلى جنب.


تحديث الجمعية.


زيادة إصدار التجميع في بيئة إنتاج.


إذا كنت تقوم بتحديث التجميع الذي يتم تشغيله في بيئة إنتاج، يجب دائما زيادة رقم إصدار التجميع.


حدث غاك مع مجموعة محدثة.


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


إعادة تشغيل مثيل المضيف بعد تحديث التجميع.


إذا تم تحديث مجموعة بيزتالك في تطبيق موجود قد تحتاج إلى إعادة تشغيل مثيلات المضيف التغييرات نافذة المفعول. إعادة تشغيل مثيل المضيف توقف كافة التطبيقات الأخرى التي يتم تشغيلها على مثيل المضيف.


جار تحديث قطعة أثرية.


إلغاء نشر قطعة أثرية تابعة قبل قطعة أثرية أنه يعتمد على.


إذا كنت تنشر قطعة أثرية تعتمد عليها قطعة أثرية أخرى، يجب إلغاء نشر الأداة الأثرية أولا.


إذا لم تقم بنشر الأداة المساعدة التابعة أولا، فستعرض وحدة تحكم إدارة بيزتالك سيرفر تحذيرا وتمنعك من عدم نشر القطع الأثرية في الترتيب غير الصحيح.


لا تتوقف عن قطعة أثرية يعتمد عليها تطبيق آخر.


إذا قمت بإيقاف قطعة أثرية في تطبيق واحد (والذي قد ينتج عن إيقاف التطبيق بالكامل) يعتمد عليه تطبيق آخر، فلن يعمل التطبيق التابع بشكل صحيح. لمزيد من المعلومات حول إيقاف أحد التطبيقات، راجع كيفية بدء تشغيل تطبيق بيزتالك وإيقافه (go. microsoft/fwlink/؟LinkID=154729).


إضافة مرجع إلى تجميع قبل نقل قطعة أثرية.


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


تحديث الارتباطات.


أتمتة إعادة تشكيل الروابط.


عندما تقوم بتحديث تجميع في أحد التطبيقات، غالبا ما يتم الكتابة فوق الارتباطات الخاصة به أو قد لا تكون الجمعية ملزمة على الإطلاق، مما يجبرك على إعادة تكوين الارتباطات يدويا. يمكنك أتمتة هذه العملية باستخدام ملف ملزم. إذا كنت تقوم بتحديث نفس الإصدار التجميعي، يمكنك أولا تصدير ملف ملزم للتجميع ثم قم بتحديث التجميع ثم قم باستيراد التجميع إلى التطبيق ثم أعد تطبيق الارتباطات السابقة عن طريق استيراد ملف الربط. إذا كنت تقوم بتحديث تجميع مع إصدار أحدث، يمكنك تصدير ملف ملزم وتحرير الملف لتعكس إصدار التجميع الجديد واستيراد التجميع الجديد في التطبيق ثم قم بتطبيق الارتباطات الجديدة عن طريق استيراد ملف الربط. لمزيد من المعلومات حول ملفات الربط، راجع كيفية تصدير ارتباطات إلى ملف ملزم. لمزيد من المعلومات حول تحرير ملف ارتباط، راجع تخصيص ملفات الربط (go. microsoft/fwlink/؟LinkID=155000).


بدء أو إيقاف أحد التطبيقات.


إيقاف تطبيق لتحديث القطع الأثرية.


إذا كنت لا تتوقف عن تطبيق لتحديث القطع الأثرية في التطبيق، تحتاج إلى إيقاف النشر مؤقتا إلى قاعدة بيانات مساجيبوكس عن طريق تعطيل نقاط النهاية، ووقف وإلغاء إدراج أي مثيلات قيد التشغيل. لإيقاف مثيلات التشغيل وإلغاء إدراجها، يجب أن تتم استعادة جميع الحالات المجففة أو المعلقة تماما أو إكمالها يدويا أو إنهاؤها.


على الرغم من أنه ليس مطلوبا إيقاف تطبيق من أجل تحديث قطعة أثرية أو تثبيت التطبيق، نوصي بأن تتوقف دائما تطبيق عند تحديث قطعة أثرية.


تنفيذ استراتيجية إصدار.


في هذه المقالة.


الإصدار هو فعل تحديث تنفيذ قطعة أثرية وزيادة رقم إصدارها.


قضايا الإصدار العام.


يمكن أن يصبح إصدار تطبيق بيزتالك مشكلة عندما تحتاج إلى تشغيل نسختين من حل بيزتالك جنبا إلى جنب أو إذا لم تتمكن من جدولة وقت توقف تطبيق بيزتالك لنشر إصدار جديد. إذا كنت لا تحتاج إلى تشغيل نسختين من الحل في وقت واحد (على سبيل المثال، إذا لم يكن لديك أورشيستراتيونس طويلة)، فمن المقبول تماما لنشر النسخة القديمة ونشر الإصدار الجديد كاستراتيجية إصدار (لا يوجد إصدار التجميع ). هذه هي استراتيجية إصدار ممكنة، على الرغم من أننا ما زلنا نوصي بزيادة رقم إصدار الملف (لإعلامك بالإصدار الذي تم نشره على خوادم بيزتالك). للحصول على مزيد من المعلومات حول تحديث أحد التطبيقات التي تم نشرها، راجع المرجعية: تحديث الجمعية.


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


إصدار الجمعية.


عند تحديث تجميع، لديك خيار بين ما يلي:


اختيار إصدار التجميع الثابت لعملية تسليم معينة وزيادة رقم إصدار الملف فقط.


زيادة كل من الإصدار التجميعي وإصدار الملف أثناء عملية التطوير.


تتم مقارنة هذه المقاربات في الجدول التالي:


يمكنك اختيار استخدام إصدار التجميع الثابت ونهج إصدار الملف الديناميكي إذا كنت تقوم بتطوير نموذج أو تطوير أي نوع آخر من المشاريع التي لن يتم إصدارها. إذا كنت لا تنوي تسليم التطبيق إلى مستخدم نهائي، يمكنك تبسيط مهام النشر وتقليل التبعيات المكسورة عن طريق تثبيت إصدار التجميع وزيادة رقم إصدار الملف. لتتبع الإصدار، يجب أن تتذكر زيادة رقم إصدار الملف لكل بنية.


إذا كنت تقوم ببناء مشروع سيتم تسليمه إلى مستخدم نهائي، يجب عليك النظر في زيادة رقم إصدار التجميع، واختياريا، تخزين رقم إصدار ملف مفيد. في حين أن هذا النهج يتكبد الجهود الإضافية لتعديل أرقام البناء والتبعيات المرتبطة بها، فإنه يضمن أن يتم استخدام أحدث الإصدارات من التجميعات الخاصة بك. باستخدام النصوص البرمجية للنشر الآلي، يمكنك تقليل تأثير الإصدار. لعرض نماذج النشر راجع "نشر التطبيقات" (بيزتالك سيرفر سامبلز فولدر) (go. microsoft/fwlink/؟LinkId=155134) في تعليمات بيزتالك سيرفر.


يجب عليك اختيار آلية الإصدار التي تضمن تسليم الملفات المناسبة والتي تبسط الصيانة والتحسين.


إستراتيجية برمجة تطبيقات ويب أبي.


عند إجراء أي تغييرات في واجهة برمجة التطبيقات، ينبغي أن يكون المستهلك قادرا على متابعة استخدام واجهة برمجة التطبيقات بالطريقة التي كانت تستخدمها قبل إجراء التغييرات. هذا هو المكان الذي الإصدار ضروري. هذه هي الطريقة التي أبي تتطور لإضافة ميزات جديدة له دون كسر الطريقة الحالية لاستهلاكه. في رأيي، هذا ليس هو نفسه نسخة التجميع الجديد أو بناء جديد. أيا كان التغيير الذي لا يمكن للمستهلك أن يرى في أبي، لا ينبغي أن تتطلب الإصدار الجديد من أبي. يجب ألا يتم طرح الإصدار الجديد من واجهة برمجة التطبيقات إلا عند "كيفية استهلاك تغييرات الجزء". مثال: عندما يتغير المورد أو التوقيع.


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


النهج رقم 1: إصدار أوري.


سنقوم بإضافة رقم الإصدار إلى أوري، ثم خرائط أوري هذه الطريقة على وحدة التحكم هذه.


من السهل جدا لتنفيذ. يمكننا أن نفعل ذلك ببساطة باستخدام سمة التوجيه عبر الطريقة.


مع النهج أعلاه نحن كسر واحد من القيود. يمثل معرف الموارد المنتظم (أوري) المورد وطالما أن المورد لا يتغير، فلا ينبغي تغيير عنوان أوري كذلك. بطبيعة الحال، لا ينبغي أن يبقى أوري لنفس المورد نفسه؟ إذا كان الإصدار الجديد من المورد نفسه يتغير، فإن أوري الجديد يجب أن يكون النهج الصحيح. قد ترغب أيضا في جعلها متاحة في عنوان ورل مختلف تماما. وفي هذا السياق، فإن الصيغة الجديدة للموارد هي مورد مختلف.


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


النهج رقم 2: التفاوض على المحتوى.


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


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


في هذا النهج، من الصعب قليلا لتصفح أبي في المتصفح. لاستدعاء أسلوب أبي، يجب أن يتم بناء الطلب مع رأس قبول مناسب.


النهج رقم 3: رأس طلب مخصص.


النهج الثالث هو رأس مخصص إضافة إلى الطلب الذي يحتوي على رقم الإصدار. انها نوع من نهج # 2 ولكن من دون نوع المحتوى المخصص.


هنا يجب أبي قراءة رأس مخصص ومن تلك المعلومات تنفيذ الإصدار الصحيح من التعليمات البرمجية.


فمن الصعب قليلا لتصفح ويجب أن يتم إنشاء الطلب مع رأس طلب مخصص.


ويمكن استخدام النهج المذكورة أعلاه في الجمع أيضا. مثل، يتم طلب نسخ رئيسية من خلال أوري والنسخ الثانوية مطلوبة من خلال رأس الطلب.


الأسلوب رقم 4: إصدار معلمة أوري.


هذا هو واحد واضح أنني لا أرى الكثير من الناس باستخدام:


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


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


أمثلة تطبيق أبي ويب أبي:


النهج رقم 1:


وببساطة هذا، نقوم فقط بتغيير النسخة في سمة التوجيه. لذلك أود أن تولي المزيد من الاهتمام لنهجين آخرين محتوى مخصص نوع ورأس طلب مخصص.


النهج رقم 2:


عندما يطلب أحد المستهلكين تمثيل الموارد لعنوان ورل معين، يجب أن نقرأ طلب نوع المحتوى المخصص. يمكننا قراءة في طريقة أبي باستخدام رؤوس الطلبات ونحن تنفيذ التعليمات البرمجية الصحيحة اعتمادا على ما نجد في رأس، ولكن القيام بذلك داخل طريقة أبي ليست أفضل طريقة لأن الطلب ينتهي في نفس وحدة تحكم وطريقة و ثم علينا أن معالجته.


يتم تنفيذ هذا النهج بشكل أفضل من خلال سمات مصنع مسار مخصص وقيد التوجيه المخصص. في القيد المخصص، سنكون قادرين على التحقق من رأس قبول أو رأس طلب مخصص ونحن نذهب لتنفيذ كلا النوعين من الإصدار. ستستخدم سمات "مصنع المسار المخصص" ذلك القيد وسيتاح لكل قيد فرصة لمنع المسار من الطلب المحدد.


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


إذا كان الطلب يطابق منطق القيد لدينا، ثم يسمح الطريق الصحيح آخر يمنع الطريق. لتنفيذ بشكل عام لدي نسخة معدلة من فئة مخصصة "قيود الإصدار".


طريقة أبي ويب بعد تنفيذ الطبقات حول.


مثال لنوع المحتوى المخصص للمنهج # 2 في رأس القبول:


نموذج الحصول على طريقة الإصدار 1 للإصدار باستخدام نوع المحتوى المخصص في الرأس:


(الإصدار 1 استدعاء مثال مشابه للمقاربة # 2 ونهج # 3)


التنفيذ: سيتم استدعاء الطلب مع أبي / التقرير / 1 أوري الإصدار رقم 1.


الآن طلبات مع الإصدار رقم 1 سوف تطابق الطريق أعلاه. كما ذكرنا الإصدار ك # 1 والإصدار الافتراضي، إذا لم يتم تمرير الإصدار في الرأس يتم تنفيذ الإصدار الافتراضي رقم 1.


نموذج جيت الإصدار 2 طريقة للإصدار مع نوع محتوى مخصص في رأس قبول:


التنفيذ: الآن لاستدعاء الإصدار # 2، في رأس طلب مخصص تحديد،


استخدام نفس الحصول على دعوة أوري: أبي / تقرير / 1.


قبول: أبليكاتيون / vnd. ServiceAPIname. v2 + جسون (سيبيسيفي إن أسيبت هيدر نوت إن أوري)


الآن فإنه سيتم الاحتجاج الإصدار # 2 الحصول على الأسلوب.


نموذج الحصول على طريقة الإصدار 1 للإصدار باستخدام رأس طلب مخصص:


التنفيذ: سيتم استدعاء الطلب مع أبي / التقرير / 1 أوري الإصدار رقم 1.


الآن طلبات مع الإصدار رقم 1 سوف تطابق الطريق أعلاه. كما ذكرنا الإصدار ك # 1 والإصدار الافتراضي، إذا لم يتم تمرير الإصدار في الرأس يتم تنفيذ الإصدار الافتراضي رقم 1.


نموذج جيت الإصدار 2 طريقة الإصدار باستخدام رأس طلب مخصص:


التنفيذ: الآن لاستدعاء الإصدار # 2، في رأس طلب مخصص تحديد،


استخدام نفس الحصول على دعوة أوري: أبي / تقرير / 1.


إصدار واجهة برمجة التطبيقات (أبي-فيرسيون): 2 (حدد في عنوان الطلب وليس في عنوان أوري)


الآن فإنه سيتم استدعاء طريقة الإصدار # 2.


يستخدم فاسيبوك و تويتر جزءا من عنوان ورل الذي يأتي قبل تعريف خدمة أبي وقبل تعريف المورد نفسه (على سبيل المثال، مثال / v2.7 /) لأن أحدهم قد يقول أن عنوان ورل بالكامل هو معرف المورد.


ومع ذلك قد يقول البعض أن معرف المورد هو فقط وما يحدث قبل ذلك هو هوست ومعرف خدمة أبي. هو أكثر وضوحا قليلا عند استخدام أبي تويتر: api. twitter / 1.1 / بلوكابك، وهنا هوست = api. twitter، أبي سيرفيس = كتل وإصدار خدمة أبي الذي يأتي قبل تعريف خدمة أبي 1.1.


استنتاج.


جميع مخططات الإصدار هي مشكلة إذا لم يكن هناك ضرورة. الإصدار غير ضروري إذا كان العملاء عدد قليل جدا. على سبيل المثال، فرق مع عميل واحد فقط يصر على نظام الإصدار الذي هو مثير للسخرية. لا ينبغي تغيير نوع المورد بطريقة أن فواصل التوافق الخلفي. لقد رأيت في العديد من المشاريع باستخدام "V1" في عنوان ورل الموارد مثل "V1 / جيتداتا" وأنه لا يتغير إلى "V2". في مثل هذه السيناريوهات الإصدار هو أمر لا لزوم له.


أنا أفضل نهج # 3 & # 8211؛ رأس مخصص لسبب قوي. سأبرر لماذا لا أحب الآخرين. تعتبر علاقات عناوين ورل رائعة للإصدار عندما تنطوي على تغييرات على الموارد والسلوكيات (لنفترض أنك تنتقل من "المستخدم" إلى "العميل" الذي يؤدي الآن إلى عملية إعداد الفواتير والبريد الإلكتروني في النهاية، ولكنه لا يغير بنية المورد نفسه). ولكن ماذا عن إذا كنت بحاجة إلى تغيير شيء ما على طبقة مختلفة، مثل الانتقال من أووث 1.0 إلى أووث 2.0؟ أو كنت تفعل محورا كشركة؟ أو أي شيء آخر لم أفكر حتى الآن؟ أنا لا أحب نهج ورل لأنها ببساطة تفعل شيئا حول تمثيل الموارد حيث رأسية، مرة أخرى، على طبقة أعلى بكثير. آمل أن لا تتغير أبدا إصدار رؤوسنا، ولكن وجود هناك كمعلمة المطلوبة يضمن أننا لن كسر التكامل الذي يفشل في تحديد ما يريدون. الفيسبوك وتويتر فعل ذلك وأنه لم تلقى بشكل جيد من قبل المجتمع المطور. الطلب الأول جدا لدينا أبي يجعل هذه المعلمة المطلوبة واضحة في استجابة الخطأ ومرة ​​واحدة يتم التعامل معها، فإنه لم يفكر مرة أخرى. كما قلت، وكلاء اليوم التعامل معها على ما يرام. لقد قرأت أيضا أننا يمكن إسقاط اتفاقية "X-" ونحن لا نفكر رأسنا العرف سيكون من أي وقت مضى على الطريق إلى كونها مقبولة عالميا.


استخدم رأس هتب مخصصا خاصة عند الحاجة إلى الإصدار على مستوى خدمة أبي وليس على مستوى المورد.


أوصي بتطبيق النهج # 3 الإصدار من خلال رأس طلب مخصص، ونحن لا كسر مبادئ صيانة الموارد والمزايا التي تحدث في إصدار أوري. وبهذه الطريقة، يمكننا دمج الإصدار المدمج في واجهة برمجة التطبيقات على الويب دون مقاطعة المستهلكين الذين يريدون الوصول إلى الإصدارات القديمة. Consumer never faces the complexity of versioning in the URI instead they specify it in request header but more over if they fail to specify the version at least the default version will send the response. Thus, avoids the URI conflicts of unreachable routes.


Library for API versioning support in Microsoft ASP Web API is available as a NuGet package. To install ASP Web API versioning support, run the following command in the Package Manager Console.


PM > Install-Package SDammann. WebApi. Versioning - Version 2.8.0.


Higher versioned GET methods cannot be accessed via browser. Instead it requires a web debugging tool like Fiddler to construct the request header with appropriate API-version number.


This approach can be quite problematic when you are using API Gateways. When you send the “api-version” header, it can cause some misleading to which API exactly you are referring to – the API Service that is your API Gateway (that can be versioned by it’s own) or the web API Service that should get the call from the API Gateway.

No comments:

Post a Comment