Если вы можете ограничить себя определенными типами, которые легко отображаются на типы SQL, у меня будет соблазн сохранить их в отдельных столбцах таблицы, убедившись, что вы заполните только один из них. данные в базе данных, что делает специальные запросы проще. Это также означает, что вы не навсегда заблокированы в .NET.
Существует множество различных вариантов сериализации. Основными являются, конечно, BinaryFormatter
и XmlSerializer
; XML гораздо более переносим, но за счет места. Я считаю, что он также менее настраиваемый.
Существуют сторонние технологии сериализации, такие как Thrift и Буферы протокола . Они будут более ограничительными с точки зрения того, что они могут сериализовать), но будут более переносимыми. (Отказ от ответственности: мой 20% проект - это C # порт протокольных буферов, поэтому я здесь не совсем беспристрастен.)
Вам также следует рассмотреть возможность создания версий - что вы хотите, чтобы произошло, если вы измените структуру данных, которую сериализуете / десериализуете? Может быть, вам не нужно уметь читать «старые» записи, может быть, вы делаете. Возможно, вам нужен старый код, чтобы читать «новые» записи, или нет.
Ваш выбор технологии должен определяться требованиями. Чем более общим вы пытаетесь это сделать, тем сложнее оно становится - поэтому решайте, что вам действительно нужно, прежде чем пытаться найти решение.