سؤال

لنفترض أنك تكتب تطبيقًا يجب أن ينفذ بروتوكول HTTP.البروتوكولات معقدة للغاية وقد تسمح بعدة أوامر اعتمادًا على مرحلة المعاملة التي تمر بها.

على سبيل المثال، انظر إلى SMTP.يجب أن يلقي خادم SMTP خطأ إذا تم إرسال أمر "البيانات" قبل استلام "rcpt" و"البريد".

سؤالي هو:ما هي أفضل طريقة للتعامل مع البروتوكولات مثل هذه في التعليمات البرمجية؟هل هناك أي أنماط تصميم تتعلق بهذا؟

يحرر:يتعلق هذا السؤال بالنظرية الكامنة وراء تنفيذ البروتوكولات.أدرك أن استخدام المكتبة هو أفضل أسلوب عملي.

هل كانت مفيدة؟

المحلول

آلات الدولة

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

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

نصائح أخرى

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

وfluffels @

وزيد شو (مؤلف هجين) يوافق معك . انه يستخدم راجل .

وأنا أتفق مع a28، فإن أفضل طريقة هي إما:

  • استخدم المكتبة التي تنفذ خادم البروتوكول
  • اكتب تطبيقك كامتداد لخادم موجود (على سبيل المثال.امتداد خادم الويب عبر IIS، وApache APIs، وما إلى ذلك، وSendmail Milter، وما إلى ذلك) أو
  • قم بتعديل خادم موجود لإجراء مكالمات RPC لتطبيقك أثناء تلقيه الطلبات.

من المحتمل أن تؤدي كتابة تطبيقك الخاص للبروتوكول إلى تنفيذ خلل مع مشاكل في قابلية التشغيل البيني.

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

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