ASP.net/WCF服务图像处理建议

时间:2011-05-03 01:53:48

标签: asp.net wcf image

我想就如何处理编程任务提出一些建议。

我正在创建一个随时间收集数据的网站(用户输入数据),然后显示根据该数据创建的空间地图(根据要求)。

每次用户输入数据时,我都使用Web服务将数据存储到SQL数据库中(使用ef4)。

我现在的设计决定是当客户请求地图/图像时,我应该如何将图像返回给他们。

我应该:

  1. 在调用WCF服务构造时 图像并通过图像返回 服务
  2. 在调用WCF服务构造时 图像,商店     它服务器端某处,返回路径     或图像的URI / URL
  3. 我希望这样做(2),但我不确定在何处保存图像以及在尝试公开图像时会产生什么影响。

    如果WebService和Asp.Net应用程序完全有帮助,它很可能会从同一台服务器运行。

    关于如何继续进行的任何建议都将非常受欢迎,尤其是从WCF服务等安全保存的详细信息

    感谢。

    (我正在使用服务,因为除了请求数据的Asp.Net应用程序之外还有其他客户端)

2 个答案:

答案 0 :(得分:1)

这在很大程度上取决于您的客户可以使用哪种API?如果他们需要SOAP API,那么您必须使用WCF服务或asmx来提供图像。但是,更好的选择显然是HTTP API,即提供用于访问特定图像的唯一URL - 您可以使用REST样式URL或者可以选择通过查询字符串接受参数。从本质上讲,URL应该包含从数据库中检索图像所需的所有信息。

现在,您可以直接选择基于REST的WCF服务来提供这些映像,也可以将基于ASP.NET的HTTP Handler(作为Facade)放在WCF服务上来为它们提供服务。如果您要使用WCF并且图像大小很大,请考虑streaming。我更喜欢放置一个外观,因为它可以帮助您移动一些重要的问题,例如在WCF世界之外的缓存和流媒体。因此,在这种情况下,WCF服务将使用可能的最佳端点来从数据存储中提供图像数据。您的Facade HTTP处理程序将在必要的WCF服务调用中转换URL,获取图像数据,缓存到文件系统并提供给客户端。随后的请求将通过此缓存图像提供。因为您正在使用URL并获取请求,所以图像也会缓存在客户端(您可以通过在Facade处理程序中发出显式标头来控制它)。通常,获取图像的请求将大大高于更新数据的请求 - 通过通过不同的处理程序提供请求,您可以独立于WCF服务进行扩展。

答案 1 :(得分:0)

我会使用HTTP处理程序根据某些参数使用您的WCF服务。我使用类似的东西来检索存储为数据库中BLOB的图像,并在图像上设置一些默认大小。

将从asp.net页面上的图像标记调用HTTP处理程序。

This article在http处理程序上有更多信息