سؤال

أنا أستهلك خدمة WCF وخلق وكيل لها باستخدام مرجع خدمة VS 2008.

أنا أبحث عن أفضل نمط لاستدعاء طريقة خدمة WCF

  • هل يجب علي إنشاء مثيل وكيل العميل في كل مرة أسميه طريقة الخدمة وإغلاق العميل بمجرد انتهائي من ذلك؟ عندما قام بتطبيق تطبيق عملائي، استطعت أن أرى أنه يأخذ الكثير من الوقت للحصول على القناة أثناء تهيئة العميل الوكيل
  • هل يجب علي استخدام نمط Singleton لوكيل العميل حتى أتمكن من استخدام المهلة مرة واحدة فقط والتخلص من إعادة تهيئة النفقات العامة؟ هل هناك أي مشكلة خفية مع هذا النهج؟

أنا أستخدم .NET Framework 3.5 SP1، BasichTTP ملزمة مع القليل من التخصيص.

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

المحلول

هذا يعتمد ؛-)

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

أيضا - الجزء الباهظ هو إنشاء ChannelFactory<T> - يمكنك محاولة فصل هذه الخطواتتين عند إنشاء Proyx العميل الخاص بك في التعليمات البرمجية:

ChannelFactory<IYourService> factory = new ChannelFactory<IYourService>();

شنق إلى هذا القناة مصنع، مثل ذاكرة التخزين المؤقت ذلك في مكان ما

يجب أن تكون الخطوة الثانية مكثفة بكثير من حيث الوقت والحصان:

IYourService client = factory.CreateChannel();

يمكنك القيام بهذه الخطوة قبل كل مكالمة (أو تسلسل المكالمات) ولا ينبغي أن تحصل على أداء سيء من ذلك، حقا.

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

مارك

نصائح أخرى

آسف لإبداء سؤال قديم، لكنني أردت إضافة هذا لسهولة المرجع.

وأنا أتفق تماما مع marc_s و rally25rs. لذا ابدأ هناك، ولكن أيضا النظر في استخدام وكيل أو مجمع يتعامل مع الدول المختارة. هنا هو سؤال على ذلك يناقش بعض الحلول، و هنا هو آخر حل جيد جئت عبر الإنترنت من قبل كورنيليو "بناء وكيل عميل قابلة لإعادة الاستخدام". يولد حلاه مغازلة تعرض أساليب خدمتك لأقصى قدر ممكن من الراحة والأداء. لا يزال يتعين علي اختبار ما إذا كان يعمل على الرغم من :).

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