在Windows Azure中实现TCP/UDP端口

3
我们希望在Windows Azure云服务上实现一个端口,并希望得到我们的策略的反馈意见。目前的项目如下:
- 物理GPS设备作为客户端。 - Windows Azure云服务作为服务器。
1)物理GPS设备:我们使用XT-4000 [Xirgo Technologies]物理GPS设备,这是一个功能强大的跟踪、监控和控制网关设备。该设备需要UDP或TCP端口进行通信。
2)Windows Azure云服务:在此,我们需要打开TCP或UDP端口,并设置监听器以便接收由设备[XT-4000]推送的传入数据。
这是我们考虑的策略。欢迎提供任何建议。
- 在Azure上创建TCP端口。 - 设置监听器以接收来自设备的传入信号。
但问题是,作为基于云的平台,我们是否可以在Windows Azure云服务上创建TCP端口?如果可以,应该如何操作?
另外有两个问题:
1. 设备支持UDP或TCP端口进行通信,哪种更好? 2. 接收来自设备到端口的信号需要第三方帮助吗?
2个回答

3

您需要使用 Windows Azure Cloud Service 而不是 Windows Azure Web Site

对于云服务,您需要使用 Worker Role 来实现设备支持的协议。您可以选择 TCP 或 UDP - 无论哪种编程方式更适合您。您将需要为云服务定义输入端点

至于其他问题:

As the device supports both UDP or TCP port to communicate, which one is better?

根据设备支持的协议而定。我见过许多GPS设备使用的协议,从“只需发送并忘记”到“非常强大的错误检查和接收确认”。如果您的设备协议属于“只需发送并忘记”类型,则TCP更可靠。如果设备协议容易出错并进行验证/CRC-检查/接收确认,则可以使用UDP。

接收来自设备到端口的信号需要第三方帮助吗?

这取决于您的编程技能...


感谢你的指引,astaykov。 - Swapneel Kondgule
@astaykov,我不明白为什么“发送并忘记”应该使用TCP,这基本上是UDP协议的定义。难道不应该反过来吗? - Crypth
@Crypth 为什么问我?!去问那些生产这种设备的人吧!但是我对这样的实现非常满意。Azure 很长一段时间都没有支持 UDP,我一直在 TCP 上愉快地运行“fire and forget”类型的设备。我想知道,在不了解 GPS 设备市场(显然)的情况下,评论一个 8 个月前的帖子背后的动机是什么? - astaykov
@astaykov,我之前选择了EC2而不是Azure,并且现在阅读了一些关于Azure的资料,因为它支持UDP,而我正在使用基于UDP的实时系统,所以很感兴趣。那么,显然我误解了你的回答,因为UDP是用于“发射并忘记”通信的常见用法,但显然我的GPS系统知识匮乏妨碍了理解。我的错,抱歉提问。 - Crypth

3
我们已经在Windows Azure上成功实现了类似的服务(车辆追踪)。以下是一些观察结果:
- 根据astakov的回答,您正在寻找云服务(工作角色)。 - Azure支持TCP和UDP,但如果可以选择,建议使用TCP。UDP没有连接,设备无法知道您的服务是否收到数据。我们被迫使用UDP,并且必须向设备发送确认数据,否则数据将被重新发送(我们需要在UDP上编写自己的协议)。从服务器向设备发送UDP数据包可能会被移动网络防火墙规则(以及其他网络配置)阻止。尽量避免使用UDP——UDP的丢包性质完全不适用于车辆追踪。 - 检查设备是否支持DNS。许多这些设备只发送到IP地址,这使部署变得有点棘手。 - 这些设备需要最小化传输的数据(因为GSM数据成本),通常以专有和压缩格式发送数据。大部分精力将花费在解析二进制数据上。如果可以,请找到一个供应商,在服务器端使用库解码数据。在我们特定的情况下(针对自定义设计和构建的设备),仅解码数据就需要约10个人月的开发时间。

如果设备不支持DNS,我不会说部署会更加棘手。Windows Azure保证只要有部署且您不删除它,IP地址就不会改变。无论设备是否支持DNS,您部署云服务的方式都没有任何区别。现在,所有类型的就地升级都得到支持。 - astaykov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接