سؤال

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

بافتراض أن بروتوكول النقل قد تم اختياره بالفعل (UDP)، فهل هناك أي موارد ستساعدني في تصميم بروتوكول التطبيق الخاص بي؟

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

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

المحلول

جابر المبادئ التوجيهية تصميم بروتوكولات و <لأ href = "HTTP: / /tools.ietf.org/html/rfc4101 "يختلط =" noreferrer "> RFC 4101 . على الرغم من أنه يهدف إلى جعل المراجع أكثر من السهل أن نفهم لالمراجعين، ويوفر هذا RFC بعض النصائح للاهتمام.

نصائح أخرى

هل نظرت إلى العازلة بروتوكول جوجل ؟ ويبدو وكأنه وسيلة جيدة لحل هذه المسألة.

ويمكنك إنشاء نقطة النهاية أن يتصل مع التطبيق الخاص بك القائمة ومن ثم يستجيب من "الخارج" باستخدام بروتوكول protobuffer. انها ثنائي، لذلك فمن صغير وسريع ولم يكن لديك لكتابة مدير البروتوكول الخاص بك، 'السبب يمكنك استخدام تلك جوجل. الجانب السلبي هو أنه لابد من تنفيذها على كلا الجانبين من النظام (على الجانب الخاص بك "الخادم" وعلى / العميل المستهلك).

توصية أخرى ل مخازن البروتوكول - ثنائي ضيق لطيف مع القليل من الجهد.ومع ذلك، لاحظ أنه على الرغم من أن البروتوكول الثنائي محدد جيدًا، إلا أنه لا يوجد حتى الآن معيار RPC متفق عليه (العديد منها قيد التقدم, ، تميل إلى الميل نحو TCP أو HTTP).

تجعل المواصفات من السهل جدًا إشراك العميل والخادم أبنية مختلفة, وهو أمر جيد - بالإضافة إلى أنه قابل للتوسعة.

تنبيه قضائي:أنا مؤلف واحد من إصدارات .NET, ، لذلك قد أكون متحيزًا ؛-ص

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

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

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

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

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

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

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

ومما يؤسف له UDP و SOAP يبدو أنها عالقة في مهدها، يتم استخدام HTTP الأكثر شيوعا.

إذا كنت اختيار XML نضع في اعتبارنا أن سيكون لديك فوق العملاقة من العلامات.

وبروتوكول ثنائي بسيط سيكون أيضا الحاجة وليس ذلك بكثير ملتقيات تحليل مقارنة أكس.

<اقتباس فقرة>   

ولدي تطبيق قائم بذاته القائمة التي سوف يتم تمديدها على بعد 3rd الطرف، وذلك باستخدام بروتوكول الشبكة.

وسيكون من المفيد أن تعرف أكثر قليلا حول ما برنامجك لا وما هي طبيعة هذه الملحقات هي 3rd الطرف. ربما بعض المنطقي لاستخدام UDP؟

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