سؤال

أنا أقرأ أشياء كثيرة لفهم أشياء مختلفة في WCF.

قريبًا ، في الواقع ، أريد نقل / تحويل خدمات الويب WSE3 الحالية إلى WCF.في خدمات الويب WSE الحالية ، لدي بعض فئات (البيانات) التي تمثل الكيانات في بيئتنا.

أثناء تحويل هذه الفئات ، هل يجب علي استخدام سمة عقد البيانات / عضو البيانات أو السمة MessageContract؟

1.كيف تقرر بين عقد الرسالة وعقد البيانات في WCF؟ 2. هل نوع الربط (مثل basicHttpBinding) له أي دور في هذا القرار؟ 3. هل يتغير الوكلاء الذين تم إنشاؤهم من جانب العميل (عند إضافة مرجع ويب) بشكل كبير اعتمادًا على البيانات أو عقد الرسالة؟

(ملاحظة: أحاول إيجاد طريقة تمكن عملاء WSE الحاليين من استخدام خدمة WCF بدون الكثير من التعديلات / التعديلات. هل من الممكن استخدام البروكسيات الحالية التي تم إنشاؤها من خدمات الويب ASMX ، للاتصال بـخدمة WCF الجديدة فقط عن طريق تعيين عنوان URL للوكيل على خدمة WCF؟)

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

المحلول

فيما يلي عرض سريع للإجابة على أسئلتك:

1) ما لم يكن هناك سبب محدد مثل تعديل بنية الصابون XML ، فاستخدم DataContract بدلاً من MessageContract.

2 & PS) نظرًا لأنك تستخدم حاليًا برامج الصابون عبر HTTP ، فستحتاج على الأرجح إلى تهيئة الخدمات الجديدة لتلائم basicHttpBinding.سيوفر هذا إمكانية التشغيل البيني التي تحتاجها لعملاء ASMX.

3) لا ينبغي ذلك إذا كانت بنية الصابون التي أنشأتها خدمة WCF تتطابق مع صابونك الحالي.

أتذكر بشكل غامض أن WSE 3.0 دعم بعض معايير WS- *.إذا كانت التعليمات البرمجية الحالية تعتمد على هذه ، فقد تتمكن أيضًا من كشف wsHttpBinding لهذه العمليات ولكن لا أعتقد أن عميل ASMX الافتراضي يعمل مع خدمة wsHttpBinding المكونة.

نصائح أخرى

يعتمد ذلك على التحكم الذي تحتاجه في رسالة SOAP الناتجة. تحدد DataContract جزءًا من نص الرسالة ملفوفًا بواسطة عنصر محدد بواسطة العملية. تحدد MessageContract هيكلًا للرسالة بأكملها - يمكنك استخدام العديد من أعضاء الجسم ، ولا يتعين عليك استخدام عنصر غلاف افتراضي ، كما يمكنك أيضًا وضع بعض البيانات في رؤوس SOAP.

في السيناريو الخاص بك ، الجزء الأكثر أهمية هو تحديد WCF لاستخدام رسائل SOAP مثل خدمة WSE3 السابقة. هنا المهم هو كيف تقوم حاليا بتسلسل البيانات؟ إذا كنت تستخدم تسلسل Xml (والسمات) ، فيمكنك استخدامه مباشرة في WCF عن طريق التبديل من تسلسل عقد البيانات إلى تسلسل xml.

راجع للشغل. لماذا استخدمت WSE3 بدلاً من ASMX العادي؟ هل استخدمت أمان الرسائل؟ في مثل هذه الحالة سوف تحتاج إلى ربط آخر. BasicHttpBinding غير قادر على القيام بأمان الرسائل.

الإجابة العامة هي نعم ، يمكنك إنشاء خدمة يمكن لبروكسي العميل الحالي استهلاكها. لكن في الواقع ، يعتمد الجهد على خدمتك الحالية والرمز الحالي.

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