エバンジェリストグループ Blog

日本のマイクロソフトのエバンジェリストグループです。

  Blog ホーム :: ホーム :: 連絡をする :: RSS  :: ATOM :: ログイン
投稿数  135  :: 記事 10 :: コメント 0 :: トラックバック 122

注意事項

当サイトの使用条件、コミュニティ利用規定または eXConn 削除規定に反する内容と判断されるコメントやトラックバックは、事前のお知らせなしに削除させていただく場合があります。ご了承ください。

ニュース

エバンジェリストブログ
MSDN eye

投稿カテゴリ

記事カテゴリ

アーカイブ

イメージギャラリ


マイクロソフト


マイクロソフト Blog


デベロッパーセンター

お知らせ

Microsoft TechNet Plus サブスクリプション

こんにちは。近藤です。

前回の投稿ではASP.NET "Atlas" の概念について取り上げましたが、今回は、ASP.NET "Atlas" の論理アーキテクチャと物理構成について解説したいと思います。
以下の図はASP.NET "Atlas" の論理アーキテクチャ図です。

// クリックすると拡大したイメージが表示されます。

クライアント フレームワーク

○ ブラウザ互換層
ブラウザ互換層はその名の通りブラウザの違いを吸収します。これまでは、例えばActiveX コンポーネントが作成できるか判定するなどでブラウザを識別するという実装を開発者自ら行ってきましたが、このような処理が自動化され、ブラウザの違いを意識することなく統一的なプログラミングが可能となります。

○ スクリプト コア
スクリプト コアはJavaScript 向けの型システムを提供します。具体的には、クラス、継承、インタフェース、ネームスペースなどをスクリプトで実装可能となる仕組みが提供され、データやロジックをカプセル化することができます。(実際にはクロージャによる実装が行われているとイメージして下さい)

○ ベース クラス ライブラリ
ベース クラス ライブラリでは、例えばStringBuilder, Debug, Trace といった.NET Framework に似たようなクラス ライブラリとその機能が提供されます。
同様にXMLHTTP による非同期通信を抽象化するWebRequest / WebResponse (System.Net で提供されているクラスに相当するもの) が提供されます。
このように、スクリプト コアとこのベース クラス ライブラリの2 つの層によって、スクリプト ベースながらオブジェクト指向的なプログラミングを実現することができます。

また、ベース クラス ライブラリの重要な役割としてクライアント側のJSON シリアライズ/デシリアライズを行います。
JSON とはJavaScript Object Notation の略で、ECMA で規定されているデータ交換のフォーマットです。
詳しくは以下のサイトをご覧下さい。
http://json.org/

このJSON は
・サーバーとの通信を純粋なXML で交換するよりもデータ量を抑えることが期待できる
・DOM をはさまず、Eval 関数で直接オブジェクトへ変換できることからJavaScrpt との愛称が良い
といった理由から、多くのAjax Web アプリケーションで活用されています。Atlas もデータ交換形式としてJSON を利用しています。

○ コンポーネントモデル/UI フレームワーク
コンポーネントモデル/UI フレームワークでは、スクリプトベースのコードをコンポーネントとして扱うための機能が提供されます。
例えばリソース解放のメカニズムなどが実現され、コントロール間の連携や検証を行うといった基本機能が提供されます。
また、Atlas で導入される独自のXML 言語のXML-Script を解釈するのもこの層になります。XML-Script については、後日解説します。

○ コントロール
コンポーネントモデル/UI フレームワークをベースにAtlas 独自に機能拡張されたLabel, TextBox, ListView, DataSource コントロールなどのビルトインのクライアントサイド コントロールが提供されます。


サーバー フレームワーク
ASP.NET "Atlas" のサーバー側フレームワークはASP.NET 2.0 をベースとしています。

○ Atlas Web サーバー コントロール
ASP.NET "Atlas" で拡張されたWeb サーバーコントロールが提供されます。このWeb サーバーコントロールによって、実際にはクライアント サイドで動作するインタラクティブな操作をサーバーサイドの定義で実装することができます。

○ Web サービス ブリッジ
Web サービス ブリッジは、クライアント・サーバー間でWeb サービスのやり取りを行うため機能 (プロキシの生成など) を提供します。特にこのWeb サービス ブリッジはサーバー側のJSON シリアライズ/デシリアライズを実現するため重要です。なお連携可能なサービスの種類として、ASP.NET 2.0 のWeb サービス以外にも、将来的にはWCF (Windows Communication Foundation) ベースのサービスとも連携が可能となります。

○ アプリケーション サービス ブリッジ
アプリケーション サービス ブリッジでは、ASP.NET 2.0 で提供されているアプリケーション サービス、例えばプロファイリングや認証などをクライアント側とシームレスに連携するための機能を提供します。


