2009-06-29 9 views
5

Come faccio ad ospitare i servizi WCF attraverso le porte TCP, e come posso ascoltarlo e consumare servizi attraverso queste porte TCP?Come ospitare WCF tramite le porte TCP?

Cioè, a parte il binding net.tcp, c'è un modo per ospitare e utilizzare le porte TCP?

+0

Quindi, fondamentalmente, in Windows XP che ospita n consumando può essere fatto in 3 modi 1.Self-hosting 2.IIS 3.as un servizio di Windows così l'apertura di una porta TCP e lo consuma, rientra auto- hosting o è un altro modo di hosting n consumando servizi wcf o c'è un altro modo cioè sotto TCP? – kurozakura

risposta

8

In WCF, è possibile ospitare qualsiasi servizio autonomamente creando un'istanza della classe ServiceHost, configurandola con gli endpoint corretti e l'implementazione del servizio che si desidera esporre e chiamando Open su di esso. Questo è chiamato self-hosting perché si ospita il servizio (ei relativi listener di porte) dalla propria applicazione.

In alternativa, è possibile ospitare il servizio in IIS, ma è necessario tenere presente che mentre è possibile ospitare WCF in IIS 6, consente solo di ospitare endpoint HTTP e HTTPS. Se si desidera ospitare endpoint TCP in IIS (che è una buona idea), sarà necessario IIS 7.

Ulteriori informazioni here.

+1

Quindi, fondamentalmente, in Windows XP che ospita n consumando può essere fatto in 3 modi 1.Self-hosting 2.IIS 3.as un servizio di Windows così l'apertura di una porta TCP e lo consuma, arriva sotto il self-hosting o è un altro modo di ospitare n consumando servizi wcf o c'è un altro modo cioè sotto TCP? – kurozakura

+0

Windows XP non esegue IIS 7, quindi non è possibile ospitare un endpoint TCP su IIS in XP. È possibile rendere un servizio Windows un servizio WCF, ma questo è solo un altro esempio di Self Hosting. –

0

è possibile utilizzare qualsiasi porta (a condizione che si abbia il permesso) per ospitare i servizi wcf. quando si utilizza IIS per ospitare servizi wcf è un po 'diverso, ma negli ambienti self-hosting, basta aggiungere il numero di porta al proprio indirizzo di base e il gioco è fatto. (quando si utilizza Vista o Server 2008, è necessario concedere l'accesso alla porta quando non è in esecuzione con i privilegi di amministratore (ad esempio utilizzando netsh))

da utilizzare, ad es. porta 1337 per un servizio http (o net.tcp) basta aggiungere ": 1337 /" al tuo indirizzo di base e il resto è fatto per te.

+0

Quindi, fondamentalmente, in Windows XP che ospita n consumando può essere fatto in 3 modi 1.Self-hosting 2.IIS 3.as un servizio di Windows così l'apertura di una porta TCP e lo consuma, arriva sotto il self-hosting o è un altro modo di ospitare n servizi di wcf o c'è qualche altro modo? – kurozakura

+0

Ulteriori informazioni sull'uso di netsh per aprire una porta qui: http://msdn.microsoft.com/en-us/library/ms733768.aspx –

0

Può essere questo aiuto

<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> 
0

Tutti gli attacchi HTTP funzionano con il protocollo TCP per il livello di trasporto. Pertanto, è possibile utilizzare i binding HTTP e IIS.6 per ospitare un servizio WCF eseguito su una porta TCP specifica.

Ecco un walktrough su come raggiungere questo obiettivo:

  • configurare il servizio per l'esecuzione sul porta desiderata dal file di configurazione (o il codice):

    <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" /> 
    

  • in IIS creare un sito Web (o directory virtuale) e co nfigure è vincolante per l'esecuzione sulla porta scelta nella configurazione del servizio baseAddress (8000 per l'esempio sopra).

Il risultato dei passaggi precedenti è un servizio WCF che viene eseguito sulla porta TCP 8000 per il livello di trasporto, utilizzando HTTP come protocollo di trasporto.

Modifica: Credo che stai facendo un po 'di confusione qui. Se quello che stai cercando di ottenere è un pacchetto binario trasmesso, l'unica soluzione disponibile è il binding net.tcp, che non è compatibile con IIS.6. Se si desidera essere in grado di selezionare la porta TCP della connessione, qualsiasi associazione HTTP può eseguire questa operazione come illustrato nell'esempio precedente e può essere utilizzata in IIS.6.

+0

quindi in pratica, in windows xp hosting n consumo può essere fatto in 3 modi 1. self-hosting 2.as un servizio di Windows quindi aprire una porta TCP e consumarlo, arriva sotto self-hosting o è un altro modo di ospitare n consumando servizi wcf o c'è un altro modo cioè sotto TCP ? – kurozakura

+0

Penso che sia possibile ospitare TCP con WAS in IIS 7. –

+0

HTTP è un protocollo di applicazione, non di trasporto. – aehlke

0

So che è un po 'in ritardo ..Ma, suppongo che potresti usare l'app "Host Servizio WCF" che viene fornito con Visual Studio.

Problemi correlati