سؤال

هل سيعمل استخدام WSDualHttpBinding لعمليات الاسترجاعات المزدوجة في سيناريوهات العالم الحقيقي؟لنفترض أن لدي تطبيق .NET يستخدم منفذًا عشوائيًا، فهل ستكون الخدمة قادرة على حل العناوين الأساسية للعميل ومنفذ عمليات الاسترجاعات؟

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

المحلول

تعتمد الإجابة الكاملة على سؤالك على أن يكون "سيناريو العالم الحقيقي" إما إنترانت أو سيناريو إنترنت.على الرغم من أن WSDualHttpBinding يعمل في كلا السيناريوهين، إلا أن هناك تفاصيل يجب الانتباه إليها:

الشبكة الداخلية

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

من الأفضل تحقيق عمليات الاسترجاعات المزدوجة في سيناريو إنترانت عندما يمكنك استخدام WCF على كل من العميل والخادم باستخدام NetTcpBinding أو NetNamedPipeBinding.تستخدم هذه الارتباطات TCP وICP على التوالي كوسيلة نقل (بدلاً من HTTP) وترميز ثنائي مخصص ولهذا السبب يكون WCF مطلوبًا على كلا الجانبين.بالنسبة لمعاودة الاتصال بالعميل، تتم إعادة استخدام نفس القناة المستخدمة للاتصال بالخدمة عبر الربط دون الحاجة إلى فتح منفذ جديد.

إنترنت

في سيناريو الإنترنت، تنتقل طلبات واستجابات HTTP الصالحة في اتجاه واحد فقط، وقد تم تصميم HTTP كبروتوكول أحادي الاتجاه.عند استخدام WSDualHttpBinding، يقوم WCF بإنشاء قناة HTTP منفصلة لعمليات الاسترجاعات.ردا على سؤالك الثاني:يتكون عنوان الوجهة لمعاودة الاتصال بالعميل من اسم مضيف جهاز العميل والمنفذ 80 بشكل افتراضي.إذا كان العميل عبارة عن جهاز تطوير على سبيل المثال وتم تثبيت IIS عليه، فسيتم حجز المنفذ 80 حصريًا في بعض السيناريوهات مما قد يتسبب في حدوث تعارضات مع تطبيق النموذج الأولي الخاص بك.هذا هو ما هذا بلوق وظيفة يقدم حلاً لما تم تصميم خاصية ClientBaseAddress للمساعدة فيه.بغض النظر عن المنفذ الذي تستخدمه - الافتراضي أو المخصص، يجب عليك التأكد من تكوين جميع جدران الحماية وأجهزة التوجيه على كلا الجانبين بشكل صحيح للسماح بإنشاء كل من القناة الصادرة وقناة رد الاتصال المنفصلة.

يمكن أن يشير تطبيق .NET أيضًا إلى تطبيق Silverlight.نظرًا لأن تطبيق Silverlight الذي يعمل في المتصفح لا يمكنه قبول اتصالات HTTP الواردة الجديدة، فلن يعمل WSDualHttpBinding مع قناته الخلفية المنفصلة.ومن ثم تم إنشاء PollingDuplexHttpBinding أولاً في Silverlight 2 والتي يمكن اعتبارها "خدعة" ذكية للتغلب على حقيقة أن HTTP أحادي الاتجاه عن طريق إبقاء قناة الطلب مفتوحة لفترة طويلة (استقصاء طويل) واستخدامها كقناة خلفية لـ يدعو مرة أخرى إلى العميل.وهذا له عدد من الآثار المترتبة على كل من جانب العميل والخادم، خاصة فيما يتعلق بالقياس، لمزيد من التفاصيل، يرجى الاطلاع على ذلك هذا المنصب من مدونتي.

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

نصائح أخرى

إذا كان تطبيقًا خلف جدار الحماية، فمن الناحية النظرية نعم.يعتمد ذلك على ما تعنيه بـ "العالم الحقيقي"؛إذا كنت تقصد بذلك "الأداء العالي" فربما يكون NetTcpBinding هو النهج الأفضل.

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