预定的,长时间运行的用户查询

时间:2015-05-02 09:31:37

标签: c# wcf encryption service architecture

我需要社区提出一些建议。以下是要求,我需要一些方法建议。

来自客户端的用户需要从我的源数据库中检索数据(比如我的生产服务器中的SQL数据库)。用户通过中间服务层(WCF休息服务)访问数据。在另一台服务器(Info Server)上,我有一个SQL数据库(信息数据库),它将保存所有可以请求的查询。由于在某些情况下我的数据很大,我给用户选择安排数据检索并稍后查看数据。每个用户的日程安排信息也将存储在信息数据库中。我还允许用户在需要时实时检索数据。

在这两种情况下,我想查询来自源(生产数据库)的数据,以文件格式(可能是CSV或Excel)存储它们,然后当用户想要数据时,我会将数据发送到客户端。

由于查询存储在InfoDB中。我让管理员为每个Query定义计划运行时间。这是为了使管理员能够调整在对服务器的调用较低时在夜间运行的长时间运行查询。如果用户要求实时运行查询,我会允许。

作为解决方案架构,我已经想到了这个:

  1. 我将有一个WCF休息服务,它将安装在Info Server上。此服务将充当用户的呼叫点。当用户实时调用查询时,服务将获得结果,保存为文件格式并将其传输。如果用户安排查询,该服务将在信息数据库中为用户/查询添加条目。
  2. 我将在Info Server上安装Windows服务。此Windows服务将定期检查Info DB中的Scheduled Queries条目,如果查询在预定时间内,它将开始运行查询,获取数据并将其保存到文件位置并将文件位置条目添加到Schedule条目。这将使我能够跟踪哪些计划已完成以及数据可用的位置(文件路径)。
  3. 现在我的问题是:

    1. 我的数据可能很大,WCF休息服务是否足以通过网络传输大文件?我可以通过网络传输文件,还是需要将数据作为JSON传输?什么是最好的方法。
    2. 如果我使用Windows服务,这是一个好方法还是有更好的选择?我问的原因是因为根据我的理解,Windows服务必须始终运行,因为我需要弄清楚计划的条目。这意味着在特定时间间隔,Windows服务将检查信息数据库并查看是否应运行计划条目。在理想的情况下,Windows服务将在一天之内运行并定期检查数据库而不需要太多动作,因为最好所有时间表都是在夜间。
    3. 我使用了中介服务方法,因为如果我明天需要迁移到云端,我可以轻松地移动此解决方案。我的假设是对的吗?
    4. 如果我明天迁移到云端,我是否需要加密数据传输(可能是数据加密或文件加密)。我不知道数据加密/解密。
    5. 需要你的建议。

0 个答案:

没有答案