dll中的二进制数据无法管理

时间:2010-09-14 08:42:08

标签: c# database templates dll binary

目前,我们在C#解决方案中将报表模板(word docs)存储为dll中的二进制数组。

public readonly static byte[] audit_engagement_template = new byte[] {208,207,17,224,161,177,26,225,0,0,0,0,0,0,0,0,...

等等。现在这个文件变得巨大且非常难以管理,因为Visual Studio在打开时开始使用超过2.5Gb的内存。

我们曾经将这些数据存储在数据库中,但是我们需要尽可能减少数据库占用空间,并减少从客户端打开/编辑这些模板时使用的带宽。这就是我们将这些文件直接移到解决方案中的原因。

有人可以建议任何替代方法来存储这些文件(并且不允许客户从应用程序外部触摸它们)吗?

2 个答案:

答案 0 :(得分:4)

尝试将文件作为嵌入资源包含在DLL中,然后使用Assembly.GetManifestResourceStream加载它们,而不是将它们放在二进制数组中。检查,但我认为这可能更有效......并且当然可以更好地分离代码和数据。

答案 1 :(得分:0)

您使用的数据库是什么? SQL Server将使用FILESTREAM功能执行您想要的操作。它使用本地文件系统来存储文件,因此它们只存在于一个文件夹中,但它们是通过SQL访问的。备份变得更加容易,并且很容易授予只读访问权限。

有关详细信息,请参阅the MSDN article