声明:本文首发于微信订阅号: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
+:
输入wq
点enter
键退出并保存文件,运行source ~/.bash_profile
让配置文件生效,当你运行dart
命令看到如下输出视为成功
- 激活
Aqueduct
包
可以将pub
比做npm
,同样也是脚本运行,在命令行中输入如下
pub global activate aqueduct
image.png
可以看到,我们成功的将
Aqueduct
拉到本地,但不要开心得太早,你收到了一个Warning
,它告诉你没有把pub
缓存配置到你的环境变量中,这一情况,将导致我们无法使用aqueduct
命令,所以找到它提示的export PATH=$PATH:$HOME/.pub-cache/bin
重复配置环境步骤即可,最后我们输入aqueduct
命令,看到如下输出视为成功image.png
- 创建项目
到这里,基本上可以使用Aqueduct
创建一个属于我们的dart服务项目了,激动
输入命令:
aqueduct create 你的项目名
即可在当前目录生成一个项目模版
image.png
- 运行项目
切换到我们创建的文件夹下,然后运行命令dart bin/main.dart
或者aqueduct serve
即可启动
image.png
image.png
aqueduct/1
和aqueduct/2
在输出中,我们看到了aqueduct/1
和aqueduct/2
这个是什么呢,我们可以在特性中知道有内存隔离线程,项目会根据你电脑的核数启动一半的线程,当前我的电脑是4
核,所以启动了2
个,这个数量,是作者根据最优来启动,当然了,你也可以启动10
个,20
个或者更多,这个具体根据业务需求来定制,用于解决负载问题
8888
默认的端口号为8888
,并且项目为我们默认添加了一个接口/example
,直接访问浏览器可得到
ok,以上就是今天的内容,尽量讲得通俗易懂,方便大家来学习
Dart
相关知识,作者创作不易,赏个鸡腿吧!
网友评论