官术网_书友最值得收藏!

Introducing Dart's server frameworks

The blog server in this project is written directly on top of dart:io, so you can see what is going on. As you might expect, there are a number of frameworks for Dart to help write server applications, so that basic tasks, such as serving text files, do not have to be implemented from scratch for every application.

These are all available at the pub package library.

Redstone

Redstone is described as "a server-side micro framework for the Dart platform". It uses simple code annotations to expose Dart functions to the Web. The Redstone Hello World example is very clear, and shows how annotations can hide the complexity from the developer so that they can focus on the application logic:

import 'package:redstone/server.dart' as app;

@app.Route("/")
helloWorld() => "Hello, World!";

main() {
  app.setupConsoleLog();
  app.start();
}

Note

You can find out more about Redstone at http://redstonedart.org/.

Rikulo

Rikulo modestly describes itself as a lightweight—Dart web server. It has a list of interesting features including request routing, template engine, and the MVC (Model–view–controller) design pattern. Rikulo Stream is the server story and its Hello World example to serve static content is a single line:

import "package:stream/stream.dart";
void main() {
  new StreamServer().start();
}

Note

You can find out more about Rikulo at http://rikulo.org/, where several projects are listed.

Shelf

Shelf claims that it makes it easy to create and compose web servers, and parts of web servers. Its pipeline-based model allows middleware (such as a request logger in it's Hello World example) to be added in:

import 'package:shelf/shelf.dart' as shelf;
import 'package:shelf/shelf_io.dart' as io;

void main() {
  var handler = const shelf.Pipeline().addMiddleware(shelf.logRequests())
      .addHandler(_echoRequest);

  io.serve(handler, 'localhost', 8080).then((server) {
    print('Serving at http://${server.address.host}:${server.port}');
  });
}

shelf.Response _echoRequest(shelf.Request request) {
  return new shelf.Response.ok('Request for "${request.url}"');
}

Note

Find out more about Shelf at https://github.com/dart-lang/shelf, and as this URL suggests, this package is from the Dart team.

主站蜘蛛池模板: 长岛县| 汶川县| 洛川县| 濮阳县| 望城县| 泽普县| 玛多县| 犍为县| 始兴县| 三门峡市| 信阳市| 额济纳旗| 上杭县| 青铜峡市| 双牌县| 罗城| 绥棱县| 光泽县| 南靖县| 卢氏县| 太康县| 临邑县| 永清县| 施甸县| 加查县| 简阳市| 平武县| 巫溪县| 南康市| 隆子县| 九江县| 缙云县| 托克逊县| 晋江市| 东阿县| 玛纳斯县| 徐汇区| 嘉峪关市| 成武县| 榆中县| 寻乌县|