我是否使用Web服务或HttpHandler来提供图像?

时间:2009-11-06 14:49:16

标签: c# asp.net web-services httphandler

对你来说非常简单的问题.. 在asp.net c#?

中提供服务图像是更好的Web服务或HttpHandler

有什么区别? 为什么我更喜欢一个而不是另一个?

感谢

4 个答案:

答案 0 :(得分:8)

我会选择HttpHandler。它更有效,因为它不通过正常的页面请求管道,并且是您有权访问请求的最早点。 Phil Haack有great boilerplate template

答案 1 :(得分:1)

我建议使用HttpHandler,因为它可以有效地传输二进制数据。网络服务

  • 强制您在发送之前将整个文件加载到内存中
  • base64encode您的文件(=> + 30%大小)

这是处理程序的c#代码:

public class ImageHandler : IHttpHandler
{
    public bool IsReusable
    {
        get { return true; }
    }

    //your handler will need somehing like http://xxxxx/Image.ashx?file=toto.png
    //(humm I suggest you to put adamantite++ validations here :p)
    public void ProcessRequest(HttpContext context)
    {
        string fileName = context.Request.QueryString["file"];
        context.Response.WriteFile(fileName);
    }
}

这是您需要添加的配置:

<configuration>
...
  <system.webServer>
    <handlers>
    <add name="MyImages" verb="*" path="Image.ashx" type="MyApp.ImageHandler, MyApp/>

我希望这对你有所帮助。

答案 2 :(得分:1)

当然,IHttpHandler是要走的路。监守..

  1. HttpHandler请求的带宽成本较低,因为请求 - 响应不像Web服务那样使用XML进行修饰。

  2. Webservices用于完全不同的上下文,例如公开SOA应用程序的端点。因此,网络服务实际上不是您的目标的主要候选者。

答案 3 :(得分:0)

你可以使用你所提供的任何一种,我会使用一个处理程序,因为它更适合我对这种类型的请求。

Web服务更多的是出现一系列操作以供第三方使用,您选择以特定方式公开内容(可能是为了满足某种授权行为),在这些情况下,您需要额外添加处理请求的逻辑,即你是以自定义的方式处理请求,因此我会使用处理程序。