我正在开发一个简单的项目管理软件,该软件可以使经理创建/编辑项目并分配员工。它基本上应该像Excel / Word / PowerPoint一样工作,即本地安装的桌面应用程序可以从文件读取数据/向文件写入数据。该文件可以驻留在本地文件系统或网络共享上,以便可以在运行该软件的多台计算机上使用。
我对如何最好地将应用程序数据存储在本地文件中进行了广泛的研究,并从本质上发现了这两种可行的方法:
域模型序列化:使用二进制表示(例如,通过Java序列化等内置语言功能)或更具可读性的格式将域模型对象图序列化到文件系统(例如XML)。
缺点:域模型的更改导致先前序列化的数据变得不可读。
嵌入式数据库:通过OR-Mappers以类似SQL的样式舒适地访问数据,同时仍具有可以存储在用户想要的任何位置的本地文件。例如,SQLite似乎是将应用程序数据存储在本地文件中的理想选择[1]。
缺点:由于许多网络文件系统实现中的文件锁定错误,如果存储在网络驱动器上,SQLite可能会导致数据损坏。
与数据库服务器造成的开销(设置,维护,备份等)相比,嵌入式数据库的简单性极具诱惑力。其他应用程序(例如Excel)存储在NAS上时如何保持其文件的完整性?我知道大多数情况下都有一个锁定文件,但是这可能再次导致不希望的状态(如果应用程序崩溃了,因此没有删除该锁定文件)。
您对这种情况有何想法?我的应用程序如何以简单但可靠的方式存储其数据?除了客户端/服务器体系结构以外,还有其他解决方案可以维护应用程序数据的完整性吗?