أليس الموارد الموجهة حقا وجوه المنحى?

StackOverflow https://stackoverflow.com/questions/152871

  •  02-07-2019
  •  | 
  •  

سؤال

عندما كنت تفكر في ذلك ، لا بقية نموذج يجري الموارد الموجهة تختزل إلى كونها وجوه المنحى (مع تقييد وظائف الاستفادة HTTP قدر الإمكان)?

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

تحديث: هنا تفاصيل أكثر تحديدا:

  1. بقية الموارد يعادل العام الطبقات.دروس خاصة/الموارد هي ببساطة غير المكشوفة.
  2. موارد الدولة ما يعادل الدرجة الطرق العامة أو المجالات.طرق خاصة/الميادين/الدولة هو ببساطة لا يتعرض (هذا لا يعني انه ليس هناك).
  3. في حين أنه من المؤكد أن بقية لا يحتفظ العميل المحددة الدولة عبر الطلبات ، لا الاحتفاظ موارد الدولة عبر جميع العملاء.الموارد لديك الدولة بنفس الطريقة الطبقات الدولة.
  4. بقية الموارد عالميا تحديدها بشكل فريد من URI في بنفس الطريقة التي خادم الكائنات على الصعيد العالمي فريد المحددة بواسطة قاعدة البيانات الخاصة بهم عنوان الجدول اسم المفتاح الأساسي.منح ليس هناك (بعد) URI لتمثيل هذا ، ولكن يمكنك بسهولة بناء واحد.
هل كانت مفيدة؟

المحلول

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

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

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

في وجوه التوجه ، لا يوجد مفهوم عالمي وجوه الهوية--الأجسام إما على الهوية من عنوان الذاكرة في أي لحظة معينة ، إطار محدد UUID ، أو من قاعدة البيانات الرئيسية.في بقية جميع الموارد التي تم تحديدها مع URI و لا تحتاج إلى أن تكون موجودة أو التخلص منها-أنها موجودة دائما في سحابة ما لم يستجيب الملقم مع 404 لم يتم العثور على أو 410 ذهب, في whch حال كنت أعرف أنه لا يوجد الموارد مع أن URI.

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

نصائح أخرى

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

OO يوفر وسيلة لوصف بقية المفاهيم.هذا لا يعني أن بقية نفسها تطبق OO.

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

كائنات حزمة الدولة والوظيفة معا.الموارد-التوجه نحو صراحة النمذجة الدولة(البيانات) ، الحد من وظيفة محددة مسبقا الأفعال مع العالمي دلالات (في حالة HTTP, على/وضع/POST/حذف) ، و ترك بقية المعالجة إلى العميل.

لا يوجد أي ما يعادل هذه المفاهيم في وجوه التوجه العالمي.

إلا إذا كانت الكائنات DTOs (نقل البيانات الكائنات) - منذ كنت لا يمكن أن يكون حقا سلوك الآخرين من الثبات.

نعم, بالتوازي مع كائن التوجه هو الصحيح.

الشيء هو أن معظم webservices (راحة, راحة, الصابون,..) يمكن تمرير المعلومات في شكل من الكائنات ، لذلك ليس هذا ما يجعلها مختلفة.الصابون من شأنه أن يؤدي إلى عدد أقل من الخدمات مع المزيد من الطرق.بقية من شأنه أن يؤدي إلى المزيد من الخدمات (1 لكل نوع المورد) مع عدد قليل من المكالمات لكل منهما.

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

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

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

هناك علاقة وثيقة -- بقية التحركات الكائنات -- ولكن اقول انهم نفس يقلل من الكائنات السلبي مجموعات من القطع مع الأساليب.

الراحة ليست فقط حول الكائنات ، كما حول خصائص ::طلب post /المستخدمين/جون/phone_number مع رقم هاتف جديد يتم إضافة كائن جديد ، الإعداد لها خاصية كائن المستخدم 'جون'

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

بالتأكيد انها ليست 1:1 مباراة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top