هل يمكن أن تحتوي الخدمة على نقاط نهاية متعددة؟

StackOverflow https://stackoverflow.com/questions/46283

  •  09-06-2019
  •  | 
  •  

سؤال

لدينا خدمة تحتوي على بعض الإعدادات المدعومة فقط عبر net.tcp.ما هي أفضل طريقة لإضافة نقطة نهاية أخرى؟هل أحتاج إلى إنشاء مضيف جديد بالكامل؟

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

المحلول

قد تحتوي الخدمة على نقاط نهاية متعددة داخل مضيف واحد، ولكن يجب أن تحتوي كل نقطة نهاية على مجموعة فريدة من العنوان والربط والعقد.بالنسبة لخدمة IIS المستضافة (أي ملف .SVC)، ما عليك سوى تعيين عنوان نقطة النهاية إلى نسبي URI وتأكد من أن العميل الذي تم إنشاؤه في Visual Studio أو wsdl.exe يحدد اسم نقطة النهاية في المُنشئ الخاص به.

راجع أيضًا مقالة MSDN نقاط نهاية متعددة.

نصائح أخرى

يمكن أن يكون لديك نقاط نهاية متعددة محددة إما على الخادم أو العميل.

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

على سبيل المثال، إذا كان لديك نقطة نهاية في تطبيق العميل الخاص بك مثل:

<endpoint address="https://yourdomain.com/WCF/YourService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IYourService"
      contract="MessagingService.IYourService"  
      name="BasicHttpBinding_IYourService" />

التي تدعو بها:

YourServiceClient client = new YourServiceClient();

يمكنك إضافة نقطة نهاية جديدة باسم جديد:

<endpoint address="https://yourotherdomain.com/WCF/YourService.svc"
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IYourService"
      contract="MessagingService.IYourService"  
      name="BasicHttpBinding_IYourService_ENDPOINT2" />

والتي يمكنك الاتصال بها:

YourServiceClient client = new YourServiceClient("BasicHttpBinding_IYourService_ENDPOINT2");

لقد قمت للتو بتغيير المجال أعلاه، ولكن إذا قمت بإنشاء قسم تكوين ربط جديد، فيمكنك فقط تغيير قيمة "bindingConfiguration".

ستحتاج إلى إنشاء مضيف جديد بالكامل إذا كنت تستخدم حاليًا IIS كمضيف لك - يدعم IIS فقط روابط HTTP وليس روابط TCP.ومع ذلك، إذا كنت تستخدم WAS أو إحدى خدمات Windows، فستتمكن من التخلص من ذلك بمجرد إنشاء نقطة نهاية net.tcp جديدة.

يمكننا استخدام نقاط نهاية متعددة لنفس الخدمة.يمكننا تكوين تكوين الويب بالطريقة التالية أيضًا

 <service name="MessagePatternDemo.Service1">  
 <endpoint name="ep1" address="/ep1" binding="basicHttpBinding" 
   contract="MessagePatternDemo.IService1"/>  
 <endpoint name="ep2" address="/ep2" binding="wsHttpBinding"  
   contract="MessagePatternDemo.IService1" />  
 <endpoint name="mex" contract="IMetadataExchange" address="mex"  
   binding="mexHttpBinding" />  
 </service>   
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top