現在Microsoftが開発中のASP.NET用Ajaxフレームワークである
Atlasを試してみましょう。
どうやら年内にリリースされるようですので、まだチェックしていない方は是非試してみて下さい。
ちなみに、Atlasはコードネームで、少し前に正式名称が決まったみたいです。
JavaScriptライブラリは「Microsoft AJAX Library」、サーバーサイドのクラスライブラリ・サーバーコントロール群は「ASP.NET 2.0 AJAX Extensions」、Atlas Control Toolkitは「ASP.NET AJAX Control Toolkit」なんだそうです。
さて、まずは
Atlasのサイトからインストーラーをダウンロードしましょう。
現時点でのバージョンはJuly CTPとなっています。
インストールは、インストーラーに指示にしたがって次へ進むだけでOKです。
Visual Studio 2005(Visual Web Developer ExpressもOK)のプロジェクトテンプレートも、一緒にインストールできます。
インストールが完了したら、Visual Studioを起動してWebプロジェクトを作成します。
プロジェクトテンプレートも一緒にセットアップすると、下図のようなテンプレートが追加されていますので、これを選択して作成します。
(下の画像はVisual Web Developer Expressのものです)
今回は簡単な例としてサーバーで実装したメソッドをJavaScriptから呼び出すサンプルを作成してみます。
まず、既に作成されているDefault.aspx.csに以下の太字のコードを追加します。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Services;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public string TestMethod()
{
return "Hello Atlas";
}
}
WebMethodという属性はWebサービスで公開するメソッドにつける属性ですが、Atlasではaspxでこの属性の付いたメソッドをクライアントの
JavaScriptから呼び出せるようです。
(通常のasmxで公開されているWebサービスも呼び出せます)
次に、Default.aspの<head runat="server">~</head>間に以下のJavaScriptを追加します。
<script type="text/javascript">
window.onload = function()
{
PageMethods.TestMethod(RequestComplete);
}
function RequestComplete(data)
{
alert(data);
}
</script>
PageMethods.TestMethod(RequestComplete);
の部分がサーバー側のメソッド呼び出し部分です。
サーバー側で定義してWebMethod属性をつけたメソッド名と同じ名前でJavaScriptのメソッドがPageMethodsに自動的に作成されていますので、
違和感なく呼び出しが出来ます。
引数には呼び出しが完了した際のコールバック関数を指定しています。
コールバック関数には、サーバー側のメソッドの戻り値が引数として渡ってきます。
このプログラムを実行してみると、ページがロードされた時に "Hello Atlas"が表示されるのが確認できます。
通信部分のJavaScriptコードを一切書かずに、簡単にサーバーのメソッドが呼び出せますね。
通信やその他の処理に関するスクリプトは、既に記述されている
<atlas:ScriptManager ID="ScriptManager1" runat="server" />
の部分によってクライアントにJavaScriptが出力されています。
この中には、Ajaxに関するものだけでなく他にも便利な機能が提供されていますので、それらも含めて色々とAtlasに関するサンプルなどを書いてみようと思います。