我希望在Azure中构建一个应用程序,它将充当TCP侦听器,在指定端口上接收TCP消息流,然后将信息添加到数据库。传入的TCP通信将使用证书进行保护。
我考虑以下选项:
云服务工作者角色
这看起来肯定会work。但是,这意味着我必须使用Cloud Service,而我错过了App Service提供的功能和简单性。 Cloud Service documentation还专门描述了如何打开所需的TCP端口。
应用服务
在逻辑应用程序(首选)中,但这似乎并不支持TCP侦听器,因此我希望构建一个自定义API应用程序。或者,我可以创建一个Web作业。
但是我不确定这种方法是否有效,我有以下问题:
我可以在Azure应用服务中托管TCP侦听器吗?
答案 0 :(得分:7)
云服务工作者角色
这看起来肯定会起作用。但是,这意味着我必须使用Cloud Service,而我错过了App Service提供的功能和简单性。 Cloud Service文档还专门描述了如何打开所需的TCP端口。
绝对有效。
https://msdn.microsoft.com/en-us/library/azure/gg557553.aspx
在 ServiceDefinition.csdef :
中<Endpoints>
<InputEndpoint name="RawTCP" protocol="tcp" port="54321" localPort="54321" />
</Endpoints>
App Service
在逻辑应用程序(首选)中,但这似乎并不支持TCP&gt;侦听器,因此我希望构建一个自定义API应用程序。或者,我可以创建一个Web作业。 ...
我可以在App Service上公开任意TCP端口吗? ...
我可以在Azure应用服务中托管TCP侦听器吗?
否和否。只有80 / TCP和443 / TCP公开公开,唯一有效的协议是HTTP。 您无法使用App Service进行自定义侦听。
请参阅此处列出的沙箱限制: https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening
如果App Service页面未提及此限制,请随意在Azure文档中发出拉取请求。
Service Fabric 将是一个很酷的第三(或第一?)选项: https://azure.microsoft.com/en-us/services/service-fabric/
答案 1 :(得分:4)
我提出了一张支持票,并向微软确认了这一点。
[在App Service中] Azure不支持自定义端口 支持http协议。这两个原因拒绝使用TCP侦听器。
此问题还进一步合作信息; Can I open ports on Azure Websites?