我希望能够存储有关使用我的应用程序打开的歌曲的信息。我希望用户能够为歌曲评分,并且每次用户使用我的应用程序打开该文件时都会加载此评级。
我还需要知道是否应该将评级存储在数据库或xml文件中。
答案 0 :(得分:5)
C# ID3 Library是一个用于编辑id3标签的.Net类库(v1-2.4)。我会将评级直接存储到mp3的评论部分,因为id3v1没有id3v2的许多存储功能。如果你想为每个mp3存储额外的信息,那么在mp3上放置一个唯一的标识符,然后让它进行数据库查找呢?
我会谨慎地将自定义标签添加到mp3中,因为它是破坏大型库的简单方法。此外,我之前已经走过这条路,虽然我很享受从它出来的编程知识,尝试像iTunes SDK或Last FM这样的东西可能是更好的路线。
答案 1 :(得分:4)
我会使用单文件零配置数据库。在你的情况下SQL Server Compact。
我认为XML不是一个好主意。 XML在数据交换中闪耀,并存储非常少量的信息。在这种情况下,用户可能会对数千首曲目进行评分(我个人使用的是允许收视率的在线收音机),并且您可能还有很多其他信息可以存储这些曲目。
如果必须,使用XML导出过程导出和导入。不要将它用作主数据存储区。
答案 2 :(得分:2)
我会将它存储在一个文件中,因为它更容易与mp3文件本身保持一致。如果你所做的只是存储评级,你会考虑设置ID3评级字段吗?
答案 3 :(得分:1)
对于这种非常简单的存储,我认为这并不重要。 XML的专业人员非常容易部署,并且可以在您的应用之外进行编辑。 con,是你的应用程序之外的可编辑(可能是好的,可能是坏的,取决于你的情况)
也许另一种选择(只因为你可以;-)是一个OODBMS,看看DB4Objects,它非常容易上瘾,非常非常酷。
答案 4 :(得分:1)
如前所述,最好将此类信息存储在媒体文件中。我的建议是使用TagLib# lib(我能找到最好的媒体元数据库)。非常强大且易于使用。
答案 5 :(得分:0)
我会将评级存储在XML文件中,这样就可以很容易地从外部进行编辑,在.NET中易于阅读,而且您不必担心为应用程序提供简单的数据库。
这样的事可能适合你:
<Songs>
<Song Title="{SongTitle}">
<Path>{Song path}</Path>
<Rating>3</Rating>
</Song>
</Songs>
答案 6 :(得分:0)
如果歌曲格式支持合适的元数据(例如MP3),请遵循Kevin的使用元数据的建议。这是迄今为止最好的方法,也就是元数据的用途。
如果没有,那么它真的取决于你的申请。如果你想分享评级信息 - 特别是通过网络服务,那么我会选择XML:例如,将XML列表作为一个大型供稿提供是微不足道的。
XML(或大多数其他文本格式)还具有以下优点:人们可以在文本编辑器中轻松编辑它们。
如果你有一个更封闭的系统,你想要速度和快速索引,和/或你可能想要存储其他表(例如,有关专辑和乐队的数据),数据库将有其优势。