【问题标题】:Execution location for generating thumbnail images from HTML从 HTML 生成缩略图的执行位置
【发布时间】:2016-08-21 05:48:50
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: .net sql-server sqlclr


    【解决方案1】:

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

    此外,虽然您可以在大多数 .NET 环境(WebApp、Windows 应用、控制台应用等)中使用您喜欢的任何库,但您只能使用一小部分 .NET Framework 库 (Supported .NET Framework Libraries) 等限制(CLR Integration Programming Model RestrictionsHost Protection Attributes and CLR Integration Programming)。而且它可能会变得非常棘手,具体取决于用于生成图像的库:任何需要 UI 进行绘制的东西都可能无法工作,因为在 SQL Server 的 CLR 主机中无法访问 UI。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-25
      • 2014-01-12
      • 2016-05-03
      • 1970-01-01
      • 1970-01-01
      • 2013-10-22
      • 2013-11-23
      • 1970-01-01
      相关资源
      最近更新 更多