クライアント アプリケーション サービス
クライアント側には、さらにクライアント アプリケーション サービスというものが提供される予定です。現在開発中で、物自体まだ存在していないのですが、将来的にはデスクトップの機能、例えば、ローカルへのデータストアやマイドキュメントへのアクセスなどに安全にアクセスできる機能が提供される予定です。

 

論理的なアーキテクチャは以上です。
一方、具体的な物理構成がどのようになっているか解説します。
こちらは実際にASP.NET "Atlas" January 2006 版によるWeb アプリケーションのプロジェクト構造です。

// クリックすると拡大したイメージが表示されます。

クライアント フレームワークは実際にはJavaScript から構成されています。(ScriptLibrary - Atlas - Debug/Release フォルダ)

  • Atlas.js
    クライアントサイド コンポーネント/コントロールなどのクライアント フレームワークのほぼすべての機能が提供されます。
  • AtlasComat.js / AtlasCompat2.js
    ブラウザ互換機能が提供されます。
  • AtlasRumtime.js
    コンポーネントやコントロールを持たず、コア機能のみ提供されます。ScriptManager コントロールのEnableScriptComponents プロパティをfalse にすることで、AtlasRuntime.js を利用することができます。
  • AtlasUIDragDrop.js
    ドラッグ アンド ドロップ操作を制御するための機能が提供されます。
  • AtlasUIGlitz.js
    エフェクト(透明化など) やアニメーションを付加するための機能が提供されます。
  • AtlasUIMap.js
    MSN Virtual Earth のサービスを利用するための機能が提供されます。

一方、サーバー フレームワークの実態は、Microsoft.Web.Atlas.dll で提供されています。(Bin フォルダ)
さらにWeb.config に様々な定義が行われて、処理をサーバーフレームワークを経由するように設定されています。例えばatlas タグの定義や、HttpHandler/HttpModule によるWeb サービスのハンドリングの定義が行われています。

 

このように、ASP.NET "Atlas" ではクライアント フレームワークとサーバー フレームワークの2つのフレームワークが提供されています。これはASP.NET "Atlas" が多様な開発者をサポートすることを目的としているからです。
この2つのフレームワークをいかに使い分けるかについては次回の投稿にしたいと思います。

それでは。
新しいASP.NET の世界をお楽しみください。

Kazuhiko Kondo (kkondo)

コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。
投稿日時 : 2006年2月14日 22:59

トラックバックは下記のURLにpingを送信してください。
TrackBack URL: http://www.exconn.net/Blogs/team03/services/trackbacks/6964.aspx

コメント

# [.NET]Atlasの解説記事 2006/02/15 2:02 zorioの日記
ASP.NET 2.0ではAjaxをサポートしたClient Callbackという機能があるので、何もない所から実装するのに比べるとかなり楽だ。 XMLHTTPの呼び出し、サーバ側の処理、クライアントでのコールバック関数の呼び出しくらいまではカバーしてくれる。 逆に言うと、サーバ処理とその前後のJavaScriptの受け口しか用意してくれない。 ユーザー操作からサーバ処理呼び出しまでの間と、サーバの処理結果を受け取ってからの画面操作は全部自分で書く事になる。 これが結構大変。 prototype.jsや ...

# Atlasのアーキテクチャに関する雑感 2006/02/15 10:51 どっとねっとふぁんBlog
[ASP.NET "Atlas"] ASP.NET "Atlas" のアーキテクチャ
Atlasのアーキテクチャについて解説されています。ここで個人的に気にしてるのは○Webサービスブリッジについての説明の中の一文...

# [ASP.NET "Atlas"] "Atlas" の大きな一歩 : GO Live ライセンスの付与 2006/03/21 4:33 エバンジェリストグループ Blog
[ASP.NET "Atlas"] "Atlas" の大きな一歩 : GO Live ライセンスの付与

# [ASP.NET "Atlas"] "Atlas" の大きな一歩 : GO Live ライセンスの付与 2006/03/21 4:34 エバンジェリストグループ Blog
[ASP.NET "Atlas"] "Atlas" の大きな一歩 : GO Live ライセンスの付与

# MSDNマガジンに Atlas の記事が遂に登場! 2006/08/07 16:34 ナオキにASP.NET(仮)
Hiroyasu Kitagawa's Blog からです。
 
MSDNマガジンの7月号:AJAXの記事もありますよ
 
以下の内容が載っています。
 ...

# MSDNマガジンに Atlas の記事が遂に登場! 2006/09/19 15:58 ナオキにASP.NET(仮)
Hiroyasu Kitagawa's Blog からです。 MSDNマガジンの7月号:AJAXの記事もありますよ 以下の内容が載っています。 Atlas ついに登場 : AJAX スタイル サイトを支援する待望の