DartVM服务器开发Dart & Flutter

DartVM服务器开发(第八天)--http服务端框架

2018-08-28  本文已影响63人  rhyme_lph

上一个篇文章我们学习了如何使用WebSocket去进行通信,今天,我们学习http服务端都有什么框架,下面是我收集的一些框架

1. Aqueduct

这是该框架的标志图.png

1.介绍

Aqueduct是一个HTTP Web服务器框架,用于构建用Dart编写的REST应用程序。

2.特点

资源是应用程序通过其HTTP API公开的内容。资源可以是任何东西 - 应用程序中的用户配置文件,南极洲的温度传感器或游戏的高分。例如,GitHub API公开组织,存储库,问题和拉取请求资源; 社交网络API具有配置文件,帖子和用户关系。

资源被组织成集合(例如,所有帖子),对于该集合,可以唯一地标识该集合中的各个资源(例如,单个帖子)。向应用程序发出请求以检索资源的状态或提供所需的资源状态。大多数情况下,资源表示为JSON数组和对象。检索资源时,其JSON表示将编码到响应主体中。当提供所需的资源状态时,客户端在请求主体中发送所需资源状态的JSON表示。

资源由HTTP请求的路径标识。例如,URL http://example.com/organizations标识服务器上的组织资源集合http://example.com。URL http://example.com/organizations/1标识单个组织。

应用程序为其管理的每个资源公开路由。路由是与请求路径匹配的字符串。当请求的路径与路由匹配时,将调用关联的处理程序来处理请求。路径看起来像路径,但有一些额外的语法。例如,路由/organizations将匹配具有路径的请求/organizations。路径/organizations/:id将匹配路径/organizations/1/organizations/2等等。

控制器是处理请求的对象。例如,控制器可能从数据库中获取行并将它们发送到响应主体中的客户端。另一个控制器可能会验证请求的授权标头的用户名和密码是否有效。

控制器链接在一起以形成一系列要为请求采取的操作。这些链接在一起的控制器称为通道。如果将上述示例链接在一起,则通道将在发送包含数据库行的响应之前检查请求是否已获得授权。

有两种控制器。一个终端控制器上的资源或资源集合执行操作,并且总是发送响应。端点控制器通过返回资源状态或更改资源状态来满足请求。您编写了大多数特定于应用程序的逻辑端点控制器。

中间件控制器花费的请求的动作,但是不负责满足该请求。中间件控制器可以执行许多不同的操作,并且通常可以在许多通道中重用。大多数情况下,中间件控制器会在请求到达端点控制器之前验证某些请求。中间件控制器可以发送请求的响应,这样做可以防止该通道中的任何其他控制器处理请求。

应用程序通道是包含应用程序中所有控制器的对象。它将一个控制器指定为第一个控制器,以接收称为其入口点的每个请求。控制器链接到入口点(直接或可传递)以形成整个应用程序通道。在几乎每个应用程序中,入口点都是路由器; 该控制器将信道分成给定路由的子信道。

服务是一个对象,它封装了复杂的任务或算法,外部通信或将在应用程序中重用的任务。服务对象的目的是为更详细的行为提供简单的界面。例如,数据库连接是服务对象; 数据库连接的用户不知道如何建立连接或如何将查询编码到线路上的详细信息,但它仍然可以执行查询。

服务对象的主要用户是控制器。通过将服务作为参数传递给控制器​​的构造函数,将服务注入控制器。控制器保留对服务的引用,以便在处理请求时可以使用它。

隔离是内存隔离的线程; 在一个隔离物上创建的对象不能被另一个隔离物引用。当应用程序启动时,会生成包含应用程序代码副本的一个或多个隔离专区。这种行为可以跨多个线程有效地“平衡”您的应用程序。

这种结构的好处是每个隔离区都有自己的一组服务,比如数据库连接。这消除了对“数据库连接池”等技术的需求,因为整个应用程序被有效地“合并”。

请求可能包含标头,查询参数,需要在控制器代码中解析,验证和使用的正文和路径参数。绑定是添加到自动执行此解析和验证的变量的注释。当绑定值无法解析为预期类型或验证失败时,将发送适当的错误响应。

应用程序商店信息在数据库中用于持久性 手动编写数据库查询容易出错,并且不会利用在Dart应用程序中非常有价值的静态分析工具。Aqueduct的ORM(对象关系映射)提供易于编写和测试的静态类型查询。

您的应用程序的数据模型是通过创建Dart类来定义的。每个类都映射到一个数据库表,该类的每个属性都映射到该表中的一列。Aqueduct的命令行工具生成数据库迁移文件,用于检测可应用于实时版本化数据库的数据模型中的更改。数据模型也可以表示为JSON对象,以便在应用程序之上构建工具。

OAuth 2.0是一个标准化的授权框架。Aqueduct包含符合规范的OAuth 2.0服务器实现,可以直接集成到您的应用程序中,也可以单独站起来为联合服务提供授权服务器。这个实现很容易定制 - 它可以在不同类型的数据库中存储授权工件(如令牌和客户端标识符)或使用JWT等无状态授权机制。默认实现利用Aqueduct ORM在PostgreSQL中存储工件。

OpenAPI 3.0是HTTP API的标准化文档格式。许多内置的Aqueduct对象支持“自动”文档。特定于您的应用程序的对象可以构建在此之上,以便立即记录您的应用程序以进行每项更改。

2. Jaguar

1.介绍

Jaguar是一个具有MVC、ORM、序列化、身份验证和安全性的完整堆栈服务端框架

2.特点

编写优雅的REST API。

将相关路线分组到班级。

使用简单的类似Map的界面读取和更新会话数据。

关于JWT令牌的会话。

密码验证。
基于Oauth的身份验证(Facebook,Google,Twitter)。

有了支持

提供几乎没有代码的静态文件。

模板是静态类型,代码完成和可分析的基于Dart的模板引擎

好了,上面就是当前存在的http服务端框架,后续我会针对这两个框架进行学习,敬请期待!明天见!

如果想继续学习DartVM服务器开发,请关注我,学习更多骚操作!

上一篇下一篇

猜你喜欢

热点阅读