.NET Frameworkでは、IHttpModuleを実装すると、IISを通過するリクエストやレスポンスを操作できるモジュールを作成できます。
たとえば、リクエストに合わせてレスポンス内容を変化させるなんてことも・・・
そう、いつも通り簡単にできるだろうと思っていました。
HttpResponse.OutputStreamの中にはレスポンスコンテンツが蓄えられるはずです。
これを読み取って、書き換えてしまえばよい、そう思っていました・・・
.NET Frameworkでは、IHttpModuleを実装すると、IISを通過するリクエストやレスポンスを操作できるモジュールを作成できます。
たとえば、リクエストに合わせてレスポンス内容を変化させるなんてことも・・・
そう、いつも通り簡単にできるだろうと思っていました。
HttpResponse.OutputStreamの中にはレスポンスコンテンツが蓄えられるはずです。
これを読み取って、書き換えてしまえばよい、そう思っていました・・・
クッキーレスセッションを使ってみた。
WEBサーバのセッション内に一時的に記憶するメモ。
クッキーレスで、モバイル対応にした(つもり)なので、ブラウザを跨いで、各種ケータイでも使えるはず。
たとえば、
なんてことができたりする(には少し機能が足りてないかも)。
一応QRコードを出してはいる(が、内容の有効性については未確認)。
#PNG固定(Powered by Google API)なので、PNG非対応機の場合は見えないかも。
暗号化や認証は無いので、URLバレしたらヤバい。
けれど、セッション潰す機能を付けたので、ケータイで画面メモとかしたら消しちゃえば安心。
最後のアクセスから60分、または、サーバメンテナンス等で消えます。
Azureは限りなく透明に近いブルーって感じの色らしいです。
クラウド(雲)を浮かべる空の色ってことかも。
Vector様のご厚意でAzureの無料セミナー(ハンズオン)をうけるため、はるばる静岡から日帰り(はるばるじゃねぇ)。
当初、Windows Azureって、機能特化したOSを販売するのかと思ってた。
使った分だけお支払いの仕組みを持つサービスってことらしい。
じゃ、他のウェブアプリホスティングサービスとどこが違うのか、という点については、まだよくわからないけれど、いろんな部分で、Hyper-Vっぽい仮想化技術が使われているから、ほぼノンストップだったりとか、柔軟なスケーラビリティとかの恩恵を受けることができるらしい。
あと、アプリホスティングの場合、標準のままだと、手元で作ったアプリを動かすことができなかったりする場合があるのだけれど、Azureの場合は、VisualStudioでAzure専用にアプリ開発ができるわけで、開発から実稼働までの一貫性が確保できる点は大きいような気がした。
高速化は後回し。
一応、Sleep(0)とかSystem.Windows.Forms.Application.DoEvents()とか入れてるんですけど。
マウスポインタを取得しようと思ったんです。
System.Windows.Forms.Cursor.Currentを使えばいいってことらしいんですが、これ、バックラウンドで取得すると砂時計になっちゃうし、じゃぁUIスレッドだったらいいかというと、自分の領域外では正しく取得できないという罠。
でも、何とか、VGAダミーアダプタを利用した仮想セカンダリ画面で、各種操作が可能なことを確認。
#細かい文字を読み取るのは厳しいものがありますが・・・
2048×1536,32bitでも、XGA画面上でなんとか操作できます。
あとは、セカンダリ画面上で全て操作できるように、タスクバーもどきでも用意すれば・・・と思ったりするんだけど、もっと高速軽量化しないと無理か。
ローカルでRDPとかを使う方法って無いかしら・・・
単純な仮想スクリーンでいいじゃんってのは無し。
P.S. *.rdpで画面圧縮する呪文で満足しちゃったので、これ終了。ソース欲しい?
Formでつくって、とても遅い気がしたので、WPFにしたいと思ったところからはじまる。
いろんなところを検索して、キャプチャしたビットマップデータを表示するところまではできた。
しかし、リアルタイムで更新するにはタイマーか・・・ツールボックスに無い。
Thread.Timerを使うと、Imageへビットマップを設定するところで、違うスレッドが所有してるから変更できないとかの例外が発生する。
で、探して、見つけた↓。
WPF のスレッド: Dispatcher を使用して応答性の高いアプリケーションを構築する
そうそう、BackgroundWorker使えるんだよ。
できましたのでアップしておきましょう。
相変わらずWindows7でリサイズやXPモードの問題はありますが。
入力方向のみですが、テキストのDrag&Dropに対応ですよ。
とりあえず、できたっぽい。
favicon.icoのマネージハンドラ。
できたっぽいんだけどね。
時間(JST)を埋め込むようにしてみたんだ。
アクセスする都度変わるとおもろいと思ってたんだけど・・・
Expires指定してもfavicon.icoはキャッシュ更新されないのですよ。
なんででござろうか。
キャッシュから削除してアクセスすれば取得してくれるので、キャッシュチェックしていないわけじゃなさそうなんですが。
IE8だけかな?
ま、動くハンドラができたことと、favicon.icoが無くてログに404を記録されることが無くなったことは良いかな。
☆ボタン(右から3つ目)を付けてみました。
ポチッとサイズ変更できます。
FormBorderStyleをNone設定しておかないと、フォームサイズ最小値が正しく反映されにくい模様、というのは覚書。
で、肝心のWindows 7での動作では、やはりリサイズが有効に働かないので、☆ボタン(右から3つ目)を押すようにとのこと。
因みに、XPモードのRemoteAppだと、全画面サイズの取得ができないらしく・・・
Postボタンがキレ気味なので修正を。
レイアウト系パネルを重ねてるんだけど、どこかで自動リサイズが無効になってるとデザインモードのサイズが適用される部分が出てくるらしい・・・よくわからんけど。
既出のアプバーをアップしてみる。
動作には、.NET Framework 2.0が必要。
64bitOS未確認。
正常にPOSTできると、IDとパスワードを保存する。
#保存するけど、暗号化はしない。
正式なAPIを使用しているかは不明。
サポートサイトでのサポートはなし。
何かあればコメントで。