Table Of Contents

ステートレスなリクエスト/レスポンス

処理フロー

CreamyフレームワークはWebアプリケーションと同じく、完全にステートレスであり、 リクエスト/レスポンスのみを重視します。 すべてのリクエストは同じ処理フローを通ります。では実際に処理フローを見てみましょう。

../images/creamy-flow-figure.png

処理フローを以下にまとめます。

  1. Browserはリクエストを生成してRouterコンポーネントに送信します。
  2. Routerコンポーネントはリクエストを受信し、リクエストに適合するルートを探します。そして、対応するControllerのアクションメソッドを起動します。
  3. アクションメソッドが実行されます。
  4. ビューを生成するために、テンプレートファイルレンダリングが実行されます。そしてFXMLが評価されJavaFXオブジェクトが生成されます。
  5. アクションメソッドの結果がレスポンスとしてBrowserに返却されます。

Browser は、CreamyアプリケーションのUIを表示するためのCreamyのコンポーネントです。 Creamyアプリケーションは、すべてBrowserコンポーネントを使用してUIを表示します。 また、Routerへのリクエスト送信、Routerからのレスポンス受信もBrowserが行います。

Note

Browserについては Browser で詳しく説明します。

Webアプリケーションフレームワークとの違い

Creamyの処理フローはステートレスであり、一般的なWebフレームワークの処理フローと変わるものでありません。

たたし以下の点が異なります。

CreamyとWebフレームワークの違い

  リクエスト/レスポンス リクエストボディ
Creamy

Javaオブジェクト

(Requestクラス/Responseクラス)

FXMLをJavaFXランタイムでロードしたもの

(Javaオブジェクト)

一般的なWebフレームワーク HTTPリクエスト/HTTPレスポンス

HTML/XML

(テキスト)

CreamyはひとつのJavaVM上で動作します。Webのようにネットワークを介する訳ではありません。

Requestクラス/ResponseクラスはHTTPリクエスト/HTTPレスポンスにあたるJavaオブジェクトです。

また、レスポンスボディには、JavaFX Scene Graphオブジェクト(UIに表示されるオブジェクトの実体)と Activityオブジェクトが含まれます。(Webではテキストベースですが、CreamyではJavaオブジェクトということです。)

より具体的には以下となります。(上図の「Views」部分)

  1. Render : テンプレートからFXMLをレンダリングする
  2. Load : FXMLをJavaFXランタイム(FXMLLoader)にロードしScene Graphオブジェクトを生成する

2.では、さらに、Scene Graphオブジェクトのハンドラーの役割を果たすオブジェクトを生成します。 Creamyでは、このオブジェクトをActivityと呼んでいます。

Note

Acitivityについては Viewの構成とActivity で詳しく説明します。

では、最後に、まとめとしてCreamyとWebフレームワークを処理フローで比較します。

処理フローの比較

../images/compare-flow-figure.png

Creamy(左側の図)で赤い破線で示す箇所が、Webフレームワークと異なるところです。

ところでCreamyのBrowserとは何でしょうか?では、次にBrowserについて見ていきましょう。