Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CMS的图像管理方法_C#_Asp.net_Image_Sql Server 2008_Content Management System - Fatal编程技术网

C# CMS的图像管理方法

C# CMS的图像管理方法,c#,asp.net,image,sql-server-2008,content-management-system,C#,Asp.net,Image,Sql Server 2008,Content Management System,我正在使用ASP.Net、C#和SQLServer2008实现CMS。对于图像管理,我手头有两种方法 1] 将图像存储在文件夹中,并通过准备保存图像路径和名称的数据集来读取图像。(这里我无法动态管理备用文本,因为我只能获取路径和图像名称) 2] 将图像存储在文件夹中,并将所有属性存储在表中(Id、名称、路径、备用文本等) 那么,哪种方法是最好的和优化的?或者给我其他比这两种方法更好的方法。\p>\2这基本上是存储图像的黄金标准 第三个但不太受欢迎的选项是将实际图像保存为blob,或者更糟糕的是,

我正在使用ASP.Net、C#和SQLServer2008实现CMS。对于图像管理,我手头有两种方法

1] 将图像存储在文件夹中,并通过准备保存图像路径和名称的数据集来读取图像。(这里我无法动态管理备用文本,因为我只能获取路径和图像名称)

2] 将图像存储在文件夹中,并将所有属性存储在表中(Id、名称、路径、备用文本等)

那么,哪种方法是最好的和优化的?或者给我其他比这两种方法更好的方法。

\p>\2这基本上是存储图像的黄金标准


第三个但不太受欢迎的选项是将实际图像保存为blob,或者更糟糕的是,将base64编码的字符串保存在数据库中。这要求您保存mime类型,并使用数据uri或web服务将图像作为二进制内容返回。(这不是一个好主意,它会给你的数据库增加很多不可索引的开销,尽管你可能有一个极端的用例,这似乎是一个好主意。如果你想在一个api调用中为资产和记录提供服务的移动应用程序返回,它可能会很有用,但即使这样,它也不总是一个好主意。

Amazon S3是n金标准是什么?-它可以轻松扩展并保持应用程序文件系统和数据库的纤细。NTFS不能很好地扩展超过100K的文件,IIS和ASP.NET也不能很好地处理超过400个文件夹,特别是在SAN上

@j_mcnally微软的官方立场是避免将图像放在DB中。它速度快,但比NTFS慢,并且像mad一样使用RAM,防止IIS高效缓存和文件流

使用MS SQL或键值存储来保存S3图像URL,但将实际数据存储在S3上有很多优点—实际上具有无限的可扩展性、低廉的带宽成本,并且您的ASP.NET服务器可以专注于响应,而不是陷入静态文件的困境

另请注意,您使用的是单源成像吗?CloudFront非常便宜,而且只需要大约10分钟。然后您可以请求这样的图像:

http://images.mysite.com/folder/image.jpg;宽度=300;高度=300;模式=裁剪


主映像将从S3中检索,在.NET服务器上调整大小,并由CloudFront缓存边缘。快速、高效、廉价。最重要的是,灵活。

实际上#3是一种下注方法-它意味着您拥有完美的事务性、备份集成,然后可以将LOB移出到文件系统中在维护的同时,你也可以做很多大多数程序员在做CMS时都不知道的事情…比如为一篇已发表的文章存储图像并删除。只需将图像保存在DB中作为图像数据类型-为什么需要存储mime类型或Web服务?