نمط محدد موقع الخدمة(بالإنجليزية: service locator pattern) هو نمط تصميم يستخدم في تطوير البرمجيات لتغليف العمليات التي ينطوي عليها الحصول على خدمة ذات طبقة تجريد قوية. يستخدم هذا النمط سجلاً مركزيًا يُعرف باسم «محدد الخدمة» "service locator"، والذي يقوم عند الطلب بإرجاع المعلومات اللازمة لأداء مهمة معينة.[1] يقول مؤيدو النمط إن هذا النهج يبسط التطبيقات القائمة على المكونات حيث يتم أدراج جميع التبعيات بشكل نظيف في بداية تصميم التطبيق بالكامل، وبالتالي جعل حقن التبعية التقليدية طريقة أكثر تعقيدًا لتوصيل الكائنات. يجادل منتقدو النمط أنه نمط مضاد يحجب التبعيات ويجعل اختبار البرمجيات أصعب.[2]
مزايا
- يمكن أن يعمل «محدد الخدمة» بمثابة رابط بسيط لوقت التشغيل. هذا يسمح بإضافة كود في وقت التشغيل دون إعادة تجميع التطبيق، وفي بعض الحالات دون الحاجة إلى إعادة تشغيله.
- يمكن للتطبيقات تحسين نفسها في وقت التشغيل عن طريق إضافة العناصر وإزالتها بشكل انتقائي من محدد الخدمة. على سبيل المثال، يمكن للتطبيق أن يكتشف أن لديه مكتبة أفضل لقراءة صور جيه بيه إيه جي المتاحة من المكتبة الافتراضية، وتغيير السجل وفقًا لذلك.
- يمكن فصل أقسام كبيرة من مكتبة أو تطبيق بالكامل. الرابط الوحيد بينهما يصبح السجل.
- قد يستخدم التطبيق العديد من محددات الخدمة المنظمة التي تم إنشاؤها لوظيفة / اختبار معين. لا يحدد محدد موقع الخدمة صنف ثابت واحد لكل عملية.
- قد يكون الحل أبسط مع محدد موقع الخدمة (ضد حقن التبعية) في التطبيقات ذات التصميم الجيد للمكونات / الخدمة. في هذه الحالات، يمكن اعتبار العيوب ميزات تبعاً لذلك (على سبيل المثال، لا حاجة إلى توفير تبعيات مختلفة لكل صنف واصلاح تكوينات التبعية).
سلبيات
- عندما تكون التبعيات مفقودة (على غرار استخدام حقن التبعية)، يخفي السجل تبعيات الصنف، مما يتسبب في أخطاء في وقت التشغيل بدلاً من أخطاء في وقت التجميع. لكن كل مكتبة يتم تجميعها، قد لا يتم العثور على الصنف الملموس فقط فينتج خطئ برمجي، تعتبر هذه المشكلة مشكلة وقت نشر أكثر من مشكلة محدد خدمة.
- السجل يجعل الكود أصعب للاختبار، نظرًا لأن جميع الاختبارات تحتاج إلى التفاعل مع نفس صنف محدد الخدمة العالمية لتعيين التبعيات المزيفة للصنف الذي ما زال قيد الاختبار. ومع ذلك، يمكن التغلب على ذلك بسهولة عن طريق حقن أصناف التطبيق بواجهة بينية خاصة بتحديد موقع خدمة واحدة. يمكن أن ينفذ المحاكي محاكاة كل واجهة يوفرها محدد الخدمة، لذلك من السهل تبديل التنفيذ الحقيقي بمحاكي.
ملحق: مسرد المصطلحات الإنجليزية
مَسرد المفردات وفق أقسام المقالة
|
المقدمة
|
نمط محدد موقع الخدمة
|
service locator pattern
|
نمط تصميم
|
design pattern
|
لتغليف
|
encapsulate
|
طبقة تجريد قوية
|
strong abstraction layer
|
سجلاً مركزيًا
|
central registry
|
"محدد الخدمة"
|
"service locator"
|
عند الطلب
|
on request
|
بإرجاع
|
returns
|
يبسط التطبيقات القائمة على المكونات
|
simplifies component-based applications
|
ادراج
|
listed
|
بشكل نظيف
|
cleanly
|
لتوصيل الكائنات
|
connecting objects
|
يحجب التبعيات
|
obscures dependencies
|
رابط
|
linker
|
وقت التشغيل
|
run-time
|
إعادة تجميع
|
re-compiling
|
بشكل انتقائي
|
selectively
|
السجل
|
registry
|
العديد من محددات الخدمة المنظمة
|
multiple structured service locators
|
لوظيفة
|
functionality
|
اختبار
|
testing
|
يحدد محدد موقع الخدمة صنف ثابت واحد
|
does not mandate one single static class
|
واصلاح تكوينات التبعية
|
maintain dependency configurations
|
أخطاء وقت التشغيل
|
run-time errors
|
تجميعها
|
compiled
|
الصنف الملموس
|
concrete Class
|
و ينتج خطئ
|
make error
|
مشكلة نشر
|
deployment issue
|
مشكلة محدد الخدمة
|
Service Locator issue
|
صنف محدد الخدمة العالمية
|
same global service locator class
|
لتعيين
|
set
|
التبعيات المزيفة
|
fake dependencies
|
حقن أصناف التطبيق
|
injecting application classes
|
بواجهة تحديد موقع خدمة واحدة
|
single service locator interface
|
تنفيذ
|
implemented
|
المحاكي
|
Simulator
|
انظر أيضًا
المراجع
روابط خارجية
|
---|
إنشائي | |
---|
هيكلي | |
---|
سلوكي | |
---|
وظيفي | |
---|
متزامن | |
---|
معماري | |
---|
توزيع سحابي | |
---|
أخرى | |
---|
كتب | |
---|
أشخاص | |
---|
مجتمعات | |
---|