LoginSignup
1
0

More than 5 years have passed since last update.

Ratpack入門 (2) - アーキテクチャー

Last updated at Posted at 2018-01-17

Ratpack入門シリーズ

  1. Ratpack入門 (1) - Ratpackとは
  2. Ratpack入門 (2) - アーキテクチャー
  3. Ratpack入門 (3) - hello world 詳解
  4. Ratpack入門 (4) - ルーティング & 静的コンテンツ
  5. Ratpack入門 (5) - Json & Registry
  6. Ratpack入門 (6) - Promise
  7. Ratpack入門 (7) - Guice & Spring
  8. Ratpack入門 (8) - セッション
  9. Ratpack入門 (9) - Thymeleaf

Ratpackのアーキテクチャー

ここではRatpackの主要なクラスの概略を解説していきます。随時追記予定。

RatpackServer

サーバーを起動するための基本的なクラスです。

ServerConfig

サーバーに関する設定(ポートなど)をまとめるクラスです。

Service

Ratpackサーバーのライフサイクルにおけるフックを提供するインターフェースです。
@Deprecatedされている同名インターフェースがあるので注意。

Registry

Handler間で情報の受け渡しに使用されるクラスです。
...こう書くとあまり重要でないように見えますが、サーバー自体もRegistryを通して各依存関係を取得します(公式マニュアルではserver registry)。
従って、Handler自身やRendererといった各機能は全てRegistryを通して取得されるので、Ratpackの柔軟性を支える大切なクラスです。

Google Guiceを使用した拡張が用意されています。

Action

設定などを行うための汎用の関数型インターフェースです。
例えばRatpackServer.start()Action<RatpackServerSpec>を引数にとりますし、RatpackServerSpec.handlers()Action<Chain>を引数に持ちます。

Chain

複数のハンドラーをひとまとめにするクラスです。
各ハンドラーのルーティングなども行います。

Handler

あるリクエストを受け取りレスポンスを返すことをモデル化した、handle(Context)メソッドをもつ関数型インターフェースです。
イメージとしてはJava EEのHttpServletのようなものでしょうか。
渡されたContextに処理を記述していくことで、レスポンスを作成していきます。

Context

Handlerの呼び出しに伴う「文脈」を提供するクラスです。
HTTPリクエストなどの情報も、このオブジェクトが保持しています。
Context.render(Object)を呼び出すことで、返却するレスポンスの中身が作成されます。

Promise

非同期処理をサポートするクラスです。JavaScriptのPromiseと同じようなもの。詳細解説記事を作成予定。

Operation

Promiseの値を返却しないバージョンです。

Blocking

PromiseOperationを作成するためのユーティリティークラスです。ブロッキングIOをするときに使用します。

Session

ratpack-sessionが必要です。Ratpackの通信でセッションをサポートするためのクラスです。
Registry.get()から取得します。

BaseDir

静的アセットを提供するのに使用するクラスです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0