|
1
|
- Microsoft AJAX Library
- 〜 8年越しの開花 〜
|
|
2
|
- JavaScriptが一時もてはやされた時代がありました(Dynamic HTMLと言いまして・・・)
- 適度に利用できるくらいにNN4, IE4で拡張され、クライアントマシンにも少し余裕ができ利用できる地盤ができたころです。
- ただしJavaScriptはいつしかメインストリームではなくなっていきます。
|
|
3
|
- DHTMLはなぜ凋落したのか?
- ブラウザ非互換
- セキュリティの問題
- ブラウザクラッシャー
- リンク先詐称
- セキュリティ系のコミュニティでは無効を推奨
|
|
4
|
|
|
5
|
- AJAXってなに?
- Asynchronous JavaScript + XMLの略
- JavaScriptとXMLを使った非同期技術くらいが適当な訳か…な?
|
|
6
|
- ここ1年ほどでAJAXが注目されJSも再びメインストリームに戻ってきたようです。
|
|
7
|
- われわれIT技術者は見慣れているはずですよ!!!!
|
|
8
|
|
|
9
|
- URLが変わらないことにより
- メリット
- 同一ページをアピールしやすい
- アプリケーションをアピールしやすい
- デメリット
- ブックマークできない
- サーチエンジンに引っ掛かりにくい
|
|
10
|
- 内部的に
- MSXML.XMLHTTP(IE6以前)
- か
- XMLHttpRequest
- (IE7, その他ブラウザ)
- を利用している。
|
|
11
|
|
|
12
|
- メソッド
- abort
- getAllResponseHeaders
- getResponseHeader
- open
- send
- setRequestHeader
- 属性
- onreadystatechange
- readyState
- responseBody
- responseText
- responseXML
- status
- statusText
|
|
13
|
|
|
14
|
- いまのデモはただのXMLHttpRequestの同期版のデモでした。
|
|
15
|
|
|
16
|
|
|
17
|
|
|
18
|
|
|
19
|
|
|
20
|
|
|
21
|
- UpdatePanel、UpdateProgressをご覧ください。
|
|
22
|
- メリット
- UpdatePanelでくくるだけ
- UpdateProgressも置くだけ
- 簡単にAJAXのメリットを享受できる
- デメリット
- 今までページ単位に処理の整合性を見ていたのが、ブロック単位に検討する必要がある。
- 2つのUpdatePanelを置く場合には非常に慎重に(途中で意図せずキャンセルは発生する)
|
|
23
|
- 中身を変更してもURLが変わらない。
- ASP.NETのポストバック機能との親和性が高い
- ページ間移動は今まで通り
- Response.Redirectを多用する
|
|
24
|
|
|
25
|
- メリット
- 定期処理っぽいものが実現できる(決して定期処理ではない)
- デメリット
- サーバ負荷をよく考えないと大変なものを簡単に作製可能
- リクエストが来ないことも検討しなくてはいけない
|
|
26
|
|
|
27
|
- Microsoft.Web.Script.Services.ScriptService属性を付ける
|
|
28
|
- asmxの拡張子を乗っ取っている
- System.Web.Services.Protocols.WebServiceHandlerFactory
- →
- Microsoft.Web.Script.Services.ScriptHandlerFactory
|
|
29
|
- WebServiceがJavaScriptのファイルを供給している
|
|
30
|
- WebServiceがJavaScriptのファイルを供給している
|
|
31
|
- メリット
- XML Webサービスを簡単にまともに利用できる局面ができた
- デメリット
|
|
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
|
|
|
40
|
|
|
41
|
- $getとは
- →Sys.UI.DomElement.getElementById
- の短い呼び方+α
- いままでdocument.getElementById(id)を使っていたのを置換する。
- → $get(id)
- あるelement配下からのみ取得する場合には
- $get(“id”, $get(“parent”).childNodes)
|
|
42
|
- String.formatは.NETのSystem.String.Formatのようなもの。
- String.format('NAME={0},Age={1}', $get('TextBox1').value,
$get('TextBox3').value))
- →
- NAME=NAKA,Age=30
|
|
43
|
- 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
|
|
|
45
|
- ASP.NETのポストバックの局面
- UpdateProgressで処理中を示せるだけでもUser Experienceの向上になる
- ベターJavascript
- $getでスクリプトの簡略化を
- String.Formatや使えるメソッドが目白押し
|
|
46
|
- Enjoy Programming!
- Enjoy Community!
- 次は懇親会へ(^^
|