用于从HTML生成缩略图图像的执行位置

时间:2016-08-21 05:48:50

标签: .net sql-server sqlclr

使用.NET,当用户使用在线文本编辑器并存储信息时,我们希望生成已创建的HTML的预览图像。

到目前为止,作为概念验证,我们已经从HTML创建了图像并存储了它,但是,执行此操作的最佳位置是什么(记住性能)。

  1. 在应用程序的业务层中

    • 抓住HTML,
    • 创建图片
    • 将图像存储在文件服务器上
    • 发送缩略图链接以及要存储在数据库中的其余数据。
  2. 创建一个在插入数据库时​​触发的CLR过程

    • 从插入的HTML生成图像
    • 将图像存储在文件服务器上
    • 更新数据库行以存储指向新缩略图的链接

1 个答案:

答案 0 :(得分:0)

我没有看到通过SQLCLR在SQL Server中执行此操作的任何好处。如果进入表中的数据来自各种外部源/应用程序,可能无法保证使用缩略图生成例程,则可能会有所帮助。但听起来这些数据来自您控制的单一来源。因此,在这种情况下,在SQLCLR中执行此操作可能不利于性能,而不是在应用层处理它(SQL Server是该处理的单一来源,而app服务器可以扩展)。

此外,虽然您可以在大多数.NET环境(WebApp,Windows应用程序,控制台应用程序等)中使用任何您喜欢的库,但您只能使用一小部分.NET Framework库(https://jsfiddle.net/m5k5Lkm4/)以及其他限制(Supported .NET Framework LibrariesCLR Integration Programming Model Restrictions)。并且可能变得非常棘手,具体取决于用于生成映像的库:任何需要用于绘制UI的内容都可能无法工作,因为在SQL Server中无法访问UI CLR主持人。

现在,VARBINARY(MAX)列的SQL Server中存储缩略图图像可能会有好处。好处是缩略图将与它所基于的数据一起备份,因此如果服务器崩溃,您将在恢复数据库时返回缩略图。它还有助于确保某人或某些其他进程不会出现并删除一个或多个缩略图,这些缩略图可能会在存储在文件系统中时发生。然后,在更新或删除条目时,您也不必担心文件系统的清理。当然,它还取决于您期望的缩略图数量以及它们的大小。我认为它不是太大,因为它们是缩略图。