سؤال

لديّ عقودان (CA & CB) تم تنفيذه بواسطة خدمة WCF واحدة مع نقطتين نهاية (EPA & EPB).

هذا هو ليس لأغراض أمنية ، ولكن فقط لأسباب وضوح/تنظيم ، أود فقط "رؤية" عمليات Contracta عندما أكتشف الخدمة عبر Endpointa ؛ وبالمثل ، انظر فقط عمليات ContractB عبر EndpointB.

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

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

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

المحلول

افتراضيًا ، أنت على حق - تحصل فئة تنفيذ خدمة واحدة على WSDL واحدة تحتوي على جميع أساليب الخدمة (من جميع عقود الخدمة) التي تنفذها فئة الخدمة هذه.

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

نصائح أخرى

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

يتم تعيين WCF Service (Class) مباشرة إلى WSDL: عنصر الخدمة الذي يعرض كل عقد على أنه WSDL منفصل: PORT (في WCF المعروف باسم نقطة النهاية). هذه هي النقطة الرئيسية في الإجابة على سؤالك. إذا كنت لا تريد عقدك الثاني في WSDL: الخدمة ، لا يمكنك تنفيذها في نفس الفصل.

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

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