概要
AlexServiceは、HTML5 Web Workersを抽象化し、オブジェクト指向ライクに非同期処理を扱えるようにしたフレームワークです。
Web Workersは、JavaScriptでバックグラウンド処理を実現するための非常にシンプルで強力なAPIですが、あまりにシンプル過ぎて、ワーカ同士が様々なコミュニケーションをし合うような、少し高度なアプリケーションを書こうとすると、とたんにコードが複雑になります。
AlexServiceは、そうしたワーカ間のコミュニケーションを、シンプルな関数呼び出しで実現できるようにします。 例えば、信じられないほど複雑で時間のかかる計算処理をバックグラウンドで実行するには、以下のようなコードを書くだけです。
// calcServiceは、計算処理を行うサービスのインスタンス
calcService.doSuperComplexCalcuration(function(result, error) {
alert("Result is:" + result);
});
また、calcService
が、計算途中の経過をメインのUIに通知するには、以下のようなコードになります。
// 複雑な計算処理を行う、calcServiceのメソッド
doSuperComplexCalcuration: function() {
// do some complex calcuration
...
// UI側のサービスに結果を通知(uiService.outputProgress())する
alex.service.parent.uiService.outputProgress({current: curval, total: totalval});
...
return value;
}
もはやpostMessage()
、onmessage
と言った低レベルなメッセージハンドリングを記述する必要はありません!
このようにAlexServiceを使うと、クラス(サービス)とメソッドを記述するだけで簡単に非同期処理を実現できます。バックグラウンド処理を簡単に記述できる事は、Webアプリケーションの応答性を劇的に高めることにもつながるだけではなく、UI処理とビジネスロジックの分離を容易にし、Webアプリケーションのアーキテクチャを堅牢なものにすることにもつながります。 あなたもAlexServiceを使用して、高速で堅牢なアプリケーションを手軽に作成してみませんか?
Alexに興味がわいたならば、以下のドキュメントを参照してください。 * AlexService チュートリアル * AlexService APIドキュメント * シンプルなオンラインデモ・・・チュートリアルで解説されているアプリケーションです。計算処理をバックグラウンドで実行するので、巨大な数を入力してもブラウザがフリーズしません。 * 高度なオンラインデモ・・・延々と素数を計算し続けるアプリケーション。Web Workersの仕様書で紹介されているアプリの改良版です。バックグラウンドで行う計算処理の途中経過をユーザに見せるため、サービス間の双方向通信が実現されています。Safari4での閲覧を推奨。Firefox3.5でも動作します(が、Firefoxのワーカは遅いです)