سؤال

بينما أتعلم حاليًا استخدام خدمات WCF ، أواجه باستمرار البرامج التعليمية على الإنترنت التي تذكر باستخدام أ ServiceHost عند استخدام خدمة WCF.

ما هذا بالضبط ServiceHost ?


في مشروعي الحالي ، أستخدم خدمة WCF ولدي إشارة إليها من تطبيقي وكلما أردت أن أستهلكها من تطبيقي ، أقوم فقط بتثبيتها ServiceClient مثل هذا:

new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), customBinding, endpointAddress);

ثم الوصول إلى أساليب الويب الخاصة بي (OperationContractS) من تلك الحالة (من الواضح فتحه قبل استهلاك الطريقة وإغلاقها بعد ذلك Open و Close)

خدمة WCF الخاصة بي مضيف في IIS الخاص بي وأصل فقط .svc من تطبيقي إلى مثيل ServiceClient.

فلماذا وأين ServiceHost تستخدم؟

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

المحلول

يوفر لك Servicehost بشكل أساسي كل ما تحتاجه لاستضافة خدمة WCF في غير IIS أو كان الإعداد. سيكون مكان شائع لـ Servicehost في تطبيق وحدة التحكم أو خدمة Windows. انظر رمز المثال من MSDN ل كيفية إعداد servicehost في تطبيق وحدة التحكم.

نصائح أخرى

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

يمكنك إما إنشاء فئة ServiceHost بنفسك في تطبيق وحدة التحكم أو خدمة Windows أو حتى تطبيق WinForms ، وبالتالي جعل فئة خدمة WCF متاحة للعالم الخارجي - أو يمكنك تفويض هذا العمل إلى IIS أو كان. حتى IIS أو كان سيستخدم خدمة Servicehost لاستضافة خدمة WCF الخاصة بك - فهي تفعل ذلك فقط خلف الكواليس تلقائيًا ، و "بناءً على الطلب" - كلما جاء طلب خدمة WCF.

مارك

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