由于客户端不会一直在线,或者可能会出现连接中断(毕竟您使用的是移动数据),因此 TCP/IP 不是很可靠。
您可能会遇到中途连接故障以及各种其他连接问题。最重要的是,您必须对遇到的每种异常情况进行大量错误处理(并且您不会在开发过程中遇到所有这些情况)。
我假设客户端不是某种嵌入式设备,而是笔记本电脑(或从今年秋天开始的平板电脑:))。
因此,出于以下几个原因,我建议使用 WCF over MSMQ(事务性):
- 可靠的通信和消息传递,0 数据丢失。如果您使队列具有事务性并利用分布式事务,这适用。
- 未送达的消息会返回给您(在死信队列中),您可以进行日志记录、故障排除或将它们发回以进行进一步处理。
- 通讯中断。发送消息时,客户端甚至不必在线。它们只是在本地 MSMQ 中排队,并在客户端联机时转发到它们的目的地。同样适用于服务器。
这将适合您的情况,因为据我所知,您实际上并不需要双向通信。调度中心发送工单,由客户端接收(在线时),客户端对其进行处理,然后将状态发送回服务器。
In any case, you should model your messages in such a way they contain only mandatory metadata, easy to send over the air.
An easy sample of WCF client sending over MSMQ is here.