كيف يمكنك تكوين خدمة WCF للعملاء الذين يستخدمون على الأجهزة المتصلة بالشبكة؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

ولقد خلقت مجرد خدمة WCF / عميل وكل شيء يعمل بشكل جيد عند تشغيل على نفس الجهاز. ولكن لا يمكن معرفة كيفية تكوين ليتم تشغيله على أجهزة مختلفة. هل تعرف كيف؟

في هذه اللحظة يتم تعيين URI إلى HTTP: // المضيف المحلي: 8000 ......

ولكن أعتقد أنني أريد شيء من هذا القبيل net.tcp: // MYSERVER: 8000 ... ..

وأي أفكار ستكون كبيرة. شكرا.

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

المحلول

ومن ما يبدو، لديك كل من الخدمة والعميل في نفس قابل للتنفيذ. في حين أن هذا يمكن القيام به، عندما تريد منهم على آلات منفصلة تحتاج إلى أن يكون قابل للتنفيذ / المضيف لخدمة (إما الذاتي استضافت، أو في IIS) وقابل للتنفيذ للعميل. سوف تحتاج كل ليتم تكوينه بشكل صحيح مع العنوان، ملزمة، وعقد في قسم التكوين المناسب لذلك. لذلك على الملقم الذي تريد الحصول على شيء من هذا القبيل:

<configuration>
    <system.serviceModel>
        <services>
            <service name="YourService">
                <endpoint address="http://MyServer:8000/..."
                          binding="BasicHttpBinding"
                          contract="Your.IContract" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

وعلى العميل كنت لديك هذا:

<configuration>
    <system.serviceModel>
        <client>
            <endpoint address="http://MyServer:8000/..."
                      binding="BasicHttpBinding"
                      contract="Your.IContract"
                      name="ClientEndpoint" />
        </client>
    </system.serviceModel>
</configuration>

والشيء الرئيسي هو التأكد من أن العميل والخادم يمكن التواصل مع بعضهم البعض عبر منفذ محدد وبروتوكول (صنع في المقام الأول على يقين من جدار الحماية لا حظر الاتصالات). والشيء الآخر أن يكون على بينة من هو تغيير بروتوكول ملزم الخاص بك قد تؤثر على الجوانب الأخرى من الخدمة (الأمن هو واحد كبير، ولكن أيضا ما يمكن وما لا يمكن القيام به مع الخدمة).

نصائح أخرى

وليس هناك ما يكفي من المعلومات هنا للرد على سؤالك.

وعلى افتراض انك لا يضع عنوان / معلومات ربط / عقد في ServiceHost وكلاء خلال التعليمات البرمجية، تحتاج إلى نشر قسم من ملف التكوين الخاص بك.

إذا كنت تفعل ذلك في التعليمات البرمجية، فأنت بحاجة لاظهار ما الرمز الذي تستخدمه.

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

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