いま

CMS(コンテンツマネジメントシステム)の開発をしている。
ASP.NETSQLServer

MSDNマガジン2008年7月 トランザクション:データを失うことなく障害に対処するスケーラブルなシステムを構築する Udi Dahan

現状はWebアプリケーションとデータベースがべったりくっついていることが前提になっている。管理ページのaspxでトランザクションを実行して同期的に結果を返す。 更新プロセスのプログラミングが窮屈なので開発の機動性、発想の柔軟性を鈍らせる。

ビジネスプロセスの実行主体を独立させる。今後のシステム開発の可能性を広げる。AWSやAzureで提供されるPaaSを段階的に利用していくための準備でもある。

管理ページで受付をした更新要求をWebアプリケーションとは切り離されたプロセスに投入する。結果は投入したプロセスからは受け取らない。 結果は結果を待つプロセスへ通知される。

今のWebアプリケーションから小さく変更を入れていく。管理ページでは結果をロングポーリングで待つ。HTTPの接続は結果の通知を受けるかタイムアウトまで持続する。

ASP.NETで待機するやりかた。 ASP.NETでCometを利用したチャットを実装する:CodeZine(コードジン) HttpContextの参照をStaticで保持して待てばいいことがわかった。

いまからやること

  • 参考にしたものは、IHttpAsyncHandlerなので、HttpTaskAsyncHandlerに書き換える
  • 待機している複数の接続からレスポンスを返す接続を選択する仕組みを作る