سؤال

لدي تطبيق عميل/خادم يتصل بـ .Net عن بعد.أريد أن يتمكن عملائي من العثور على الخادم (الخوادم) على الشبكة دون الحاجة إلى تكوين من جانب العميل.

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

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

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

المحلول

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

IMHO وSSDP وUPnP ومتضخمة ومعقدة للغاية بالنسبة لاكتشاف الموارد...ولكن مهلا، هذا هو المعيار.;)

نصائح أخرى

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

بما أنك تتحدث .NET، فسأفترض أنك تستخدم Windows.هناك مستند قديم إلى حد ما (2001) يصف واجهة برمجة تطبيقات النمط C وواجهة برمجة تطبيقات COM لنظام التشغيل Windows بعنوان دعم عملاء التوصيل والتشغيل العالمي (UPnP)..يتم عرض واجهات برمجة تطبيقات COM بواسطة UPNP.DLL ويتم كشف واجهات برمجة التطبيقات ذات النمط C لـ SSDP بواسطة SSDPAPI.DLL.

ال واجهات برمجة التطبيقات على نمط COM لـ UPNP ربما يكون أفضل رهان لك.نظرًا لأن C# يمكنه تغليف كائنات COM لك والتعامل مع التشغيل المتداخل.لم أتمكن من العثور على أي مكان تم فيه نقل واجهة برمجة التطبيقات هذه إلى C# أو .NET Framework أصلاً.

قد تفكر أيضًا في منتجات Apple صباح الخير, ، وهو خاص بهم صفر تطبيق.إنه متوفر لأجهزة Mac وأجهزة الكمبيوتر الشخصية وLinux/BSD.

كان أفضل حل وجدته في عملي عن بعد هو الاحتفاظ بقائمة الخادم في ملف تكوين على أنظمة العميل وجعلها قابلة للتحديث.لم يكن الأسهل في الصيانة ولكنه كان سريعًا ولا يوجد بث.

يبدو أن حل UDP للبث المتعدد الخاص بي غير موثوق به بسبب تحديث MS الأخير.

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