Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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# 将图像作为响应流发送,或使用JSON响应指向文件共享上的图像_C#_Performance_Rest_Architecture_Image Processing - Fatal编程技术网

C# 将图像作为响应流发送,或使用JSON响应指向文件共享上的图像

C# 将图像作为响应流发送,或使用JSON响应指向文件共享上的图像,c#,performance,rest,architecture,image-processing,C#,Performance,Rest,Architecture,Image Processing,我想知道使用这些不同技术的利弊 将映像作为响应流发送只会向服务器发出一个请求,但会为服务占用更多的处理能力 与将图像保存在文件共享上并将url发送回客户端,以及让客户端直接在文件共享上请求图像相比 您会推荐什么策略,这项服务将有大量的请求。我认为最好的方法是直接发送图像,因为: 只有一个请求 操作硬盘是不可能的 RAM中的图像使用较少 另一方面,我看到了许多缺点: 您使用硬盘驱动器两次(写入和读取) 您的服务器必须处理两个请求 RAM中的图像用于写入、读取和发送 您必须做一些测试,但我认

我想知道使用这些不同技术的利弊

将映像作为响应流发送只会向服务器发出一个请求,但会为服务占用更多的处理能力

与将图像保存在文件共享上并将url发送回客户端,以及让客户端直接在文件共享上请求图像相比


您会推荐什么策略,这项服务将有大量的请求。

我认为最好的方法是直接发送图像,因为:

  • 只有一个请求
  • 操作硬盘是不可能的
  • RAM中的图像使用较少
另一方面,我看到了许多缺点:

  • 您使用硬盘驱动器两次(写入和读取)
  • 您的服务器必须处理两个请求
  • RAM中的图像用于写入、读取和发送

您必须做一些测试,但我认为直接发送图像在瞬间更贪婪,但总的来说,保存的图像解决方案越贪婪。

基本上取决于图像的处理需要

如果您的图像专门针对每个请求进行处理,则每次都需要动态创建一个新图像。在这种情况下,没有理由保存文件并在链接中共享

如果你的图像会被其他请求重用,那么你可以同时考虑这两个问题。流媒体开销不是一个完全棘手的问题,但存在以下开销:

  • 处理开销
  • 由托管代码处理的请求
  • 每个请求调用的所有HttpModule/Handler
  • 即使由iis(动态缓存)缓存,流式处理也比发送文件成本更高
  • 您将难以在多台服务器之间共享此文件->仅本地缓存(如果您必须支付分布式缓存访问费用,则不再相关),此外,文件应通过cdn访问
此外,出于性能原因,您应该希望尽快释放http请求处理中的其他请求,然后获取静态文件映像是浏览器上的另一项工作网络任务


恢复,考虑您的使用和图像数据的生命周期。

谢谢您的输入,我仍然需要将图像保存到光盘上,因为在将图像发送回客户端之前需要花费大量的时间来处理图像。我只想处理一次图像,下一次请求时,它将在光盘上可用。@Flatron我建议使用地图驱动器光盘,以便进行写入和读取