我有一个开源应用程序(here)
此应用程序获取一个字符或一个句子,并提供一些关于它的unicode信息。
使用Unicode.org提供的Unicode字符数据库这是一个XML文档(130MB)
首先我将这个XML嵌入到我的DLL中,但我不知道这是一个好方法还是不是。因为DLL大小的增长只是因为这个XML文档。我可以像任何其他资源一样使用它,但用户可以看到它。
我该怎么办?这个的最佳模式是什么?为什么?
TIA
答案 0 :(得分:1)
我认为XML不是这里的方式。特别是当性能至关重要时。如果它是那么大,请考虑切换到嵌入式dbs(例如SQLite或其他任何东西)。
要阅读有关XML与SQLite的更多信息,请查看以下问题:Xml or Sqlite, When to drop Xml for a Database?
答案 1 :(得分:1)
XML是一种数据交换格式。由于您已经考虑将XML文件嵌入到DLL中,因此可能没有人真正需要格式为XML。如何从XML文件中提取相关数据并将其作为资源存储在DLL中呢?首先,它可以节省您的空间,其次,您可以按照以后需要的方式组织数据。
答案 2 :(得分:1)
我想嵌入式资源是一个很好的选择如果你很乐意每次有变化时重新编译和重新部署;另外,仅仅因为你可能乐意这样做并不意味着每个人都会:)
一种非常常见的方法是抽象出接口背后的任何类型的数据访问;如果你这样做,你就可以让用户选择他们想要的实现(假设你提供了一对)并且让他们自己编写。在模式方面,这是Dependancy Inversion(也称为控制反转)。
如果您通过配置驱动提供商的实例(即:使用Factory),您将能够切换提供商,而无需重新部署应用程序的主要部分(消耗该部分的部分)数据)。因此,您可以拥有任意数量的不同提供程序:XML读取文件提供程序,SqlLite数据提供程序,基于Web服务/云的提供程序等。
我喜欢Rolands方法 - 您也可以将其构建为提供程序的实现(将文件读入内存,快速响应内存中的查询)。
答案 3 :(得分:0)
压缩文件的大小是多少?如果节省很多,请使用压缩资源,将资源解压缩到内存流,然后将流加载到XML文档中。