سؤال

كيف يمكنني استضافة خدمات WCF من خلال منافذ TCP و كيف يمكنني الاستماع إليها و تستهلك الخدمات من خلال هذه منافذ TCP?

هذا بصرف النظر عن صافي.tcp ملزمة ، هل هناك طريقة لاستضافة وتستهلك باستخدام منافذ TCP?

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

المحلول

في WCF، يمكنك استضافة أي خدمة من نفسك عن طريق إنشاء مثيل من فئة ServiceHost، تكوينه مع النهاية الصحيحة وتنفيذ الخدمة التي ترغب في فضح، وندعو Open على ذلك. وهذا ما يسمى <م> استضافة النفس لأنك استضافة خدمة (والمستمعين مينائها) من داخل التطبيق الخاص بك.

وبدلا من ذلك، يمكنك استضافة الخدمة الخاص بك في IIS، ولكن يجب عليك أن تدرك أنه في حين يمكنك استضافة WCF في IIS 6، فإنه يسمح فقط لاستضافة HTTP و HTTPS النهاية. إذا كنت ترغب في استضافة النهاية TCP في IIS (الذي هو فكرة جيدة)، وسوف تحتاج IIS 7.

هنا .

نصائح أخرى

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

واستخدام مثل ميناء 1337 لخدمة HTTP (أو net.tcp) إضافة فقط ": 1337 /". إلى العنوان الأساسي الخاص بك ويتم بقية لك

وربما تكون هذه المساعدة

<services>
  <service behaviorConfiguration="configname"
    name="servicename">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="MyServiceBinding"
      name="NetTcpBindingEndpoint" bindingName="MyServiceBinding"
      contract="Interface">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>

    <endpoint address="mex" binding="customBinding" bindingConfiguration="myMexTcpBinding"
      name="MexTcpBindingEndpoint" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:prot/TestService" />
      </baseAddresses>
    </host>
  </service>
</services>

كل HTTP روابط العمل مع TCP طبقة النقل.لذا يمكن استخدام HTTP الارتباطات IIS.6 لاستضافة خدمة WCF الذي يعمل على منفذ TCP معين.

هنا walktrough على كيفية تحقيق ذلك:

  • تكوين خدمة تعمل على المنفذ الخاص بك المطلوبة من ملف التكوين (أو رمز):

    <service name="WCFService" behaviorConfiguration="DefaultBehaviour">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/WCFService" />
      </baseAddresses>
    </host>
    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="WCFService_mexEndpoint" contract="IMetadataExchange" />
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="DefaultBinding" name="WCFService_Endpoint" contract="WCFService.IService1" />
    

  • في IIS إنشاء موقع ويب (أو الدليل الظاهري) وتكوين انها ملزمة تعمل على ميناء اخترت في baseAddress خدمة التكوين (8000 ل المثال أعلاه).

نتيجة الخطوات أعلاه هو خدمة WCF الذي يعمل على منفذ TCP 8000 طبقة النقل باستخدام HTTP كما بروتوكول النقل.

تحرير :أعتقد أنك تبذل القليل من الارتباك هنا.إذا ما كنت تحاول تحقيق الثنائية trasmitted حزمة ثم الحل الوحيد في يد الشباك.tcp ملزمة ، وهذا غير متوافق مع IIS.6.إذا كنت ترغب فقط في أن تكون قادرا على تحديد منفذ TCP من الاتصال من أي HTTP ملزمة يمكن أن تفعل هذا كما وردت في المثال أعلاه, ويمكن استخدامها في IIS.6.

وأنا أعلم به متأخرا بعض الشيء .. ولكن، أعتقد أنك يمكن أن تستخدم في "خدمة WCF المضيف" التطبيق الذي يأتي مع Visual Studio.

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