Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我是使用web服务还是HttpHandler来提供图像?_C#_Asp.net_Web Services_Httphandler - Fatal编程技术网

C# 我是使用web服务还是HttpHandler来提供图像?

C# 我是使用web服务还是HttpHandler来提供图像?,c#,asp.net,web-services,httphandler,C#,Asp.net,Web Services,Httphandler,对你来说这个问题很简单。。 在asp.net c#中使用web服务或HttpHandler更好地提供图像服务 有什么区别? 为什么我更喜欢一个而不是另一个 谢谢您可以使用任何一种,根据您提供的信息,我会使用处理程序,因为我认为它更适合这种类型的请求 Web服务更多的是为第三方提供一系列操作,您选择以特定方式公开内容(可能是为了满足某种授权行为),在这些情况下,您将为如何处理请求添加额外的逻辑,即,您以自定义方式处理请求,因此我将使用处理程序。您可以使用任何一种,根据您提供的,我将使用处理程序,因

对你来说这个问题很简单。。 在asp.net c#中使用web服务或HttpHandler更好地提供图像服务

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


谢谢

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


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

您可以使用任何一种,根据您提供的,我将使用处理程序,因为我认为它更适合此类请求


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

我将使用HttpHandler。它的效率更高,因为它不经过正常的页面请求管道,并且是您可以访问请求的最早点。Phil Haack有一个。

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

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

  • 在发送之前,强制您将整个文件加载到内存中
  • Base64对文件进行编码(=>+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/>

...

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

  • 在发送之前,强制您将整个文件加载到内存中
  • Base64对文件进行编码(=>+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/>

...

当然,伊奇芬德勒是一条路要走。因为

  • HttpHandler请求的带宽成本较低,因为请求响应没有使用类似XML的web服务进行修饰

  • Web服务在完全不同的上下文中使用,比如为SOA应用程序公开端点。因此,Web服务并不是实现您的目标的最佳候选


  • 当然,伊奇芬德勒是一条路要走。因为

  • HttpHandler请求的带宽成本较低,因为请求响应没有使用类似XML的web服务进行修饰

  • Web服务在完全不同的上下文中使用,比如为SOA应用程序公开端点。因此,Web服务并不是实现您的目标的最佳候选