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



我想要一些关于如何完成编程任务的建议。

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

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

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

我应该:

  1. 调用WCF服务构造时获取图像并返回该图像服务
  2. 调用WCF服务构造时图像,存储在服务器端,返回一个路径或URI/URL到图像

我希望做(2),但我不确定在哪里保存图像以及当试图暴露它时有什么含义。

web服务和Asp. net. Net应用程序很可能在同一台服务器上运行,如果这有帮助的话。

任何关于如何进行的建议将是非常感激的,特别是细节,如从WCF服务中保存安全的地方等

谢谢。

(我正在使用一个服务,因为会有其他客户端以外的Asp。.

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

现在,您可以直接选择基于REST的WCF服务来为这些图像提供服务,也可以将ASP。基于。NET的HTTP处理程序(作为facade)在WCF服务上为它们服务。如果你打算使用WCF并且图像大小很大,那么就考虑流式传输。我更倾向于使用facade,因为它可以帮助您将一些重要的关注点(如缓存和流)移出WCF世界。因此,在这种情况下,WCF服务将使用最好的端点从数据存储中交付图像数据。您的facade HTTP处理程序将在必要的WCF服务调用中转换url,获取图像数据,缓存到文件系统并提供给客户端。后续的请求将通过这个缓存的映像提供。因为您使用的是url和get请求,所以图像也会在客户端缓存(您可以通过在facade处理程序中发出显式头来控制这一点)。通常,获取图像的请求比更新数据的请求要高得多——通过不同的处理程序提供get请求,您可以独立于WCF服务进行扩展。

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

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

这篇文章有关于http处理程序的更多信息

最新更新