美文网首页DartWeb
Dart-Aqueduct框架开发(一)

Dart-Aqueduct框架开发(一)

作者: rhyme_lph | 来源:发表于2019-09-14 18:43 被阅读0次

    声明:本文首发于微信订阅号: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为例

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

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

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

    image.png

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

    下一篇

    相关文章

      网友评论

        本文标题:Dart-Aqueduct框架开发(一)

        本文链接:https://www.haomeiwen.com/subject/fqhbvqtx.html