我们正在开发一个应用程序,该应用程序具有本地安装的组件(Windows 服务 + UI,与本地硬件交互),它将其数据与基于 Azure 云的应用程序同步(集中数据,提供报告/等)。本地组件必须能够离线运行(在没有连接的远程站点长达一周)。此外,一个站点可能有不止一台 PC 托管该应用程序,并且这些本地应用程序实例中的每一个都必须彼此保持同步,即使它们与云应用程序断开连接也是如此。
- 我们预计每个企业有 10 到 100 个站点,每个站点安装多达 10 个本地应用程序。
- 我们主要是 .NET/C# 开发人员。
- 过滤应用于记录级别,主要是为了允许通过有时有限的 WAN 连接配置新站点/机器,并持续减少在站点传输和存储的数据量。
- 我们更愿意坚持使用 Azure/SQL Azure/.NET。
我一直在寻找各种选择,但似乎都达不到要求:
- MS Sync Framework 似乎已被放弃(我错了吗?没有 SQL Compact 4 支持?)。此外,它似乎对过滤有一些限制,在监控和解决问题方面似乎非常不透明,并且在应用过滤时可能存在知识碎片问题。
- 非 MS 嵌入式关系数据库要么不提供同步机制,仅限于中心辐射型,要么似乎一年内没有更新(例如 empress)。
- No-SQL 数据库(我承认我只看过大约 20 个,然后只是表面上看)似乎更专注于分布数据和查询负载,而不是实际在所有节点上复制数据。当 LAN 与 WAN 断开连接时,我找不到任何允许 LAN 上的对等方之间进行同步的方法。
即使忽略了在与云断开连接时保持 LAN 上的对等点同步的愿望,我也无法找到任何支持来自 .NET/Azure 的记录级过滤同步的嵌入式数据库。
有没有人解决过类似的问题并找到了解决方案?在这种情况下构建我们自己的解决方案是否有意义?