أي بدائل قابلة للحياة لـ WCF و WSDL لنقاط النهاية للتكامل؟

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

سؤال

صاحب العمل هو بائع برامج لسوق معين. يقوم عملاؤنا بدمج نظامنا مع الآخرين باستخدام خدمات الويب. نحن نستخدم تقنية Microsoft ، ويتم تنفيذ خدمات الويب الخاصة بنا في ASP.NET و WCF.

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

عملائنا على العديد من المنصات المختلفة ، ويتطلبون أن تكون خدماتنا متوافقة مع المعايير. قد يعني هذا أشياء مختلفة لأشخاص مختلفين ، لكنني أعتقد أنه من الآمن افتراض أنهم يريدون الوصول إلى خدمات الويب الموصوفة بـ WSDL.

في هذا السيناريو ، هل WCF هو الطريق للذهاب؟

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

المحلول

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

نصائح أخرى

البديل الذي أوصي به عادة هو الاندماج أكثر AMQP بين وسطاء رسالتك. كان ذلك يمكنك استخدام نموذج الدفع بدلاً من الاقتراع (وهو قوي للغاية وقابل للتطوير بالمقارنة)!

قمت بإعداد وسيط خاص بك ، مثل RabbitMQ ، محليًا. ثم تسمح لشريك التكامل الخاص بك بإعداد واحد. (سهل: فقط قم بتنزيله).

إذا كان شريكك يتكامل من نفس مركز البيانات ، فستكون قد تم حفظها لتفترض القليل منها تقسيم الشبكة - بمعنى أنك تستطيع مشاركة الوسيط. من ناحية أخرى ، إذا كنت على شبكات مختلفة ، يمكنك إعداد الوسيط في وضع الاتحاد. (يركض rabbitmq-plugins enable rabbitmq_federation و نقطة للوسيط الآخر)

الآن يمكنك استخدام مثل MassTransit:

ServiceBusFactory.New(sbc =>
{
    sbc.UseRabbitMqRouting();
    sbc.ReceiveFrom("rabbitmq://rabbitmq.mydomain.local/myvhost/myapplication");
    // sbc.Subscribe( s => s ... );
});

, ، كما ستفعل عندما لا تفعل أي تكامل.

إذا نظرت إلى http: //rabbitmq.mydomain.local: 55672/ الآن ستجد واجهة الإدارة لـ RabbitMQ. يقوم MassTransit بإنشاء تبادل لكل نوع من الرسائل (إرسال مثل هذه الرسالة إلى هذا البورصة سوف يعجب بجميع المشتركين) ، والتي يمكنك وضع قواعد التفويض.

يمكن أن تكون قواعد التفويض في شكل regex لكل مستخدم أو يمكن دمجها في LDAP. استشر الوثائق لهذا.

ستحتاج أيضًا إلى SSL في حالة أنك تتجاوز WAN وليس لديك نفق IPSEC - هذه الوثائق موجودة هنا: http://www.ribbitmq.com/ssl.html وأنت تمكين مثل هذا.

هذا هو! يتمتع!

Post Scriptum: إذا كنت تشعر بمغامرة تساعدك على إدارة جميع البنية التحتية الخاصة بك كنتيجة جانبية ، فيمكنك إلقاء نظرة على دمية. Puppet هو مدير وتكوين الخوادم ؛ في هذه الحالة ، ستكون مهتمًا بإعداد SSL مع الدمى. أولاً ، اطلب شهادة النطاق الفرعي للبطاقات البرية لمجالك ، ثم استخدم تلك الشهادة للتوقيع على شهادات أخرى: يمكنك تفويض ذلك - انظر دليل RabbitMQ حيث ينص على "الآن يمكننا إنشاء المفتاح والشهادات التي ستستخدمها سلطة شهادة الاختبار الخاصة بنا " - قم بإنشاء طلب توقيع الشهادة للشهادة بدلاً من إنشاء سلطة جديدة - والسماح لـ RMQ باستخدام هذا لـ SSL - سيكون صالحًا للإنترنت.

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