适用于Gleam的精益HTTP服务器

2020-08-26 23:18:26

LEAN服务器是用Gleam编写的HTTP服务器(Gleam是一种用于Erlang虚拟机(BEAM)的新类型安全语言)。LEAN是MIDAS Web框架的内置服务器。

导入MIDAS/精益。{MaxConency}导入GLEAM/HTTP FN句柄(_Request){http.response(200)|>;http.set_body(";Hello,World!";)}fn start_link(){lean.start_link(Handle,8080,[MaxConency(100000)])}。

精益弥补了我在开发Ace和RaxX时学到的教训。ACE是用Elixir编写的HTTP服务器,旨在抽象出HTTP/1和HTTP/2之间的差异。ACE还支持HTTPS和用于流式请求/响应的长期连接。

在我看来,Ace的目标是成功的。然而,将所有这些功能都集中在一台服务器上会增加实现的复杂性。自从开始使用Ace以来,我已经编写了几个使用相同功能子集的服务。这些应用程序大多是JSON API服务,它们没有流。由于部署在负载均衡器之后,它们既不需要HTTPS也不需要HTTP/2。

精益的目标是专注于这些API应用程序,并有一个相当大的非目标列表:

通过不处理所有这些非目标,精益应该更简单,因此更容易维护。这应该会使解决特性和错误变得更容易,也更容易促成。它也应该更快,尽管我还没有测试这一点。

当然,上面列出的所有功能对于框架都很重要。通过为其他服务器(如Ace或Cowboy)编写适配器,MIDAS框架将能够支持所有这些功能。

就目前而言,Gleam感觉是在横梁上获得Types好处的最有前途的方法。这是几个人的愿望清单上的事情,包括我的,已经有相当长的一段时间了。

Gleam编译成可读的Erlang(如果可读的Erlang不是一个有争议的语句),它还可以与Erlang和Elixir进行很好的互操作。由于这些特性,我认为即使只针对应用程序的某些部分,也可以将其视为生产就绪。您的应用程序的某些部分将比其他部分更能从类型安全中获益。

精益服务器作为迈达斯的一部分捆绑在一起。目前MIDAS使用的功能还不是Gleam稳定版本的一部分,因此您需要将其用作`midas-framework/midas`中的GIT依赖。