сериализация таблицы данных для более позднего повторного использования

У меня есть заполненный DataTable, который я хотел бы сериализировать в файл для более позднего использования. Я просматривал опции, связанные с этим, и задался вопросом, мог ли кто-то указать на меня в правильном направлении.

Что я буду создавать, два метода - один для записи таблицы данных в файл и другого для создания новой таблицы данных с помощью файла в качестве входа. Имеет смысл использовать WriteXML () и Загрузка () методы, чтобы сделать это, и если так, на каком флаге (флагах) должны сфокусироваться? Спасибо за руководство.

Я использую.Net 2.0, если это помогает.

7
задан larryq 12 January 2010 в 23:05
поделиться

4 ответа

Я бы пошел на методы чтения / записи XML. Мы используем это довольно широко. Это быстро, это легко, он встроен в рамки.

10
ответ дан 6 December 2019 в 05:55
поделиться

Я думаю, что Silveira комментарий означает использование двоичной сериализации. И справа, что он очень быстро сравнится с XML, что сериализация очень медленно, сравнивается с двоичным, особенно для большого количества данных. Также потребуется намного меньше места на диске сравнить с XML.

    public static void Serialize(DataSet ds, Stream stream) {
        BinaryFormatter serializer = new BinaryFormatter();
        serializer.Serialize(stream, ds);
    }

    public static DataSet Deserialize(Stream stream) {
        BinaryFormatter serializer = new BinaryFormatter();
        return (DataSet)serializer.Deserialize(stream);
    } 
13
ответ дан 6 December 2019 в 05:55
поделиться

Необходимо помнить , как он был хэширован. Это для того, чтобы в будущем можно было хэшировать последовательность, чтобы проверить, является ли это их паролем, сравнивая его с хэшированным значением. Это означает, что в объекте необходимо сохранить перечисление или другое поле, указывающее на механизм хеширования, который использовался в базе данных.

В противном случае, если вы измените реализацию хэширования по умолчанию, все ваши старые хэшированные пароли перестанут быть хорошими, и ваши пользователи будут оставлены царапать голову о том, почему их пароли больше не работают - и вы получите интерфейс IHashingService , который не обеспечивает гибкости (поскольку реализация хеширования не может быть изменена без добавления странных правил, таких как «use this hash for Administrators created before 2010-01-12»), существующих без реальной причины.

С этой целью я бы добавил соответствующее поле (перечисление, последовательность, возвращенное интерфейсом IHashingService , что-то) и либо предложил NHibernate создать экземпляр службы хеширования для меня через реализацию IUserType , либо я бы использовал заводской образец, где конкретные экземпляры были предоставлены фабрике Это будет сочетать инъекцию на уровне способа Джарретта с решением, которое позволяет регидратированным объектам находить свои реализации хеширования без зависимости от контейнера IoC.

Удачи!

-121--3959411-

Помимо анализа Макдауэлла по стандарту URI, помните также, что фрагмент должен быть допустимым именем привязки HTML. В соответствии с http://www.w3.org/TR/html4/types.html#type-name

маркеры ID и NAME должны начинаться с ([A-Za-z]) и может следовать по любому количеству букв, цифр ([0-9]), дефисы («-»), подчеркивания («_»), двоеточия («:») и точки (".").

Так вам повезло. «:» явно разрешен. И никто не должен «%» -скапировать его, не только потому, что «%» там нелегальный символ, но и потому, что фрагмент во многом совпадает с якорным именем char-by-char, поэтому ни один агент не должен пытаться закалить их в любом случае.

Однако вы должны проверить его. Веб-стандарты строго не соблюдаются, иногда стандарты противоречат друг другу. Например HTTP/1.1 RFC 2616 не разрешает последовательность запроса в URL запроса, в то время как HTML создает одну при отправке формы с методом GET. То, что реализовано в реальном мире, выигрывает в конце дня.

-121--745648-

Является ли объект с данными в памяти? Если это так, можно просто использовать методы сериализации и десериализации. Они относительно быстро, и вы можете сохранить результат где хотите.

0
ответ дан 6 December 2019 в 05:55
поделиться

Вы можете использовать базовую технику сериализации базы данных в CSV-файлы с заголовками. Некоторые системы управления базой данных поддерживают простую загрузку данных из таких файлов. А в случае отсутствия dbms не составит особого труда написать код, который сделает это за вас. Это отвечает на ваш вопрос?

На мой взгляд, недостаток xml заключается в том, что он содержит, возможно, больше мета-данных, чем реальных данных. В случае csv-файлов мета-данные не повторяются.

1
ответ дан 6 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: