ノート
スライド ショー
アウトライン
1
"Microsoft AJAX Library"

  • Microsoft AJAX Library
  • 〜 8年越しの開花 〜
2
DHTMLがもてはやされた時代がありました
  • JavaScriptが一時もてはやされた時代がありました(Dynamic HTMLと言いまして・・・)
    • 98年~01年位
  • 適度に利用できるくらいにNN4, IE4で拡張され、クライアントマシンにも少し余裕ができ利用できる地盤ができたころです。


  • ただしJavaScriptはいつしかメインストリームではなくなっていきます。


3
DHTMLの凋落
  • DHTMLはなぜ凋落したのか?
    • ブラウザ非互換
      • もともとIEとNNで違う実装であった
        • 作る側の知識が必要
    • セキュリティの問題
      • ブラウザクラッシャー
      • リンク先詐称
      • セキュリティ系のコミュニティでは無効を推奨
        • 私も推奨していますが(^^;
4
まずは単純なDHTMLの例を見てみましょう。
  • DEMO1
5
AJAXってなに?
  • AJAXってなに?
  • Asynchronous JavaScript + XMLの略
  • JavaScriptとXMLを使った非同期技術くらいが適当な訳か…な?
6
AJAXで復活?
  • ここ1年ほどでAJAXが注目されJSも再びメインストリームに戻ってきたようです。
7
でも・・・・
  • われわれIT技術者は見慣れているはずですよ!!!!
8
AJAXのポイント1
9
AJAXのポイント1
  • URLが変わらないことにより
  • メリット
    • 同一ページをアピールしやすい
    • アプリケーションをアピールしやすい
  • デメリット
    • ブックマークできない
    • サーチエンジンに引っ掛かりにくい
10
AJAXのポイント2
  • 内部的に
  • MSXML.XMLHTTP(IE6以前)
  • か
  • XMLHttpRequest
  • (IE7, その他ブラウザ)
  • を利用している。
11
IE 5.0
12
XMLHttpRequestって
  • メソッド
  • abort
  • getAllResponseHeaders
  • getResponseHeader
  • open
  • send
  • setRequestHeader
  • 属性
  • onreadystatechange
  • readyState
  • responseBody
  • responseText
  • responseXML
  • status
  • statusText


13
XMLHttpRequestのDEMO
  • DEMO2
14
"いまのデモはただのXMLHttpRequestの同期版..."
  • いまのデモはただのXMLHttpRequestの同期版のデモでした。
15
XMLHttpRequestの非同期DEMO
  • DEMO3
16
 
17
"そのため"
  • そのための
18
AJAXは主に3つのカテゴリから
19
AJAX Extensionは現時点で2バージョン
20
 
21
まずは
  • UpdatePanel、UpdateProgressをご覧ください。
22
Demo4のポイント1
  • メリット
    • UpdatePanelでくくるだけ
    • UpdateProgressも置くだけ
    • 簡単にAJAXのメリットを享受できる
  • デメリット
    • 今までページ単位に処理の整合性を見ていたのが、ブロック単位に検討する必要がある。
    • 2つのUpdatePanelを置く場合には非常に慎重に(途中で意図せずキャンセルは発生する)

23
Demo4のポイント2
  • 中身を変更してもURLが変わらない。
  • ASP.NETのポストバック機能との親和性が高い
  • ページ間移動は今まで通り
  • Response.Redirectを多用する
24
Timer
  • DEMO5
25
Demo5のポイント
  • メリット
    • 定期処理っぽいものが実現できる(決して定期処理ではない)
  • デメリット
    • サーバ負荷をよく考えないと大変なものを簡単に作製可能
    • リクエストが来ないことも検討しなくてはいけない
26
Webサービス
  • DEMO6
27
ポイント1
  • Microsoft.Web.Script.Services.ScriptService属性を付ける
28
ポイント2
  • asmxの拡張子を乗っ取っている
  • System.Web.Services.Protocols.WebServiceHandlerFactory
  • →
  • Microsoft.Web.Script.Services.ScriptHandlerFactory
29
ポイント3
  • WebServiceがJavaScriptのファイルを供給している
30
ポイント3
  • WebServiceがJavaScriptのファイルを供給している
31
Demo6のポイント
  • メリット
    • XML Webサービスを簡単にまともに利用できる局面ができた
  • デメリット
    • jsメソッドは二つに分けなくてはいけない
32
 
33
正体は
34
正体は
  • Microsoft.Web.Handlers.
  • ScriptResourceHandler
  • このHandlerが必要なJavaScriptのファイルをクライアントに送り込んでくれる。
35
実体は
36
実体は
37
実体は
38
単体利用は
  • <head>
  • <script type="text/javascript" src="Microsoft.Web.Resources.ScriptLibrary.MicrosoftAjax.debug.js" />
  • <script type="text/javascript" src="Microsoft.Web.Resources.ScriptLibrary.MicrosoftAjaxWebForms.debug.js" />
  • <script type="text/javascript">
  • Sys.WebForms.PageRequestManager.getInstance()
  • </script>
  • </head>
  • これだけでOK
39
Debug と Release
40
どんなものが含まれているのか・・・1
  • ベターJavaScript


41
$getをつかえ
  • $getとは
  • →Sys.UI.DomElement.getElementById
  • の短い呼び方+α


  • いままでdocument.getElementById(id)を使っていたのを置換する。
  • → $get(id)
  • あるelement配下からのみ取得する場合には
  • $get(“id”, $get(“parent”).childNodes)
42
String.Formatをつかえ
  • String.formatは.NETのSystem.String.Formatのようなもの。


  • String.format('NAME={0},Age={1}', $get('TextBox1').value, $get('TextBox3').value))
  • →
  • NAME=NAKA,Age=30
43
Sys.StringBuilderをつかえ
  • StringBuilderは.NETのSystem.String.Formatのようなもの。
  • var sb = new Sys.StringBuilder();
  • sb.append($get("TextBox1").value);
  • sb.append($get("TextBox2").value);
  • sb.append($get("TextBox3").value);
  • alert(sb.toString());
  • →
  • NAKAfalse30
44
まとめ
  • AJAXは使うべきか?
45
どのように
  • ASP.NETのポストバックの局面
    • UpdateProgressで処理中を示せるだけでもUser Experienceの向上になる
  • ベターJavascript
    • $getでスクリプトの簡略化を
    • String.Formatや使えるメソッドが目白押し



46
"Enjoy Programming"
    • Enjoy Programming!
    • Enjoy Community!
    • 次は懇親会へ(^^