数据库或项目文件夹中的图像作为资源

时间:2012-02-21 19:30:08

标签: c# windows-phone-7 sql-server-ce bytearray windows-phone-7.1

我正在创建应用程序,其中我将拥有用户无法编辑的数据库。它只有数据,并向用户显示。我发现我不必使用localstorage我只是可以将数据库添加到项目中,它只是readonly。所以我做到了,一切都很好。现在我想将图像添加到我的应用程序中,我不确定什么是更好的方法。我可以将每个图像添加到文件夹,在数据库存储路径中的图像,这很容易,它现在可以做。或者我发现我可以将图像作为图像存储在数据库中(byte [])。什么是更好的?数据库中的图像会变小吗?是否会更快地加载图像?如果数据库中的图像是更好的解决方案,我可以轻松地将图像添加到现有数据库吗?在winforms中有没有任何文章可以做到这一点?感谢

修改 我很高兴我的问题有很多答案和意见。我想解释更多我的需求。我的应用程序应该有大约150张图片,图片大小应为150px和100px。我想应用程序可以工作没有互联网连接。它可以连接更新,但这一切。再次感谢所有意见:)

6 个答案:

答案 0 :(得分:3)

对于我们的应用,我们发现混合方法效果最好。我们将SQL环境配置为支持FILESTREAM,然后导入所有图像。这使我们可以灵活地在sql中拥有图像,同时仍然将实际图像存储到磁盘上。它是一个快速的解决方案,也可能适合您。

答案 1 :(得分:1)

我个人会将所有图像存储在独立存储中,而在数据库中我会存储图像的路径。

我会将所有图像作为byte []存储在isolatedstorage

答案 2 :(得分:1)

这里的答案没有错,但这实际上取决于你想要完成什么以及目前如何设置。

最好是使用内容传送网络来处理静态图像,以减轻Web服务器的负担。

您可以根据自己的喜好从数据库或文件结构中的资源文件进行服务。如果图像是静态的,请不要忘记添加适当的缓存,这对于静态内容来说将是遥远的未来。

如果您正在渲染图像,我肯定会将图像保存在数据库中,以便可以从任意数量的Web服务器访问图像。

如果您愿意,可以通过将最近使用的图像保存在内存中或存储在本地文件系统中来进一步开发,这样您就不必每次都从数据库中获取文件。

答案 3 :(得分:1)

有很多'ifs','buts'和'maybes'关于你放置图像的位置,我认为没有正确或错误的方法。

值得一提的是,如果应用程序对高可用性具有业务关键性,我会将它们存储在数据库中,因为可以使用其余数据进行备份。可以镜像数据库等,因此将所有图像视为“数据”可能是有益的。此外,如果事情变得很大并且使用了网络农场和负载平衡器等,那么当图像生活在一个地方时它会有所帮助。

对我来说,我会选择数据库。但这一切都取决于您的申请规模。

答案 4 :(得分:0)

网络文件夹。还考虑从像Amazon S3这样的云服务器远程加载它们以释放对自己服务器的访问权

答案 5 :(得分:0)

最好的选择是将您的图像存储在Web文件夹中,如果将它们保存在数据库中,您将浪费时间从数据库中检索它们,因为它需要更多时间