Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture 服务器询问客户端信息?_Architecture_Client Server_Protocols - Fatal编程技术网

Architecture 服务器询问客户端信息?

Architecture 服务器询问客户端信息?,architecture,client-server,protocols,Architecture,Client Server,Protocols,在客户机-服务器系统中,服务器方法“询问客户机”以获取更多信息是否被认为是良好的体系结构?如果是这样,设计这样一个场景的最佳方式是什么?这有“模式”吗 例如,假设最终用户在客户机UI中选择了一组他们想要删除的记录,然后客户机使用该组记录作为参数向服务器发出“删除记录”调用。然后,服务器找到这些记录的一个子集,这些记录在某种程度上是“特殊的”,因此需要用户确认。服务器在继续从客户端到服务器的原始调用的同时,以某种方式向客户端“回调”一个名为“确认记录”的方法是否合适 对于可能需要在服务器和客户端之

在客户机-服务器系统中,服务器方法“询问客户机”以获取更多信息是否被认为是良好的体系结构?如果是这样,设计这样一个场景的最佳方式是什么?这有“模式”吗

例如,假设最终用户在客户机UI中选择了一组他们想要删除的记录,然后客户机使用该组记录作为参数向服务器发出“删除记录”调用。然后,服务器找到这些记录的一个子集,这些记录在某种程度上是“特殊的”,因此需要用户确认。服务器在继续从客户端到服务器的原始调用的同时,以某种方式向客户端“回调”一个名为“确认记录”的方法是否合适


对于可能需要在服务器和客户端之间进行长时间“对话”的更复杂的服务器调用呢?

某种回答说“x、y和z记录未被删除,请使用
I\u RELLY\u想\u
设置为删除它们”对我来说似乎是一个合理的解决方案

一般模式;不要问,做事情,然后汇报,让客户决定下一步做什么。这可以在持久连接的上下文中以对话框的形式完成


不是我的专业所以。。。添加64mg NaCl

这样的回调可以反转客户端和服务器的角色。在许多这类体系结构中,客户机没有侦听请求的能力。如果是这样的话,你就开始研究P2P系统了。也许像这样的事情可能会奏效

client code: 
  special_records = server.deleteRecords(records)
  server.deleteSpecialRecords(special_records)

server code:
  def deleteRecords(records):
    special_records = detectSpecialRecords(records)
    reply(special_records)
    actuallyDeleteRecords(records - special_records)

因此,对deleteRecords的第一次调用将返回需要显式删除的这些特殊记录的列表。希望这有帮助。

我认为这种安排完全可以。没有什么可以阻止服务器向客户机回复查询,以获取更多信息并由客户机提供。只要套接字连接打开,您就可以自由地来回发送消息


我看到过这样一种安排,客户机向服务器发送消息,之后只需在stdin/out和本地机器上的文件系统上做一个小层,由服务器控制。它工作正常,速度非常快。

客户端正在发送要删除的文件列表,对吗?只需让服务器回复一个成功状态列表,指出哪个文件被删除了,哪个文件没有被删除,以及为什么没有被删除(不存在,没有权限等)

如果常见的情况是所有文件都已成功删除,则可以使用状态字段启动响应,该字段指示是否已删除所有文件,或者客户端是否需要实际评估状态代码以查看操作的进展情况

通过此响应,客户机应该能够更新其对服务器状态的视图,至少是关于已选择删除的文件的视图(即,从UI中删除那些已成功删除的文件,但也删除那些不再存在的文件;此外,可能会相应地指出服务器由于缺少权限而无法删除的文件)