23

我希望在 Azure 中构建一个应用程序,它将充当 TCP 侦听器,在指定端口上接收 TCP 消息流,然后将信息添加到数据库中。传入的 TCP 通信将使用证书进行保护。

我正在考虑以下选项:

云服务工作者角色

这看起来肯定会奏效。然而,这意味着我必须使用云服务,而我错过了应用服务提供的功能和简单性。云服务文档还专门描述了如何打开所需的 TCP 端口。

应用服务

但是,在逻辑应用程序(首选)中,这似乎并不原生支持 TCP 侦听器,因此我希望构建一个自定义 API 应用程序。或者,我可以创建一个 Web 作业。

但是我不确定这种方法是否有效,我有以下问题:

  • 我可以在应用服务上公开任意 TCP 端口吗?
    • 虽然云服务文档专门描述了如何执行此操作,但我找不到与应用服务类似的任何内容。因此,要么不需要配置,要么应用服务内无法进行 TCP 通信。
  • 我可以在逻辑应用程序、API 应用程序或 Web 作业中构建 TCP 侦听器,例如 Azure 的体系结构是否支持 TCP 侦听器所需的行为?

我可以在 Azure 应用服务中托管 TCP 侦听器吗?

4

2 回答 2

11

云服务工作者角色

这看起来肯定会奏效。然而,这意味着我必须使用云服务,而我错过了应用服务提供的功能和简单性。云服务文档还专门描述了如何打开所需的 TCP 端口。

绝对有效。

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

ServiceDefinition.csdef中:

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

应用服务

但是,在逻辑应用程序(首选)中,这似乎并不原生支持 TCP >侦听器,因此我希望构建一个自定义 API 应用程序。或者,我可以创建一个 Web 作业。...

我可以在应用服务上公开任意 TCP 端口吗?...

我可以在 Azure 应用服务中托管 TCP 侦听器吗?

不,不。只有 80/TCP 和 443/TCP 是公开的,唯一有效的协议是 HTTP。您不能使用应用服务执行自定义侦听器。

请参阅此处列出的沙盒限制: https ://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#network-endpoint-listening

如果应用服务页面上未提及此限制,请随时在 Azure 文档中提出拉取请求。

Service Fabric将是一个很酷的第三(或第一?)选项: https ://azure.microsoft.com/en-us/services/service-fabric/

于 2016-07-13T13:26:40.020 回答
5

我提出了支持票并与 Microsoft 确认了这一点。

【在应用服务中】Azure不支持自定义端口,只支持http协议。这两个原因拒绝使用 TCP 侦听器。

还进一步合作信息这个问题;我可以在 Azure 网站上打开端口吗?

于 2016-07-14T09:59:30.070 回答