Dart-Aqueduct框架开发(一)

声明:本文首发于微信订阅号:Dart客栈
文章为原创,如需转载请注明出处,并告知作者,谢谢!

1.介绍

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

2.核心概念

资源(Resources)

资源是应用程序通过其HTTP API公开的内容,可以是任何东西,例如:分数,帖子,用户关系等,在获取资源时,一般以JSON的形式存储在响应体中。

路由(Routing)

HTTP请求资源的路径标识,例如:http://www.baidu.com ,当我们访问百度时,百度的服务器返回我们资源以text/html的形式,在经过浏览器的解析,从而呈现给我们页面,当我们请求到公开的服务器路由,就可以显示我们想要的内容,如果请求不到服务器公开的路由,则服务器返回404页面

控制器(Controller)

处理请求的对象。例如:控制器可以从数据库中获取数据,然后将它们发送到响应中的客户端。另一个控制器可能会验证请求的授权标头的用户和密码是否有效,所以,响应请求可能由多个控制器进行对请求的处理,一般的,多个控制器链接在一起进行对请求处理为管道的形式,也可以将这些链接一起的控制器称为通道,当前面的控制器验证不通过,那么后面的控制器将不会进行处理

应用通道(ApplicationChannel)

包含应用程序所有控制器的对象。还负责初始化应用程序的服务,读取配置文件和其它启动相关任务

服务(Services)

封装复杂的任务或算法,目的是为更详细的行为提供简单的方法,例如:数据库链接
服务的主要用户为控制器,通过将服务作为参数传递给控制器的构造函数,将服务注入控制器,控制器保留对服务的引用,以便处理请求的时候使用到它

隔离(Isolates)

内存隔离的线程,在一个隔离上创建的对象不能被另一个隔离引用,应用程序启动时,会生成包含应用程序代码副本的一个或多个隔离专区,可以有效的负载均衡,每个隔离区都有自己的一组服务,比如数据库连接,这可以消除数据库连接池的问题

绑定(Bindings)

注释(类似autowrite),请求可能包含请求头,查询参数,需要在控制器代码中解析,验证和使用,绑定则是添加到自动执行此解析和验证的变量的注释

查询和数据模型(Quertes and Data Models)

ORM对象关系映射,提供易于编写和测试的静态类型查询,提供命令行工具生成数据库迁移送文件,用于检测可应用实时版本数据库的数据模型更改,数据模型也可以表示为JSON对象

授权(Authorization)

OAuth2.0授权框架,可直接集成在您的应用程序中,或单独作为一个联合服务提供授权的服务器,默认实现利用Aqueduct ORM在PostgreSQL中存储

文档(Documentation)

OpenAPI3.0是HTTP API的标准化文档格式,支持自动文档

3.开始

在开始前首先需要配置好你的环境,并提前下载好相关的SDK,以方便使用pub命令,下面将以mac为例

  • 下载
    下载地址:https://storage.googleapis.com/dart-archive/channels/stable/release/2.4.0/sdk/dartsdk-macos-x64-release.zip
    如果是其他平台,可将上面链接替换
    stable -> dev(渠道分支)
    2.4.0 ->版本号
    macos ->window、linux
    x64 -> i32

  • 配置环境
    打开控制台,输入vim ~/.bash_profile
    然后点击A键进入编辑模式,添加以下内容,DART_HOME就是你的SDK路径

export DART_HOME=/Users/rhyme/env/flutter/bin/cache/dart-sdk
export PATH=$PATH:$DART_HOME/bin

配置完成后,点击ESC键退出编辑模式,然后使用组合键shift+:输入wqenter键退出并保存文件,运行source ~/.bash_profile让配置文件生效,当你运行dart命令看到如下输出视为成功

Dart-Aqueduct框架开发(一)_第1张图片
image.png

  • 激活Aqueduct
    可以将pub比做npm,同样也是脚本运行,在命令行中输入如下
pub global activate aqueduct

Dart-Aqueduct框架开发(一)_第2张图片
image.png

可以看到,我们成功的将 Aqueduct拉到本地,但不要开心得太早,你收到了一个 Warning,它告诉你没有把 pub缓存配置到你的环境变量中,这一情况,将导致我们无法使用 aqueduct命令,所以找到它提示的 export PATH=$PATH:$HOME/.pub-cache/bin重复 配置环境步骤即可,最后我们输入 aqueduct命令,看到如下输出视为成功
Dart-Aqueduct框架开发(一)_第3张图片
image.png

  • 创建项目
    到这里,基本上可以使用Aqueduct创建一个属于我们的dart服务项目了,激动
    输入命令:
aqueduct create 你的项目名

即可在当前目录生成一个项目模版


Dart-Aqueduct框架开发(一)_第4张图片
image.png
  • 运行项目
    切换到我们创建的文件夹下,然后运行命令dart bin/main.dart或者aqueduct serve即可启动
    image.png

    Dart-Aqueduct框架开发(一)_第5张图片
    image.png

aqueduct/1aqueduct/2
在输出中,我们看到了aqueduct/1aqueduct/2这个是什么呢,我们可以在特性中知道有内存隔离线程,项目会根据你电脑的核数启动一半的线程,当前我的电脑是4核,所以启动了2个,这个数量,是作者根据最优来启动,当然了,你也可以启动10个,20个或者更多,这个具体根据业务需求来定制,用于解决负载问题
8888
默认的端口号为8888,并且项目为我们默认添加了一个接口/example,直接访问浏览器可得到

Dart-Aqueduct框架开发(一)_第6张图片
image.png

ok,以上就是今天的内容,尽量讲得通俗易懂,方便大家来学习Dart相关知识,作者创作不易,赏个鸡腿吧!

下一篇

你可能感兴趣的:(Dart-Aqueduct框架开发(一))