C++ C+中的数据持久性+;-建议更好的方法
我们正在开发一个复制工具,它定期将不同的文件夹从客户机复制到服务器机 当必须复制特定文件夹时,会在客户端创建一个复制对象(由我们的服务模块创建),该对象通过网络将文件夹中存在的文件的内容发送到服务器。在服务器上(由我们的服务模块)创建一个相应的接收对象,该对象接收文件 简而言之: 客户端抽象—复制对象(在自己的线程中运行),其职责是发送文件。 服务器端抽象-接收对象(在自己的线程中运行),职责是接收内容并创建/更新文件 现在,我们还需要一些计数器,比如发送的总字节数、接收的总字节数、上次复制时间等等。。。对于要复制的每个文件夹。只要服务在运行,这些计数器就需要持久化(不需要在服务/机器重新启动时持久化) 为了整合这些变化,我们正在讨论两种方法 请注意-需要跨复制周期维护计数器 方法1:对象重用 使计数器成为复制、接收对象的一部分,并在服务处于活动状态时保持接收对象和复制对象处于活动状态。 现在对于线程,可以采用以下任何一种方法C++ C+中的数据持久性+;-建议更好的方法,c++,design-patterns,class-design,C++,Design Patterns,Class Design,我们正在开发一个复制工具,它定期将不同的文件夹从客户机复制到服务器机 当必须复制特定文件夹时,会在客户端创建一个复制对象(由我们的服务模块创建),该对象通过网络将文件夹中存在的文件的内容发送到服务器。在服务器上(由我们的服务模块)创建一个相应的接收对象,该对象接收文件 简而言之: 客户端抽象—复制对象(在自己的线程中运行),其职责是发送文件。 服务器端抽象-接收对象(在自己的线程中运行),职责是接收内容并创建/更新文件 现在,我们还需要一些计数器,比如发送的总字节数、接收的总字节数、上次复制时间
在方法1和方法2中比较好,为什么?我会选择第二种方法。考虑一次复制多个文件的场景。您当前的设计已经支持这一点,只需使用复制对象生成另一个线程即可 如果您选择第二条路径,那么计数器对象仍然可以保留在主线程中,从工作线程接收更新计数器的信号。然而,第一种方法不支持这种情况 另一个场景:实时查看计数。如果您有一个gui或任何显示当前数据速率的东西,那么它不应该在工作线程中运行。无论如何,您都必须向gui线程发送信号。在那个地方数数已经很方便了 总结:对我来说,你的第二种方法似乎更灵活。它也是对当前设计引入较少更改的方法(您仍然可以扔掉对象,继续使用每个复制都有自己的对象范例)