Двоичные данные в dll неуправляемы - PullRequest
1 голос
/ 14 сентября 2010

В настоящее время мы храним шаблоны отчетов (Word Docs) в виде двоичных массивов в DLL в нашем решении C #.

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,5 ГБ памяти при каждом открытии.

Мы использовали для хранения этих данных в базе данных, однако нам необходимо сделать как можно меньший объем нашей базы данных, а также уменьшить пропускную способность, используемую при открытии / редактировании этих шаблонов со стороны клиента.Вот почему мы переместили эти файлы непосредственно в решение.

Может кто-нибудь предложить какие-либо альтернативы для хранения этих файлов (и не разрешать клиентам прикасаться к ним извне приложения)?

Ответы [ 2 ]

4 голосов
/ 14 сентября 2010

Вместо того, чтобы помещать их в двоичные массивы, попробуйте включить файлы в качестве встроенных ресурсов в DLL, а затем используйте Assembly.GetManifestResourceStream для их загрузки.Проверьте, но я думаю, что это может быть более эффективным ... и это будет , конечно, будет лучшим разделением кода и данных.

0 голосов
/ 14 сентября 2010

Какую базу данных вы используете?SQL Server будет делать то, что вы хотите, используя функцию FILESTREAM.Он использует локальную файловую систему для хранения файлов, поэтому они просто существуют в папке, но доступ к ним осуществляется через SQL.Резервное копирование становится намного проще, и его легко предоставить доступ только для чтения.

См. статью MSDN для получения дополнительной информации.

...