MSON-B4 .NET Framework 2.0 - ASP.NET 2.0 の新機能

Download Report

Transcript MSON-B4 .NET Framework 2.0 - ASP.NET 2.0 の新機能

Microsoft ON ― 出張ワークショップ ―
MSON-B4
.NET Framework 2.0
- ASP.NET 2.0 の新機能
ASP.NET 2.0 の概要
ASP.NET のおさらい
最新の Web 開発テクノロジ
.NET におけるサーバーサイド技術
Web アプリケーション(ビジュアル開発)
Web サービス
IIS + .NET Framework
サーバーサイドは Windows テクノロジ
クライアントは任意
強力なプログラミングモデル
C# や Visual Basic
http、html などのネットワーク技術を意識させない
Visual Studio 2005 による開発
Web 開発を支援する新機能
統合開発環境
「Webサイト」プロジェクト
グリッド レイアウトからフロー レイアウトへ
発行機能
ASP.NET 開発サーバー
デバッグ用の Web サーバー
任意の場所を Web サイトとして利用
その他
モバイル対応の吸収、一元化
ASP.NET 2.0 の方向性
現実的な Web サイト構築を効率化
ページデザインのためのコントロール群
ナビゲーション機能
Web パーツ
パーソナライズ化への対応
メンバーシープやロールの組み込み
Web 管理画面
データアクセスの改良と簡略化
新たなコントロール
データベース キャッシング
標準のサポート
XHTML やアクセシビリティへの対応
ASP.NET 2.0 の新機能
ユーザー インターフェイス
統一感のあるページデザインのために
マスタ ページ
Web ページの継承
宣言的またはプログラミングによる適用
テーマとスキン
コントロール、ページ、サイトに対するテーマ
宣言的またはプログラミングによる適用
新しいコントロール群
Menu、TreeView など
マスタ ページ
サイトの共通要素
マスタ ページ
複数のページで共有できるテンプレート
専用のディレクティブ宣言やコンテンツ
デザイン上は、通常の Web フォームと同等
(html、ASP.NETサーバーコントロールの利用)
利用方法には柔軟性がある
複数のマスタ ページ
配置場所の自由度
Visual Studio 2005 での編集
マスタ ページ
コンテンツ ページ
テーマ
グループ単位での設定
テーマ
コントロールやページ、サイトなどのグループ単位で、
共通のプロパティを設定する仕組み
一つ以上のスキンから構成
スキン
コントロールの一つ以上のビジュアルな属性の定義
実質的にはコントロールの初期値が記述されたタグ
フォントや色などのスタイル以外にも、使用するイ
メージ ファイルの URL など、コントロールのプロパ
ティの初期値を記述できる
物理的には .skin ファイルに保存
Visual Studio 2005 での操作
テーマ作成のメニュー コマンド
サイトを右クリックして、[ASP.NET フォルダの追
加] メニューし、テーマ (Theme) を選択
プロパティ ウィンドウからの指定
Web フォーム デザイナのプロパティ ウィンドウで
[DOCUEMNT] をドロップ
ダウン リストで選択して Theme
プロパティを指定
サイト ナビゲーション
ナビゲーション機能の UI 実装は複雑
(特にクライアント スクリプトに依存する場合)
ナビゲーションの実装を簡素化するコントロール
TreeView、Menu - ユーザー インターフェイス
SiteMapDataSource - XML 形式のサイトマップ
SiteMapPath - 現在のサイト パス表示
実装の基盤となる API 群
プロバイダを使用した柔軟性
サイト ナビゲーションの仕組み
コントロール
Menu
サイト ナビゲーション API
SiteMapNode
SiteMapDataSource
TreeView
SiteMap
SiteMapNode
プロバイダ
SiteMapNode
XmlSiteMapProvider
その他の
マップ プロバイダ
Web.sitemap
その他の
データ ストア
サイト マップ
SiteMapPath
TreeView コントロール
<asp:TreeView ShowLines="true" Font-Size="10pt" ID="TV1" RunAt="Server">
<SelectedNodeStyle BackColor="Yellow" />
<HoverNodeStyle BackColor="LightBlue" />
<Nodes>
<asp:TreeNode Text="選択できません" SelectAction="None">
<asp:TreeNode Text="選択できます" SelectAction="Select">
<asp:TreeNode Text="展開できます" SelectAction="Expand">
<asp:TreeNode Text="展開も選択もできます"
SelectAction="SelectExpand">
<asp:TreeNode Text="チェックボックス付きのノード" ShowCheckBox="true">
<asp:TreeNode Text="ナビゲートできます" NavigateUrl="..." />
</asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</asp:TreeNode>
</Nodes>
</asp:TreeView>
SiteMapDataSource との併用
<asp:SiteMapDataSource ID="SiteMap" RunAt="server" />
<asp:TreeView ID="TreeView1" DataSourceID="SiteMap" RunAt="server" />
Web.sitemap
<siteMap>
<siteMapNode title="ホーム" description="" url="default.aspx">
<siteMapNode title="トレーニング" url="Training.aspx"
description=".NET 開発者向けトレーニング">
<siteMapNode title=".NET プログラミング" url="Classes.aspx?id=1"
description=".NET Framework 全般" />
<siteMapNode title="ASP.NET プログラミング" url="Classes.aspx?id=2"
description="ASP.NET 全般" />
<siteMapNode title="Web サービス プログラミング" url="Classes.aspx?id=3"
description="Web サービス全般" />
</siteMapNode>
<siteMapNode title="コンサルティング" url="Consulting.aspx"
description=".NET プロジェクト向けコンサルティング" />
<siteMapNode title="デバッグ" url="Debugging.aspx"
description="必要なときのオンライン ヘルプ" />
</siteMapNode>
</siteMap>
Menu コントロール
<asp:Menu ID="Menu1" Orientation="Vertical" RunAt="server">
<Items>
<asp:MenuItem Text="トレーニング" >
<asp:MenuItem Text=".NET プログラミング"
Navigateurl="Classes.aspx?id=1" />
<asp:MenuItem Text="ASP.NET プログラミング"
NavigateUrl="Classes.aspx?id=2" />
<asp:MenuItem Text="Web サービス プログラミング"
NavigateUrl="Classes.aspx?id=3" />
</asp:MenuItem>
<asp:MenuItem Text="コンサルティング" NavigateUrl="Consulting.aspx" />
<asp:MenuItem Text="デバッグ" NavigateUrl="Debugging.aspx" />
</Items>
</asp:Menu>
SiteMapDataSource との併用
<asp:SiteMapDataSource ID="SiteMap" RunAt="server" />
<asp:Menu DataSourceID="SiteMap" RunAt="server" />
<siteMap>
<siteMapNode title="ホーム" description="" url="default.aspx">
<siteMapNode title="トレーニング" url="Training.aspx"
description=".NET 開発者向けトレーニング">
<siteMapNode title=".NET プログラミング" url="Classes.aspx?id=1"
description=".NET Framework 全般" />
<siteMapNode title="ASP.NET プログラミング" url="Classes.aspx?id=2"
description="ASP.NET 全般" />
<siteMapNode title="Web サービス プログラミング" url="Classes.aspx?id=3"
description="Web サービス全般" />
</siteMapNode>
<siteMapNode title="コンサルティング" url="Consulting.aspx"
description=".NET プロジェクト向けコンサルティング" />
<siteMapNode title="デバッグ" url="Debugging.aspx"
description="必要なときのオンライン ヘルプ" />
</siteMapNode>
</siteMap>
SiteMapPath コントロール
現在のページへのパスを表示
既定では、現在のノードは静的なテキスト
既定では、親のノードはハイパーリンク
高度にカスタマイズ可能なユーザー インター
フェイス
スタイル設定やテンプレートの使用
サイト マップ プロバイダとの統合
<asp:SiteMapPath ID="SiteMapPath1" RunAt="server" />
その他の重要な UI 関連新機能
クロスページ ポストバック
ボタンなどの Click イベントの際に、異なるページに
もポストできる(Button.PostBackUrl)
検証グループ
論理的に画面を分割して (グループ化して)、画面の
一部分だけ、入力検証させてポストできる
入力フォーカスの制御(Page.SetFocus)
パネル単位のデフォルト ボタン
( Panel.DefaultButton)
メンバシップ サービス
ユーザーと資格情報 (クレデンシャル) の管理
Web サイト管理ツールを使用した宣言的な構成
Membership クラスと MembershipUser クラスを
使用した
プログラミングによる構成
新しいクラス ライブラリ
Membership クラスは基本的なサービスを提供
MembershipUser クラスはユーザーを表し、関連
する
サービスを提供
プロバイダ ベースの柔軟なデータ ストレージ
メンバシップ サービスの仕組み
コントロール
Login
LoginStatus
LoginView
メンバシップ API
Membership
MembershipUser
メンバシップ プロバイダ
SqlMembershipProvider
その他のプロバイダ
メンバシップ データ
SQL Server
その他の
データ ストア
その他のログイン
コントロール
コード例
Try
' ユーザー新規作成
Membership.CreateUser ("Jeff", "imbatman", "[email protected]")
Catch e As MembershipCreateUserException
' 新規ユーザー作成失敗の原因を調べる
Select Case e.StatusCode
Case MembershipCreateStatus.DuplicateUsername
...
Case MembershipCreateStatus.DuplicateEmail
...
Case MembershipCreateStatus.InvalidPassword
...
Case Else
...
End Select
End Try
If Membership.ValidateUser (UserName.Text, Password.Text) Then
FormsAuthentication.RedirectFromLoginPage( _
UserName.Text, RememberMe.Checked)
Login コントロールの認証
Login コントロールの特徴
フォーム認証のログインで使用する標準的な UI
メンバシップ サービスとの統合
ValidateUser メソッドの自動呼び出し
ユーザー検証やログイン処理のコードは不要
<%@ Page Theme="BasicBlue" %>
<html>
<body>
<form runat="server">
<asp:Login RunAt="server" />
</form>
</body>
</html>
使用例
カスタマイズも可能
<asp:Login ID="LoginControl" RunAt="server"
CreateUserText="新規入会"
CreateUserUrl="CreateUser.aspx"
DisplayRememberMe="false"
PasswordRecoveryText="パスワードをお忘れの方"
PasswordRecoveryUrl="RecoverPassword.aspx"
TitleText="ログイン(会員専用)"
/>
ユーザーの構成方法
ユーザーの構成方法
メンバ シップ関連のクラス ライブラリを使う
Web サイト管理ツールで対話的に編集する
ロール管理サービス
すぐに利用できるロール ベース セキュリティ
Web サイト管理ツールを使った宣言的な構成
Roles クラスを使ったプログラミングによる構成
Roles クラスには、ロールの作成、ロールへ
のユーザー追加などを行う静的メソッドがある
ユーザーはロールにマップされる
従来の Application_AuthenticateRequest イベ
ントハンドラ
の置き換え
プロバイダ ベースの柔軟なデータ ストレージ
ロール管理サービスの仕組み
ロール API
Roles
ロール プロバイダ
SqlRoleProvider
WindowsTokenRoleProvider
ロール データ
SQL Server
その他の
データ ストア
その他のプロバイダ
ロールの使用
アクセス制御での利用
Web.config の <authorization> 要素の構成に基
づく
URL アクセス制御
Page.User プロパティ (IPrincipal オブジェクト) を
<configuration>
<system.web>
利用した
<authorization>
<allow users="taro, jiro, goro" />
ビジネスロジックの制御
<allow roles="managers" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
IPrincial prin = Page.User
If prin.IsInRole("managers") Then ...
ロールの構成
ユーザーの構成方法
メンバ シップ関連のクラス ライブラリを使う
Web サイト管理ツールで対話的に編集する
パーソナライズ化
プロファイルとは
ユーザー単位のデータを永続的に保存する
強く型指定されたデータ、独自のデータ
フィールド
長時間保存 (セッション情報と異なる)
認証済みユーザーと匿名ユーザーをサポー
ト
動的にコンパイルされた ProfileBase 派生クラス
を経由してアクセス
プロバイダを使用した柔軟性あるデータ ストア
プロファイルの仕組み
プロファイル
ProfileBase
ProfileCommon (自動生成
ProfileBase から派生)
ProfileCommon (自動生成
ProfileBase から派生)
プロファイル プロバイダ
SqlProfileProvider
その他の
プロファイル プロバイダ
プロファイル データ ストア
SQL Server
その他の
データ ストア
プロファイルの定義
構成ファイルに行う
<configuration>
<system.web>
<profile>
<properties>
<add name="ScreenName" />
<add name="Posts" type="System.Int32" defaultValue="0" />
<add name="LastPost" type="System.DateTime" />
</properties>
</profile>
</system.web>
</configuration>
プロファイルの使用
' 現在のユーザーの投函回数を増加
Profile.Posts = Profile.Posts + 1
' 最新の投函時間を記録
Profile.LastPost = DateTime.Now
運用管理の新機能
管理ツール
ASP.NET MMC スナップイン
Web サイト管理ツール
Configuration API
構成ファイルの設定の読み込みと書き込み
カスタム構成セクションの簡素化
監視機能の装備 (インスツルメンテーション)
パフォーマンス カウンタ、ヘルス モニタリング
ASP.NET MMC スナップイン
GUI 環境での構成
Web サイト管理ツール
ブラウザ ベースの GUI を持つ管理ツール
asp.netwebadminfiles にアクセス
または、Visual Studio の
[ASP.NET 構成] メニュー
構成ファイルの操作
構成データの読み書きを行う API
アプリケーション、ローカル マシン、リモート マシン
MMC スナップインや Web サイト管理ツールが使用
構成セクションに対する強い型指定のアクセス
必要があれば、XML データとしてそのままアクセス
可能
System.Configuration 名前空間
ASP.NET 固有のクラスは
System.Web.Configuration 名前空間
構成ファイルの操作 (続き)
<appSettings> の編集
' <appSettings> セクションからの値の読み込み
Dim connect As String = ConfigurationSettings.AppSettings("Northwind")
' <appSettings> セクションへの値を書き込み
Dim config As Configuration _
= Configuration.GetWebConfiguration (Request.ApplicationPath)
config.AppSettings.Add ("Northwind", _
"server=localhost;database=northwind;integrated security=true")
config.Update () '更新!
技術情報リソース
MSDN Online:
http://www.microsoft.com/japan/msdn/
Visual Studio デベロッパーセンター:
http://www.microsoft.com/japan/msdn/vstudio/
Visual Studio 2005 Express Edition(無償ツール):
http://www.microsoft.com/japan/msdn/vstudio/express/
ASP.NET デベロッパーセンター:
http://www.microsoft.com/japan/msdn/asp.net/
MSDN Flash(ウィークリー ニュースレター):
http://www.microsoft.com/japan/msdn/flash/
© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not
be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.