这是我的情况: 我有一个帐户(用户ID /密码)通过他们的API与航空公司中央预订系统进行通信。 API提供了连接,断开连接,登录,注销,sendcommand和getdatareturn的方法。
这是我按顺序获取所需数据的步骤。
我可以使用#3的多线程或并行技术从服务器获取数据吗?
答案 0 :(得分:2)
取决于连接类型。你如何连接,并保持联系?
如果它是一对保持通信(即有状态)的套接字,您可以尝试创建另一个连接,再次登录,并请求所需的数据。如果使用某种会话ID来关联后续请求,则完成无状态(例如通过HTTP),您可以简单地同时发出具有相同会话ID的多个请求,并查看是否有效。
因此,通过初始连接,您可以请求PNR列表,然后使用该连接和新连接为当前多个乘客请求乘客数据,获取列表中所有乘客的所有数据。
如果实现这两个选项的两个选项都不起作用,并且您仍然坚持使用一个连接,那么恐怕没有其他解决方案。难道你不能联系他们询问这是否可行?
答案 1 :(得分:0)
Can I use multithread or parallel techonology for #2 to get data from server?
它的目的是什么?
在返回数据之前,您无法退出系统,最后两个步骤当然不是资源密集型的,也不依赖于您的用户界面。
你真正想要做的是,多次发送命令,对多线程来说并不是真正的任务。您只需要发送命令,直到指示没有检测到其他数据的符号为止。
如果你还没有这样做,那只是意味着你应该这样做。
这与在控制台应用程序中读取用户输入没有什么不同。
答案 2 :(得分:0)
我担心我的回答是“这取决于”。我发现来自客户端的并行查询没有问题,并且一些信息(例如每个乘客的详细信息)可能可以在单独的并行查询中完成,但是获取完整列表听起来好像应该在单个查询中完成线程/连接。
为什么:我不知道您正在查询的系统,但听起来好像它会保存您的查询状态(他要求的是什么,他目前在列表的下方有多远),所以可能不会处理列表中的“给我1,2和3部分”非常好,特别是如果第3部分不存在(直到你看到第2部分末尾的“#”,你才知道,这取决于第1部分......)
答案 3 :(得分:0)
好吧,您可以使用并行操作来允许用户同时发出多个查询,假设CRS允许来自同一IP的多个连接。例如,用户可能在其屏幕上有多个“CRS”表单,因此可以同时处理多个查询,例如,针对不同的日期,机场,航班,pax。
正如其他海报所指出的那样,如果用户一次只处理一个查询,那么就没有什么可以并行的了(除了UI和客户端协议以外,UI没有被锁定,所以允许查询取消)。
那就是说,考虑到这样的要求,我通常会以这样的方式设计,即无论如何多个查询都是默认行为。我希望CRS查询表单能够托管与CRS交互所需的所有内容,以便在必要/可能的情况下,如果服务器支持,表单的两个实例将允许两个并发查询。这比运行两个进程的替代方法更灵活。