WCF - الخدمة عن بُعد دون استخدام IIS - العنوان الأساسي؟

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

سؤال

أحاول الحصول على رأسي حول معالجة خدمات WCF.

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

بسبب الرمز القديم الموجود على الخادم ، أعتقد أن الخدمة يجب تعريضها كـ ASMX واستخدامها basicHttpBinding للسماح لها بالاتصال.

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

سؤالي هو ، كيف يعمل معالجة؟ أتصور أن المستخدم يدخل عنوان العميل على الخادم في النموذج

http://0.0.0.0/MyService

او حتى

http://hostname/MyService

إذا كان الأمر كذلك ، كيف يمكنني تكوين خدمة العميل في app.config؟ هل استخدم localhost?

إذا لم يكن الأمر كذلك ، فما هي الطريقة الموصى بها لفضح الخدمة للخادم؟

ملحوظة:

  • لا أرغب في استضافة IIS لأن ذلك يضيف متطلبات إضافية إلى الأجهزة المطلوبة للعميل.
  • من شبه المؤكد أن العملاء سيكونون موجودين على شبكة الإنترنت ، وليس عبر الإنترنت العام
هل كانت مفيدة؟

المحلول

يمكنك تكوين العنوان الأساسي للخدمة مثل SO:

<system.serviceModel>
  <services>
    <service name="Ns.FooService">
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:9999" />
        </baseAddresses>
      </host>
      <endpoint
          address="/foo"
          binding="basicHttpBinding"
          contract="Ns.IFooContract" />
     </service>
  </services>
</system.serviceModel>

ثم يمكن الوصول إلى خدمتك من خلال http://servename:9999/foo. يمكنك إلقاء نظرة على هذه المقالة للمزيد من المعلومات.

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