はじめに
Visual Studio 2008(以下、VS2008)ではASP.NETの開発生産性が大幅に向上しています。ASP.NET自身の進化もありますが、IDEの進化はWebデベロッパーにとって大きなインパクトを与えました。どれほど便利になったかは、以下の連載を参考にしていただければ理解が深まるかと思います。
- Visual Studio 2008で進化するASP.NETの開発手法(前篇)
- Visual Studio 2008で進化するASP.NETの開発手法(中篇)
- Visual Studio 2008で進化するASP.NETの開発手法(後篇)
本稿では、これらの連載では触れられなかった、クライアントサイドのテクノロジーを中心に紹介したいと思います。
これまでの記事
- 第1回:新しい統合開発環境 Visual Studio 2008ってなんだ!?
- 第2回:ここが違う! Visual Studio 2008
- 第3回:とことん理解する .NET Framework 3.5
対象読者
- Visual Studio 2008に興味がある方
- .NET Framework 3.5に興味がある方
- ASP.NET 2.0の開発経験がある方
必要な環境と準備
Visual Studio 2008入門第1回の必要な環境と準備を参考にしてください。
ASP.NET 3.5の新機能(本稿で触れる部分)
- VS2008のWeb開発用のホットフィックスについて
- UpdatePanelの機能拡張
- JavaScriptを使用してWebサービスを呼び出す
- ASP.NET AJAXのWCFサポート
- JavaScriptを使用したフォーム認証の利用
- JavaScriptを使用したロール情報の利用
VS2008のWeb開発用のホットフィックスについて
ASP.NET開発チーム(現マイクロソフトコーポレーション副社長)のScott Guthrie氏によると、今後VS2008では、報告が多いバグフィックスをまとめてパッチとしてリリースしていくことになるとされています。2月8日には、その第一弾となるVWD 2008(Visual Web Developer 2008)とVS2008のWebシナリオで報告されていたホットフィックスがリリースされました。このホットフィックスでは以下のパフォーマンスが改善されています。
- HTMLソースビュー
- デザインビュー
- Webサイトのビルド時
また、HTML、JavaScriptエディタ時の機能改善とバグフィックスがされています。RTM段階では正しく動作しなかったjQueryのインテリセンスも有効になりました。jQueryユーザーには非常に嬉しい変更点です。
肝心のホットフィックスのダウンロードはこちらからできます。なお、このホットフィックスをダウンロードするにはWindows Live IDが必要です。
ホットフィックスのインストール
Vista環境とXP環境で若干の違いがあるので、ここでは、Vista環境におけるインストール手順を記します。
- ダウンロードしたKB946581フォルダ内にある338649_ENU_i386_zip.exeを実行してC:\以外の場所に解凍
- 解凍されたVS90-KB946581.exeを実行
- ウィザードが起動するので、ウィザードに沿って進めるとインストール完了
UpdatePanelの機能拡張
ASP.NET 2.0 AJAX Extensionsには目玉とも言えるUpdatePanelコントロールがあります。このUpdatePanelコントロール内では、JavaScriptを利用しているコントロールが正しく動作しませんでした(もちろん、組み方によっては正しく動作するものもありました)。VS2008で利用可能なASP.NET 3.5 AJAX ExtensionsではUpdatePanelコントロール内で正しく動作するコントロールの幅が広がっています。
正しく動作しないコントロール
早速、違いを見てみたいと思います。まずはASP.NET 2.0 AJAX ExtensionsのUpdatePanelコントロール内で正しく動作しないコントロールです。
- TreeView/Menuコントロール
- WebPartsコントロール
- FileUploadコントロール
- GridView/DetailsViewコントロール(EnableSortingAndPagingCallbacksプロパティがTrueの時)
- Login/PasswordRecovery/ChangePassword/CreateUserWizardコントロール(編集可能なテンプレートではない時)
- Substitutionコントロール
- 検証コントロール
正しく動作するコントロール
続いてASP.NET 3.5 AJAX ExtenisonsのUpdatePanelコントロールで制限付きですが、正しく動作するコントロールと、その特徴をピックアップします。
- WebPartsコントロール
- WebPartZoneコントロールが複数ある場合は同じUpdatePanelコントロール内に配置する
- UpdatePanelを入れ子にする場合、WebPartManagerコントロールは親UpdatePanelコントロールに配置する
- 非同期ポストバックを使用してWebPartsコントロール(.webpartsファイル)のインポート・エクスポートは不可(実行すると通常のポストバックが実行)
- 非同期ポストバック中にWebPartsコントロールのスタイルの追加・変更は不可(エディタパーツによる設定変更)
- 検証コントロール
- 検証対象のコントロールと同一パネル内に配置することを推奨
以上の点からUpdatePanelコントロールを利用する際には、AJAX Extensionsのバージョンには注意してください。VS2008で開発を行う際はASP.NET 3.5を選択することが多いと思いますが、もしASP.NET 2.0 AJAX Extensionsの開発を行いたい場合は次のコラムを参照してください。
JavaScriptとScriptManagerコントロールを使用してWebサービスを呼び出す
これは、VS2005+ASP.NET 2.0 AJAX Extensionsから利用できた機能ですが、以下の説明にもつながってくる重要な技術なので紹介します。
ScriptManagerコントロールにはServicesプロパティがあります。このServicesプロパティにアクセスしたいWebサービスを設定すると、SriptManagerコントロールは、JavaScriptを使用したプロキシクラスを自動生成し、Webサービスへのアクセスを可能にします。このWebサービスへのアクセスは自作したWebサービス以外に、メンバシップサービスや、ロール管理サービスなどのアプリケーションサービスにアクセスすることもできます。
<asp:ScriptManager ID="ScriptManager1" runat="server"> <Services> <asp:ServiceReference Path="Webサービス.asmx" /> </Services> </asp:ScriptManager>
本稿を理解するために重要なポイントはプロキシクラスの構文です。クライアントサイドからWebサービスを呼び出す場合、基本は以下のようになります。
クラス名.メソッド名( [パラメータ, ……], 処理成功時のコールバック関数, サービス側で例外が発生時のコールバック関数, 任意のコンテキスト値 )
動作の流れや仕組みなどは、「[ASP.NET AJAX]XML Webサービスを非同期呼び出しするには?」(@IT)にて詳しく解説されているので、そちらを参考にしてください。