我的问题是关于将使用数据库服务器所在的主机应用程序的应用程序,以及将向主机发送信息的一些客户端。
基本上,主机应用程序从客户端接收一些数据,进行一些计算和错误检查,然后(如果一切顺利)它将信息存储在数据库中。收到的数据可以很容易地序列化,或者用少于50个字符的字符串分隔字符。
我知道我在开发此通信应用程序时的基本选项是WCF并且之前已经使用过它,但我对这个特定情况的关注是:
主机和客户端通常会通过无线USB调制解调器连接到互联网,据我们所知,这些调制解调器无法提供最可靠的连接。
将会有许多客户端同时向主机发送信息,每个客户端都有自己的标识ID,因为它确定了收到的数据类型及其代表的内容。
由于连接不太可靠,我希望能够知道数据包是否已成功发送,以及是否能够在通信完成之前继续尝试。
每隔几分钟就会从每个客户端发送新数据,如果我们说连接失败5分钟,我希望能够在恢复连接时发送所有未发送的信息。
最后,我有点想弄清楚我怎么能知道在哪里联系主机,因为usb调制解调器没有静态IP,这可能会不时发生变化。
我的想法是尝试通过WCF服务建立通信,其中客户端将直接向主机发送所有信息,或者考虑以XML格式从客户端序列化数据,然后将它们上传到第3台服务器上一直可用,然后每隔一分钟使用主机应用程序尝试将可用信息与第3台服务器同步。
希望我用这篇冗长的帖子清楚地说明了我想要完成的事情,并且非常感谢你对这样一个项目的想法。
答案 0 :(得分:3)
而不是开始讨论。我试着给你一个答案。
我已经实现了你描述的系统。根据这些经验,我可以告诉您,您将希望查看基于消息的系统,以便在您的客户和主机之间进行通信。
基于消息的系统允许您透明地处理正在进行的通信。它允许您重新发送消息,以防它无法传输。
为了简而言之,.Net社区可以使用各种基于消息的框架。仅举几例:NServiceBus,Mass Transit,Rhino Service Bus,或者更轻量级的Agatha RRSL。
重点是,有很多。由您来研究它们并找出最适合您需求的那些。