エンドポイント
通信において一番気になるエンドポイントに関してですが、AJAXの非同期通信におけるエンドポイントはHTTPで使用できるすべてのエンドポイントを使用することができます。AJAXで使用される主なエンドポイントとしては次のようなものがあります。
- ASP.NET Webページ(*.aspx)
- HTTPハンドラ(*.ashx、またはカスタム拡張)
- Webサービス(*.asmx)
- PHP Webサービス
ペイロード
AJAXペイロードとはHTTPリクエストによって返されるデータのことです。AJAXにおける非同期通信は標準のHTTPリクエスト/レスポンスと同じであるため、エンドポイントと同様にHTTPで使用することができるすべてのレスポンスペイロードを適用することができます。AJAXで使用される主なペイロードは次のようなものがあります。
- XML
- HTML
- Number型、String型
- JSON(JavaScript Object Notation)
特にAJAXでよく使用されるペイロードはXMLとJSONです。どちらも複合オブジェクトのシリアライズをサポートしているのですが、大きな違いは次のとおりです。
- XML
- 読み込みが容易だが、動作にXMLパーサーやDOMが必要
- .NETネイティブ――作成やサーバからの転送が容易
- JSON
- データをJSONフォーマットに合わせることが必要
- クライアント上で動作
JSON
JSON(JavaScript Object Notation)はその名の通り、JavaScriptの表記法をベースとした軽量データ交換フォーマットです。JavaScriptなので人間にとって読み書きが容易で、構文が決まっているのでマシンやプログラムからの解析および生成も容易です。
JSONはJavaScriptのサブセットのため、JSONデータの解析はJavaScriptのビルドイン関数であるeval()プロシージャを呼び出すだけです。そのため、データインターチェンジとしても有効です。
var json_data; json_data = "\"The quick brown fox.\""; myObject = eval ("return " + json_data);
JSONとXMLの構文比較
{"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onClick": "CreateNewDoc()"}, {"value": "Open", "onClick": "OpenDoc()"}, {"value": "Close", "onClick": "CloseDoc()"} ] } }
<menu id="file" value="File"> <popup> <menuitem value="New" onClick="createNewDoc()" /> <menuitem value="Open" onClick="OpenDoc()" /> <menuitem value="Close" onClick="CloseDoc()" /> </popup> </menu>
ご覧の通り、JSONはXMLより簡潔な表記となっております。これがパフォーマンスに直結します。データが少なければ、転送と解析の対象となるバイト数も減少するため、JSONが必要とする帯域幅、メモリ、CPUなどのリソースも減少することになります。
まとめ
本記事では、AJAXをまったく知らない方を対象に、「ASP.NET AJAX」に進むために最低限必要なAJAX技術について紹介させて頂きました。実装の詳細部分を深く追求していないのは、本記事の主な目的がAJAXフレームワーク「ASP.NET AJAX」にあるためです。AJAXの実装に関しては他の方が書かれている記事を参考にしてください。
次回からはいよいよ本題である「ASP.NET AJAX」について紹介していきます。「AJAXは難しくて実際に作るのなんて無理!」と考えている方でも驚くほど簡単にAJAX技術を活用することができる画期的なフレームワークです。その力、ぜひ体感してみてください。