Очевидно, мое мнение состоит в том, что Haskell имеет переменные . Это и «тривиально» (по крайней мере, по мнению восьми пользователей SO) (хотя никто не может прийти к единому мнению о том, какой тривиальный ответ является правильным), и плохой вопрос, который нужно даже задать (по крайней мере, пять downvoters и четыре, кто проголосовал за закрытие Это). О, и я (и вычислительные ученые, и математики) ошибаюсь, хотя никто не может дать мне подробное объяснение, почему.
C # ID3 Library - это библиотека классов .Net для редактирования тегов id3 (v1-2.4). Я бы сохранил рейтинги прямо в разделе комментариев в mp3, поскольку id3v1 не имеет многих функций хранения, которые есть у id3v2. Если вы хотите сохранить дополнительную информацию для каждого mp3, как насчет размещения уникального идентификатора в mp3 и последующего поиска в базе данных?
Я был бы осторожен при добавлении пользовательских тегов в mp3, поскольку это простой способ испортить большая библиотека. Кроме того, я уже шел по этому пути и раньше, и хотя мне нравились полученные в результате знания программирования, лучше попробовать что-то вроде iTunes SDK или Last FM.
Я бы использовал однофайловую базу данных с нулевой конфигурацией. SQL Server Compact в вашем случае.
Я не думаю, что XML - хорошая идея. XML сияет в обмене данными и хранении очень небольших объемов информации. В этом случае пользователь может оценить тысячи треков (у меня лично есть онлайн-радио, которые позволяют выставлять оценки), и у вас может быть много другой информации о треке для хранения.
Экспорт и импорт с использованием процедур экспорта XML, если вам нужно . Не используйте его в качестве основного хранилища данных.
Я бы сохранил его в файле, так как его легче сохранить вместе с самим файлом mp3. Если все, что вы делаете, это сохраняете оценки, не могли бы вы вместо этого установить поле рейтинга ID3?
Я не думаю, что для этого типа очень простого хранилища это так уж важно. Плюсы XML в том, что его очень легко развернуть и редактировать вне вашего приложения. минусы в том, что его можно редактировать вне вашего приложения (может быть хорошо, а может быть плохо, зависит от вашей ситуации)
Может быть, другой вариант (только потому, что вы можете ;-) - это OODBMS, проверьте DB4Objects , это серьезно затягивает и очень, очень круто.
Как упоминалось ранее, лучше хранить такую информацию в самом медиа-файле. И я предлагаю использовать для этого TagLib # lib (лучшая библиотека метаданных мультимедиа, которую я могу найти). Очень мощный и простой в использовании.
Я бы сохранил рейтинги в XML-файле, так что его легко редактировать извне, легко читать в .NET, и вам не нужно беспокоиться о доставке базы данных для чего-то просто с вашим приложением.
Что-то вроде этого может сработать для вас:
<Songs>
<Song Title="{SongTitle}">
<Path>{Song path}</Path>
<Rating>3</Rating>
</Song>
</Songs>