在Dart Web服务器中使用同步文件系统方法不是一个好主意吗?

丹尼·特彭尼(Danny Tuppeny)

我在玩HttpServer;并增加了对提供静态文件的支持(我知道Shelf;这是一项学习练习)。我有一个处理程序列表,这些处理程序可以按顺序处理该请求(在处理该请求的第一个处停止):

const handlers = const [
  handleStaticRequest
];

handleRequest(HttpRequest request) {
  // Run through all handlers; and if none handle the request, 404
  if (!handlers.any((h) => h(request))) {
    request.response.statusCode = HttpStatus.NOT_FOUND;
    request.response.headers.contentType = new ContentType("text", "html");
    request.response.write('<h1>404 File Not Found</h1>');
    request.response.close();
  }
}

但是,当我实现静态文件处理程序时,除非我使用file.existsSync(),否则我意识到我无法直接返回true / false(上面的handleRequest代码要求此信号,以指示是否处理了请求)。

在诸如ASP.NET之类的东西中,我不会再三考虑请求中的阻塞调用,因为它是线程化的。但是在Dart中,如果这样的IO命中期间每个请求都阻塞其他每个请求,则似乎是一个瓶颈。

因此,我决定看一下Shelf,看看它是如何处理的;但令人失望的是,它似乎执行了相同的操作(实际上,它执行了多个同步文件系统命中)。

我是否高估了这种影响?还是对Dart网络服务来说不是一个好主意?我不是在写脸书;但是我仍然想学习以最有效的方式写东西。

如果认为不好;是否有内置的方式“按顺序执行这些期货,直到第一个期货返回此条件的匹配项”?我可以看到Future.forEach,但是它没有保释的能力。我猜想“ Future.any”可能就是如果它存在的话(但事实并非如此)?

塞思·拉德(Seth Ladd)

您的帖子中有很多很好的问题(也许我们应该将它们分解为单独的SO问题?)。

为了回答帖子标题的问题,服务器的最佳实践是使用异步方法。

对于命令行实用程序和简单脚本,sync方法非常好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在生产环境中使用消息队列作为websocket服务器(而不是Java EE @ServerEndpoint)是一个好主意吗?

来自分类Dev

在生产环境中使用消息队列作为websocket服务器(而不是Java EE @ServerEndpoint)是一个好主意吗?

来自分类Dev

Angular 2 Dart:在Dart中使用NgModule

来自分类Dev

在 ups 中使用 docker 部署生产服务器是个好主意吗?

来自分类Dev

如何从Dart服务器(dart:io)获取URL?

来自分类Dev

如何从Dart服务器(dart:io)提取URL?

来自分类Dev

在单元测试中使用与被测系统中相同的常量是一个好主意吗?

来自分类Dev

在单元测试中使用依赖注入对象不是一个好主意吗?

来自分类Dev

使用只读根文件系统是嵌入式安装的一个好主意吗?

来自分类Dev

在外部硬盘上使用压缩的NTFS文件系统是一个好主意吗?

来自分类Dev

使用hgignore忽略* .orig文件不是一个好主意吗?

来自分类Dev

在Web应用程序中使用反射是一个好主意吗?

来自分类Dev

Dart资产与Web目录?

来自分类Dev

Dart的服务器端框架

来自分类Dev

Dart HTTP服务器和期货

来自分类Dev

Dart Aqueduct 服务器基础授权

来自分类Dev

使用Dart和Bootstrap

来自分类Dev

使用Dart编辑CSS

来自分类Dev

使用Dart和Bootstrap

来自分类Dev

dart作为服务器Web应用程序或golang

来自分类Dev

Dart Server Side:将Shelf而不是IO用作Web服务器的优势在哪里?

来自分类Dev

如何从我的简单 .dart 文件创建一个插件以在 Flutter 中使用?

来自分类Dev

Dart:用Dart编写并在dart2js中使用的浏览器Webworker中

来自分类Dev

开发两个单独的节点应用程序来提供Web服务并使用Web Service在浏览器上呈现它是一个好主意吗?

来自分类Dev

Dart编辑器:Dart没有被调用吗?

来自分类Dev

在Dart中使用Jquery UI

来自分类Dev

使用Dart WebSocket服务器支持WebSocket关闭原因

来自分类Dev

列表地图无法在Dart中使用吗?

来自分类Dev

在具有自动缩放功能的节点服务器上的同一服务器上实现弹性搜索服务是一个好主意吗?

Related 相关文章

  1. 1

    在生产环境中使用消息队列作为websocket服务器(而不是Java EE @ServerEndpoint)是一个好主意吗?

  2. 2

    在生产环境中使用消息队列作为websocket服务器(而不是Java EE @ServerEndpoint)是一个好主意吗?

  3. 3

    Angular 2 Dart:在Dart中使用NgModule

  4. 4

    在 ups 中使用 docker 部署生产服务器是个好主意吗?

  5. 5

    如何从Dart服务器(dart:io)获取URL?

  6. 6

    如何从Dart服务器(dart:io)提取URL?

  7. 7

    在单元测试中使用与被测系统中相同的常量是一个好主意吗?

  8. 8

    在单元测试中使用依赖注入对象不是一个好主意吗?

  9. 9

    使用只读根文件系统是嵌入式安装的一个好主意吗?

  10. 10

    在外部硬盘上使用压缩的NTFS文件系统是一个好主意吗?

  11. 11

    使用hgignore忽略* .orig文件不是一个好主意吗?

  12. 12

    在Web应用程序中使用反射是一个好主意吗?

  13. 13

    Dart资产与Web目录?

  14. 14

    Dart的服务器端框架

  15. 15

    Dart HTTP服务器和期货

  16. 16

    Dart Aqueduct 服务器基础授权

  17. 17

    使用Dart和Bootstrap

  18. 18

    使用Dart编辑CSS

  19. 19

    使用Dart和Bootstrap

  20. 20

    dart作为服务器Web应用程序或golang

  21. 21

    Dart Server Side:将Shelf而不是IO用作Web服务器的优势在哪里?

  22. 22

    如何从我的简单 .dart 文件创建一个插件以在 Flutter 中使用?

  23. 23

    Dart:用Dart编写并在dart2js中使用的浏览器Webworker中

  24. 24

    开发两个单独的节点应用程序来提供Web服务并使用Web Service在浏览器上呈现它是一个好主意吗?

  25. 25

    Dart编辑器:Dart没有被调用吗?

  26. 26

    在Dart中使用Jquery UI

  27. 27

    使用Dart WebSocket服务器支持WebSocket关闭原因

  28. 28

    列表地图无法在Dart中使用吗?

  29. 29

    在具有自动缩放功能的节点服务器上的同一服务器上实现弹性搜索服务是一个好主意吗?

热门标签

归档