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

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

  •  06-07-2019
  •  | 
  •  

سؤال

أحتاج إلى إعداد بروتوكول لتفاعلات القيادة/الاستجابة السريعة. تخبرني غريزتي أن أرفق بروتوكولًا بسيطًا مع سلاسل ASCII مفصولة CRLF مثل كيفية عمل SMTP أو POP3 ، ونفقه من خلال SSH/SSL إذا احتجت إلى تأمينه.

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

احتاج...

  • الأوامر والاستجابات التي تمر البيانات المنظمة جيئة وذهابا. (تعبيرات XML ، S ، لا تهتم.)
  • قدرة الخادم على إجراء إشعارات غير مجدولة للعميل دون أن يتم استطلاعها.

أي أفكار من فضلك؟

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

المحلول

AMQP يبدو واعدة. بدلاً من ذلك ، أعتقد أن XMPP يدعم الكثير مما تريده ، على الرغم من قدر كبير من النفقات العامة.

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

نصائح أخرى

إذا كنت تريد فقط طلب/رد ، فإن HTTP بسيط للغاية. إنه بالفعل بروتوكول طلب/استجابة. يتم تنفيذ جانب العميل والخادم على نطاق واسع في معظم اللغات. تحجيمها مفهومة جيدا.

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

إذا كنت ترغب في إشعارات ASYNC ، فابحث عن بروتوكولات Pub/Sub (Spread ، XMPP ، AMQP ، JMS أو الوسطاء التجاريين/الرسائل الفرعية مثل Tibcorv أو Tibco EMS أو WebSphere MQ). يعتمد البروتوكول أو التنفيذ للاختيار على موثوقية وموثوقية وإنتاجية النظام الذي تقوم ببنائه. على سبيل المثال ، هل من المقبول أن يتم إسقاط الإخطارات عند ازدحام الشبكة؟ ما يحدث للإشعارات عندما يكون العميل خارج الخط-هل يتم التخلص منها أو وضع قائمة الانتظار عندما يقوم العميل بإعادة الاتصال.

ماذا عن شيء مثل SNMP؟ لست متأكدًا مما إذا كان الأمر مناسبًا تمامًا مع النموذج الذي يستخدمه التطبيق الخاص بك ، لكنه يدعم كلاً من الإخطار والسحب (أي الفخ والحصول عليه).

هذا سؤال رائع مع عدد كبير من المتغيرات التي يجب مراعاتها ، والسؤال ذكر سوى القليل منها: تنسيق الحزمة ، والرسائل غير المتزامنة مقابل المتزامنة ، والأمان. هناك الكثير والكثير الآخر يمكن للمرء أن يفكر فيه. أقترح أن تمر بوصف مكدس بروتوكول المكون من 7 طبقات (OSI/ISO) واسأل نفسك عما تحتاجه في تلك الطبقات ، وما إذا كنت تريد بناء تلك الطبقة أو الحصول عليها من مكان آخر. (يبدو أنك مهتم في الغالب بالطبقة 6 و 7 ، ولكنك أيضًا ذكرت أجزاء من الطبقات السفلية.)

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

أخيرًا ، أود أن أقترح النظر في كيفية قيام التطبيقات الأخرى المشابهة لك المهمة (تحقق من المصدر المفتوح ، والكتب القراءة ، وما إلى ذلك) المفيدة أيضًا في قاعدة بيانات مكتب براءات الاختراع الأمريكية ، إلخ ؛ يمكن للمرء الحصول على أفكار رائعة فقط من قراءة وصف مشكلة الاتصال التي كانوا يحاولون حلها.

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