ASP.NET AJAX の概要
更新 : 2007 年 11 月
ASP.NET の AJAX 機能を使用することにより、応答性に優れ使いやすいユーザー インターフェイス (UI) 要素が用意された、ユーザーが利用しやすい Web ページをすばやく作成できます。AJAX 機能には、ブラウザ間の ECMAScript (JavaScript) テクノロジとダイナミック HTML (DHTML) テクノロジを組み込んだクライアント スクリプト ライブラリ、ASP.NET サーバー ベース開発プラットフォームとの統合機能などが含まれます。AJAX 機能を使用することで、Web アプリケーションのユーザー エクスペリエンスと効率を向上させることができます。
ASP.NET AJAX 機能を使用する理由
ASP.NET の AJAX 機能を使用すると、完全にサーバー ベースの Web アプリケーションよりも多くの利点を備えた高機能 Web アプリケーションを構築できます。AJAX 対応アプリケーションは、次の機能を備えています。
効率の向上。これは、Web ページの処理の重要な部分がブラウザで実行されるためです。
使い慣れた UI 要素。プログレス インジケータ、ツールヒント、ポップアップ ウィンドウなどがあります。
部分ページ更新。Web ページの変更された部分だけを更新します。
ASP.NET アプリケーション サービスとのクライアント統合。フォーム認証、ロール、およびユーザー プロファイルに使用されます。
自動生成されたプロキシ クラス。クライアント スクリプトからの Web サービス メソッドの呼び出しを簡略化します。
サーバー コントロールをカスタマイズできるフレームワーク。クライアント機能を追加するために使用されます。
一般に最も普及しているブラウザのサポート。Microsoft Internet Explorer、Mozilla Firefox、Apple Safari などがサポートされています。
ASP.NET における AJAX 機能のアーキテクチャ
ASP.NET の AJAX 機能のアーキテクチャは、クライアント スクリプト ライブラリとサーバー コンポーネントの 2 つの要素で構成されます。これらは、堅牢な開発フレームワークを提供するために組み込まれています。
メモ : |
---|
ASP.NET の AJAX 機能に加えて、ASP.NET AJAX Control Toolkit と Microsoft ASP.NET の将来のリリースの機能を使用できます。どちらもコミュニティでサポートされています。 |
クライアント スクリプト ライブラリとサーバー コンポーネントに含まれる機能を次の図に示します。
ASP.NET AJAX クライアントおよびサーバーのアーキテクチャ
この図は、クライアント ベースの Microsoft AJAX Library の機能を示しています。これには、クライアント コンポーネントの作成、ブラウザの互換性、およびネットワークとコア サービスのサポートが含まれます。また、この図では、サーバー ベースの AJAX 機能も示しています。これには、スクリプト サポート、Web サービス、アプリケーション サービス、およびサーバー コントロールが含まれます。以下のセクションでは、この図について詳しく説明します。
AJAX クライアント アーキテクチャ
クライアント アーキテクチャには、コンポーネントのサポート、ブラウザの互換性、ネットワーク、およびコア サービス用のライブラリが含まれています。
コンポーネント
クライアント コンポーネントを使用すると、ポストバックを使用せずに、ブラウザでさまざまな動作を行うことが可能になります。コンポーネントは、3 つのカテゴリに分類されます。
コンポーネント。コードをカプセル化する、タイマ オブジェクトなどの非ビジュアル オブジェクトです。
動作。既存の DOM 要素の基本動作を拡張します。
コントロール。カスタムの動作を持つ新しい DOM 要素を表します。
使用するコンポーネントの種類は、必要なクライアント動作の種類によって異なります。たとえば、既存のテキスト ボックスの透かしは、テキスト ボックスに関連付けられた動作を使用して作成できます。詳細については、「クライアント コンポーネントおよびコントロールの作成」を参照してください。
ブラウザの互換性
ブラウザの互換性レイヤには、最も頻繁に使用されるブラウザ (Microsoft Internet Explorer、Mozilla Firefox、Apple Safari など) に対する AJAX スクリプト互換性が用意されています。このため、サポート対象であれば、どのブラウザに対しても同じスクリプトを記述できます。詳細については、「AJAX 対応の ASP.NET ページのブラウザのセキュリティ設定」を参照してください。
ネットワーキング
ネットワーク レイヤは、ブラウザ内のスクリプトと Web ベースのサービスおよびアプリケーションの間の通信を処理します。非同期のリモート メソッド呼び出しも管理します。UpdatePanel コントロールを使用する部分ページ更新など、一般的なシナリオの多くでは、ネットワーク レイヤは自動的に使用され、コードを記述する必要はありません。
ネットワーク レイヤは、サーバー ベースのフォーム認証、ロール情報、およびクライアント スクリプト内のプロファイル情報へのアクセスもサポートしています。Web アプリケーションが Microsoft AJAX Library にアクセスできる限り、ASP.NET を使用して作成されていないアプリケーションでもこのサポートを利用できます。詳細については、「ASP.NET AJAX での Web サービス」を参照してください。
コア サービス
ASP.NET の AJAX クライアント スクリプト ライブラリは、オブジェクト指向開発向けの機能を提供する JavaScript (.js) ファイルで構成されます。ASP.NET AJAX クライアント スクリプト ライブラリに含まれるオブジェクト指向機能により、クライアント スクリプトの高度な一貫性とモジュール性が実現されます。次のコア サービスは、クライアント アーキテクチャの一部です。
JavaScript のオブジェクト指向拡張機能。クラス、名前空間、イベント処理、継承、データ型、オブジェクトのシリアル化などがあります。
基本クラス ライブラリ。文字列ビルダ、拡張エラー処理などのコンポーネントが含まれます。
JavaScript ライブラリのサポート。JavaScript ライブラリは、アセンブリに埋め込まれるか、スタンドアロンの JavaScript (.js) ファイルとして提供されます。JavaScript ライブラリをアセンブリに埋め込むと、アプリケーションの配置が容易になり、バージョン管理の問題の解決に役立ちます。
詳細については、「Microsoft AJAX Library を使用したカスタム クライアント スクリプトの作成」を参照してください。
デバッグとエラー処理
コア サービスには Sys.Debug クラスが含まれます。このクラスは、Web ページの末尾に読み取り可能な形式でオブジェクトを表示するためのメソッドを提供します。また、トレース メッセージも表示され、ユーザーはアサーションを使用し、デバッガを中断できます。拡張された Error オブジェクト API により、リリース モードとデバッグ モードをサポートする有用な例外詳細が提供されます。詳細については、「AJAX アプリケーションのデバッグとトレースの概要」を参照してください。
グローバリゼーション
ASP.NET の AJAX サーバーおよびクライアントのアーキテクチャには、クライアント スクリプトをローカライズおよびグローバライズするためのモデルが用意されています。これにより、単一のコード ベースを使用するアプリケーションをデザインし、多くのロケール (言語およびカルチャ) に UI を提供できます。たとえば、AJAX アーキテクチャを使用すると、JavaScript コードは、サーバーへのポストバックを行わなくても、ユーザーのブラウザのカルチャ設定に応じて Date オブジェクトまたは Number オブジェクトの書式を自動的に指定できます。詳細については、「チュートリアル : クライアント スクリプトを使用した日付のグローバライズ」を参照してください。
AJAX Server アーキテクチャ
AJAX 開発をサポートするサーバー部分は、アプリケーションの UI とフローを管理する ASP.NET Web サーバー コントロールおよびコンポーネントで構成されます。サーバー部分は、シリアル化、検証、コントロールの拡張機能なども管理します。フォーム認証、ロール、およびユーザー プロファイル用の ASP.NET アプリケーション サービスにアクセスできる ASP.NET Web サービスもあります。
スクリプト サポート
ASP.NET の AJAX 機能は、サーバーからクライアントに送信されるサポート スクリプトを使用することで実装されます。ブラウザに送信されるスクリプトは、有効にする AJAX 機能によって異なります。
ASP.NET アプリケーション用のカスタム クライアント スクリプトを作成することもできます。その場合、AJAX 機能を使用して、カスタム スクリプトを静的な .js ファイル (ディスク上) またはアセンブリ内にリソースとして埋め込まれた .js ファイルとして管理することもできます。
ASP.NET AJAX 機能には、リリース モードとデバッグ モード用のモデルがあります。リリース モードでは、エラー チェックとパフォーマンスを最適化するための例外処理が行われ、スクリプト サイズは最小限に抑えられます。デバッグ モードには、型チェックや引数チェックなど、より厳密なデバッグ機能が用意されています。アプリケーションがデバッグ モードの場合、ASP.NET はデバッグ バージョンを実行します。これによりデバッグ スクリプトで例外をスローできますが、リリース コードのサイズは最小限に抑えられます。
ASP.NET の AJAX のスクリプト サポートを使用して、2 つの重要な機能が提供されます。
Microsoft AJAX Library は型システムであり、名前空間、継承、インターフェイス、列挙型、リフレクション、およびその他の機能を提供する一連の JavaScript 拡張機能です。詳細については、「Microsoft AJAX Library を使用したカスタム クライアント スクリプトの作成」を参照してください。
部分ページ レンダリングは、非同期ポストバックを使用してページの領域を更新します。詳細については、「部分ページ レンダリングの概要」を参照してください。
ローカリゼーション
ASP.NET AJAX アーキテクチャは、ASP.NET 2.0 ローカリゼーション モデルの基盤に基づいています。アセンブリ内に埋め込まれる、またはディスク上にあるローカライズされた .js ファイルの追加サポートを提供します。ASP.NET は、特定の言語および地域にローカライズされたクライアント スクリプトとリソースを自動的に提供できます。
詳細については、次のトピックを参照してください。
Web サービス
ASP.NET Web ページの AJAX 機能により、クライアント スクリプトを使用して、ASP.NET Web サービス (.asmx) と WCF (Windows Communication Foundation) サービス (.svc) の両方を呼び出すことができます。必要なスクリプト参照はページに自動的に追加され、Web サービスを呼び出すためにクライアント スクリプトから使用できる Web サービス プロキシ クラスが自動的に生成されます。
ASP.NET AJAX サーバー コントロールを使用せずに、ASP.NET Web サービスにアクセスすることもできます (別の Web 開発環境を使用している場合など)。そのためには、ページで Microsoft AJAX Library、スクリプト ファイル、および Web サービス自体への参照を手動で追加します。実行時に、ASP.NET により、サービスの呼び出しに使用できるプロキシ クラスが生成されます。詳細については、「ASP.NET AJAX での Web サービス」を参照してください。
アプリケーション サービス
ASP.NET のアプリケーション サービスは、ASP.NET フォーム認証、ロール、およびユーザー プロファイルに基づく組み込みの Web サービスです。これらのサービスは、AJAX 対応の Web ページ内のクライアント スクリプト、Windows クライアント アプリケーション、または WCF 互換のクライアントによって呼び出すことができます。使用例を含む詳細については、「ASP.NET Web Services の使用」を参照してください。
サーバー コントロール
ASP.NET AJAX サーバー コントロールは、リッチ クライアント動作を作成するために組み込まれるサーバーおよびクライアント コードで構成されます。ASP.NET Web ページに AJAX コントロールを追加すると、AJAX 機能のブラウザにサポート クライアント スクリプトが自動的に送信されます。コントロールの機能をカスタマイズするクライアント コードを追加することもできますが、これは必須ではありません。
最も頻繁に使用される ASP.NET AJAX サーバー コントロールを次の一覧に示します。
ScriptManager
クライアント コンポーネント、部分ページ レンダリング、ローカリゼーション、グローバリゼーション、およびカスタム ユーザー スクリプトのスクリプト リソースを管理します。ScriptManager コントロールは、UpdatePanel、UpdateProgress、および Timer の各コントロールを使用するために必要です。UpdatePanel
同期ポストバックを使用してページ全体を最新の情報に更新するのではなく、ページの選択した部分を最新の情報に更新できます。UpdateProgress
UpdatePanel コントロールでの部分ページ更新に関するステータス情報を表示します。Timer
定義された間隔でポストバックを実行します。Timer コントロールを使用してページ全体をポストするか、UpdatePanel コントロールと共に使用して、定義された間隔で部分ページ更新を実行します。
AJAX クライアント動作を含むカスタム ASP.NET サーバー コントロールを作成することもできます。他の ASP.NET Web コントロールの機能を強化するカスタム コントロールは、エクステンダコントロールと呼ばれます。詳細については、「ASP.NET コントロールへの AJAX 機能の追加」および「ASP.NET AJAX エクステンダ コントロールの概要」を参照してください。
AJAX Control Toolkit
ASP.NET AJAX Control Toolkit は、ASP.NET AJAX コントロールとエクステンダを使用して作成できるエクスペリエンスを示す、サンプルとコンポーネントのコレクションです。この Control Toolkit には、カスタム コントロールおよびエクステンダを簡単に作成して再利用できるようにする、サンプルと強力な SDK が用意されています。ASP.NET AJAX Control Toolkit は、ASP.NET AJAX の Web サイトからダウンロードできます。ASP.NET AJAX Control Toolkit は、コミュニティでサポートされています。
AJAX コミュニティでサポートされる将来のリリース
ASP.NET AJAX コミュニティでサポートされる将来のリリースには、開発中で ASP.NET には組み込まれていない機能を使用して、ASP.NET の AJAX 機能を拡張する機能が用意されています。このような機能には、追加のエクステンダ コントロール、クライアント宣言構文 (xml-script) などがあります。将来のリリースのダウンロードおよび詳細については、ASP.NET AJAX の Web サイトを参照してください。