ما هي مزايا استخدام WCF على الأطر مثل MassTransit أو مكتوبة بخط اليد عميل MSMQ؟

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

سؤال

وأنا أبحث في استخدام MSMQ كحل للقيام بتنفيذ متزامن في مشروعي القادم. أريد أن أعرف الاختلافات بين استخدام WCF والأطر مثل MassTransit أو حتى مكتوبة بخط اليد عميل MSMQ إلى المركز / قراءة مهمة من MSMQ.

وأساسا فإن التطبيق سيكون العديد من المواقع (الداخلية من خلال LAN أو الخارجية من خلال الإنترنت) البيانات القراءة / الكتابة من خلال طبقة الخدمة (سواء كان WCF أو خدمة الويب العادية). ثم هذه الطبقة الخدمة سوف يفعل أحد أمرين: 1. البيانات الكتابة إلى قاعدة البيانات 2. و / أو تحريك عملية الخلفية عن طريق وضع الرسالة في قائمة الانتظار. 3. من الواضح أنه يمكن أيضا استرداد البيانات من قاعدة البيانات. وكيل وسوف يذكر (خدمة ويندوز) على الجانب الآخر من قائمة الانتظار مراقبة قائمة انتظار وتنفيذ بناء على الأمر مهمة.

وهذا الهيكل سيكون من السهل جدا لتوسيع نطاق (إضافة المزيد من الطوابير وكلاء) وسهلة التنفيذ مقارنة RPC أو تنفيذ توزيع أو أيا كان. وتجهيز وكيل لا تحتاج إلى أن تكون في الوقت الحقيقي. وكيل وطبقة الخدمة هي تطبيقات منفصلة إلا أنهما يشتركان في كائنات المجال المشتركة والمستودعات وغيرها.

ما رأيك؟ ورحب الاقتراحات الهندسة المعمارية للمتطلبات المذكورة أعلاه. شكرا لك!

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

المحلول

وWCF يضيف التجريد على MSMQ. في الواقع، بمجرد تحديد العقود المتوافقة (يجب أن تكون عمليات ذو اتجاه واحد)، يمكنك التبديل من MSMQ في التكوين وشفافية. (على سبيل المثال، هل يمكن أن التحول إلى HttpWS طبيعي أو NetTcp ملزمة.)

ويجب تقييم فوائد WCF الأخرى، مثل الأمن وهلم جرا، لنرى كيف أن هذه تتناسب مع احتياجاتك. مرة أخرى، يجب أن تكون شفافة بدرجة معقولة من حقيقة كنت تستخدم MSMQ تحتها. على سبيل المثال، مضيفا أمن SOAP وهلم جرا يجب "العمل للتو"، مستقلة عن استخدام MSMQ.

و(على الرغم من IIRC، لا تزال تحتاج للدخول إلى سطح المكتب على كل جهاز يستخدم MSMQ، <م> مع حساب الخدمة التي سوف تستخدم MSMQ ، لتوليد الشهادة في آلات التشكيل الجانبي المحلي. و ثم، فإنه لا يعمل بشكل جيد جدا من IIS6، لأنه لا يتم تحميل ملفات تعريف المستخدمين. ألم حقيقي في عام، ولكن لا علاقة لها WCF على وجه التحديد.)


وفضلا عن ذلك:

هل نظرت في SQL خادم خدمة وسيط؟ بعد استخدام MSMQ + WCF وSSSB، وأعتقد أن SSSB هو حد كبير أسهل لتكوين وإدارة. يعمل SSSB مع أوامر T-SQL على أي عميل SQL (أنا استخدامها من مونو، على لينكس، مع المعاملات). انها سوف تعطي لك أيضا المعاملات إرسال / استقبال، ولو من بعيد (على ما أظن MSMQ 4 الآن يسمح بذلك). فإنه يأخذ حقا الكثير من الألم بعيدا عن الاصطفاف رسالة، وإذا كنت تستخدم SQL Server بالفعل ...

غالبا ما يتم تجاهله

وSSSB منذ Studio إدارة SQL لم يكن لديك مصممي واجهة المستخدم الرسومية لذلك كل شيء، ولكن ليس من الصعب وهو خيار كبير. الجانب السلبي واحد هو أنه إذا كنت تريد قدرة الإرسال المحلية (أي قائمة انتظار الرسائل عندما الشبكة لأسفل)، فسوف تحتاج إلى تشغيل نسخة محلية SQL اكسبرس.

نصائح أخرى

والهندسة المعمارية لديك يبدو سليمة ومعقولة. ومع ذلك يجب استخدام صافي النقل WCF MSMQ على يد الطبقات MSMQ مشفرة. WCF يلتف هذه الوظيفة المشتركة إلى نموذج البرمجة لطيفة. كما أعتقد أن هناك بعض التحسن في البروتوكول المستخدم من قبل صندوق رأس المال العامل مقابل System.Messaging الأساسي

وإلقاء نظرة على القيمة المضافة على سهل MSMQ:

http://readthedocs.org/docs/masstransit/en/ احدث / نظرة عامة / valueadd.html

في ملخص، يمكنك الحصول على الكثير من المفاهيم والرسائل المقدمة بشكل واضح في API مع MassTransit. إلى حد أن لا يكون لديك إذا كنت باليد ترميز أو تستخدم WCF.

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