【问题标题】:Do I use a web service or a HttpHandler to serve images?我是使用 Web 服务还是 HttpHandler 来提供图像?
【发布时间】:2010-12-13 20:53:05
【问题描述】:

对你来说非常简单的问题.. 在 asp.net c# 中提供图像更好是 Web 服务还是 HttpHandler?

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      • 强制您在发送之前将整个文件加载到内存中
      • 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/>
      

      希望对你有所帮助。

      【讨论】:

        【解决方案3】:

        当然 IHttpHandler 是要走的路。因为..

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

        2. Web 服务在完全不同的环境中使用,例如为 SOA 应用程序公开端点。因此,Web 服务确实不是您目标的主要候选者。

        【讨论】:

          【解决方案4】:

          您可以使用任何一种,根据您提供的内容,我会使用处理程序,因为我认为它更适合这种类型的请求。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-01-15
            • 1970-01-01
            • 1970-01-01
            • 2012-04-16
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多