7

Sto cercando di creare un'applicazione in Azure che agirà da listener TCP, riceverà i flussi di messaggi TCP su una porta specificata e quindi aggiungerà le informazioni a un database. La comunicazione TCP in arrivo verrà protetta con un certificato.Come posso ospitare un listener TCP in Azure?

sto valutando le seguenti opzioni:

cloud Servizio Worker Role

Questo appare sicuramente come lo farà work. Tuttavia, ciò significa che devo utilizzare un servizio cloud e mi mancano le funzionalità e la semplicità offerte dal servizio app. Il servizio cloud documentation descrive anche in modo specifico come aprire le porte TCP richieste.

App Servizio

In un App Logic (preferito), ma questo non sembra supportare nativamente un ascoltatore TCP, quindi vorrei cercare di costruire un'API personalizzata App. In alternativa, potrei creare un lavoro Web.

Tuttavia io non sono sicuro che questo approccio funziona, e ho le seguenti domande:

  • posso esporre porte TCP arbitrarie sul Servizio App?
    • Mentre la documentazione del servizio cloud descrive in modo specifico come eseguire questa operazione, non riesco a trovare nulla di simile per il servizio app. Quindi, la configurazione non è richiesta o la comunicazione TCP non è possibile solo all'interno del servizio app.
  • Posso creare un listener TCP in un'app per la logica, un'app per le API o un lavoro Web, ad es. l'architettura di Azure supporta il comportamento richiesto per un listener TCP?

Posso ospitare un listener TCP in un servizio app di Azure?

+0

Si può fare questo lavoro su HTTP? Tutte queste preoccupazioni vanno via. – usr

+0

Purtroppo no, TCP è un requisito dell'applicazione all'altra estremità. –

+0

Quindi si consiglia che le esercitazioni TCP MSDN sono davvero pessime. In particolare https://msdn.microsoft.com/en-us/library/fx6588te(v=vs.110).aspx è orribile. Anche scrivere codice socket è difficile. Se non riesci a riconoscere che questo tutorial è cattivo, significa che sei abbastanza inesperto e che avrai ancora più difficoltà. Ti avverto solo. – usr

risposta

4

cloud Servizio Worker Role

Questo appare sicuramente come funzionerà. Tuttavia, ciò significa che devo utilizzare un servizio cloud e mi mancano le funzionalità e la semplicità offerte dal servizio app. La documentazione del Servizio Cloud descrive anche in modo specifico come aprire le porte TCP richieste.

Decisamente funziona.

https://msdn.microsoft.com/en-us/library/azure/gg557553.aspx

In ServiceDefinition.csdef:

<Endpoints> 
    <InputEndpoint name="RawTCP" protocol="tcp" port="54321" localPort="54321" /> 
</Endpoints> 

App Servizio

in una logica App (preferito), ma questo non sembra supportare nativamente una connessione TCP > listener, quindi vorrei creare un'API personalizzata. In alternativa, potrei creare un lavoro Web. ...

Posso esporre porte TCP arbitrarie sul servizio app? ...

Posso ospitare un listener TCP in un servizio app di Azure?

No e No. Solo 80/TCP e 443/TCP sono esposti pubblicamente e l'unico protocollo che funziona è HTTP. Non è possibile eseguire listener personalizzati con il servizio app.

vedere i limiti sandbox qui elencate: https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening

Sentitevi liberi di fare una richiesta di pull nella documentazione Azure se questa limitazione non è menzionato nella pagina App servizio.

Servizio Tessuto sarebbe una terza opzione di fresco (o prima?): https://azure.microsoft.com/en-us/services/service-fabric/

+1

Cosa significa questo per WebSockets? Suppongo che sia supportato per WebJobs. – jpierson

4

ho sollevato un ticket di supporto e ha confermato questo con Microsoft.

[Nel servizio app] Azure non supporta la porta personalizzata e solo il protocollo http di supporto di supporto. Questi 2 motivi negano l'uso del listener TCP.

Inoltre ulteriori informazioni di collaborazione questa domanda; Can I open ports on Azure Websites?