سؤال

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

ستنشر العملية 1 رسائل إلى بعض URI، قل "URI1"

var publisher = new Publisher("Uri1");
publisher.publish(new Message("Somedata");

سيستمع عملية 2 إلى الرسائل على "URI1" ونشر الرسائل إلى "URI2"

var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var publisher = new Publisher("Uri2")
publisher.Publish(new Message("SomeMoreData"))

سيستمع عملية 3 للرسائل من كلا URIS

var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var anotherSubscriber = new Subscriber("Uri2")
anotherSubscriber.MessageReceived += data => Console.Writeline(data.ToString());

جميع العمليات تعمل على نفس الكمبيوتر. بعد بعض الأبحاث وأعتقد أن MSMQ هو الطريق للذهاب (باستخدام أسماء قائمة الانتظار كأوريس) ولكن لا يزال سؤال التنفيذ. جئت عبر العديد من الاحتمالات:

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

استخدام nservicebus., النقل الجماعي أو RhinoserviceBus. (جميع استخدام MSMQ)يبدو أنهم جميعا مختصة، خاصة NSERVICEBUS، لكنني لا أستطيع معرفة من الوثائق كيفية استخراج وظائف Pubsub الأساسية من أي منهم حتى أتمكن من مغازلة ذلك في واجهة مماثلة لما ورد أعلاه

استخدام WCF (عبر MSMQ)مرة أخرى يبدو أن هذا يبدو وكأنه خيار جيد، ولكن الرؤية لأنني بعيد عن خبير WCF، أود التأكد من أن هذه هي الطريقة التي يجب أن تذهب إليها قبل أن أبدأ في الخوض في ذلك

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

شكرا!

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

المحلول

في النهاية، اخترنا حل جاهز للذاكرة المشتركة:http://pubsub.codeplex.com/الاختبار الأولي يعني أنه يعمل بشكل جيد في حالتنا

نصائح أخرى

حسنا، حسب http://answers.yahoo.com/Question/index؟qid=20080616091430aaaxtjb. يمكنك استخدام عنوان الاسترجاع دون تثبيت NIC. ربما يمكنك استخدام هذه الوظيفة للمتابعة باستخدام الرمز الموجود الخاص بك؟

ملاحظة: لم أختبر ذلك، لقد كانت مجرد فكرة.

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