201201282. 並べてみた
ASP.NET WCF Data WCF RIA WCF Web
WebForm
MVC
WebPages WCF Services Services API
VSUG DAY - Winter 2012.01.28
3. ベースの技術でわけてみた
WCF Data WCF RIA WCF Web
WCF Services Services API
ASP.NET
WebForm WebPages
MVC
VSUG DAY - Winter 2012.01.28
4. バージョンをいれてみた
ASP.NET WCF Data WCF RIA WCF Web
WebForm
MVC
WebPages WCF Services Services API
4 3 4 4 V1.0 SP2 Preview 6
(4.5 DP) (4DP) (2DP) (4.5 DP) (4.5 DP) VS11
(
TraningKit
に記載
)
VSUG DAY - Winter 2012.01.28
5. ソースの提供でわけてみた
ASP.NET WCF Web
WebPages
MVC API
WCF Data WCF RIA
WebForm WCF Services Services
VSUG DAY - Winter 2012.01.28
6. ホスティングでわけてみた
WCF Web
WCF API
ASP.NET WCF Data WCF RIA
WebForm WebPages
Services
MVC Services
VSUG DAY - Winter 2012.01.28
7. レスポンスでわけてみた SOAP
(Toolkit)
JSON
(Toolkit)
WebForm ASP.NET
WebPages ATOM
MVC JSON JSON
(表示のみ)
asmx
(SOAP)
バイン
JSONResult ディング ATOM バイナリ ATOM
による
ashx
WCF Data WCF RIA WCF Web
WCF Services Services API
cshtml
ViewResult
vbhtml
aspx ※ATOM、JSONと記述した箇所
は
ODataに対応
VSUG DAY - Winter 2012.01.28
9. ASP.NETとWCF
ASP.NET WCF
• IIS上で実行 • セルフホスティング
Windowsサービス
IIS
WAS(Windowsプロセ
ス
アクティブ化サービ
• HTTPパイプライン ス)
• HTTPパイプラインに統
合すること”も”できる
(ASP.NET 互換モー
VSUG DAY - Winter 2012.01.28
10. HTTPパイプライン
ブラウザ • リクエスト
HttpContext
認証
承認
キャッシュ解決
I ページ処理の実行/
I セッション情報取得 Actionメソッド呼び出
S し
ProcessRequest 等...
セッション情報格納
キャッシュ情報格納
ブラウザ • レスポンス
VSUG DAY - Winter 2012.01.28
11. ASP.NET 互換モード
• Web.config に設定
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
• WCFから認証、セッション等の利用が可能になる
• WCF Data Services/WCF RIA Services では機能の追加時に設定
される
VSUG DAY - Winter 2012.01.28
12. 各技術の特徴
VSUG DAY - Winter 2012.01.28
13. WebForm
aspx
ブラウザ • リクエスト
コントロールの活用が
HttpContext
初期化
キーポイントとなる
認証
リクエスト読
み込み
承認
コントロール page
ツリー生成
キャッシュ解決 コントロール
I イベント
I セッション情報取得 ポストバック
イベント
S
ProcessRequest レンダリング
セッション情報格納
SOAPベースの
asmx Webサービス
キャッシュ情報格納
ブラウザ • レスポンス
ashx 基本形
手書きなので自由度高
い
VSUG DAY - Winter 2012.01.28
14. ASP.NET MVC
チーム開発時に
ブラウザ • リクエスト
HttpContext
MvcHandler プログラムの記述方法を
合わせやすい
Actionメソッ
ド
(Controller)
I
I Model
S
ViewResult JSONResult
View JSON
VSUG DAY - Winter 2012.01.28
15. WebPages
HttpContext 学習が容易
ヘルパーが作りやすい
cshtml
I vbhtml
I
S
Helper
VSUG DAY - Winter 2012.01.28
16. WCF(Windows Communication Foundation)
• すべてのデータ通信の基礎となるものとして提供された技術
• ABC要素を設定
– A:アドレス
• 接続のためのアドレス
– B:バインディング
• プロトコル、エンコーディング等をまとめたもの
• 用意されたものが各種存在。独自に作成も可能
– C:コントラクト
• やりとりするデータの型を決めるもの
• 汎用型
– 設定が煩雑
– HTTPベースでのデータ通信に特化した使いやすいものが派生
• WCF Data Services(ADO.NET対応)
• WCF RIA Services(Silverlight対応)
– WCF Web HTTP プログラミングモデル(MSDN ドキュメントより)
• SOAP以外のWebサービス形式に対応
• WCF Web API がCodePlexで提供
VSUG DAY - Winter 2012.01.28
17. WCF Data Services
• データベースをそのままWebサービスに公開
– テンプレートでDataServiceクラスを追加し、接続先とな
るデータベースを指定する
• ObjectContextを指定
– 基本的にはEntityFrameworkの利用が前提
– IQueryable/IUpdatableに対応したクラスであれば利用可能
– データの送出だけならIEnumerableでも可能
– テーブル名のURLに対してCRUD
• HTTPメソッドでコントロール
– POST/GET/PUT/DELETE
– アクセス制御もテーブル名単位で行う
• config.SetEntitySetAccessRule("*", EntitySetRights.All);
– ATOM/JSONの切り替えはリクエストのHTTPヘッダー
による
VSUG DAY - Winter 2012.01.28
18. WCF Data Serviceのカスタマイズ
• インターセプターを利用してテーブルの処理にロジックをは
さむ
– QueryInterceptor属性
• データ送出時の処理
• ラムダ式を返す
– ChangeInterceptor属性
• データ追加/更新/削除時の処理
• 操作を特定するには引数で判断する
• サービス操作を追加する
– WebGet属性
• GETメソッドに対応
• IQueryable を返す
– WebInvoke属性
• メソッドは指定可能(既定値はPOST)
– サービスのアクセス許可が必要
• config.SetServiceOperationAccessRule("GetShop", ServiceOperationRights.All);
VSUG DAY - Winter 2012.01.28
19. WCF RIA Services
• Silverlightアプリケーションでの利用が主
• DomainServiceクラスのメソッドをWebサービスとして公開
– ウィザードでDomainServiceクラス/メタデータクラスを追加
し、ビルド時にSilverlightクライアント側のコードを自動生成
• DomainServiceクラス内に処理を追加して記述することが可能
• DataAnnotationによる入力値検証はクライアント側のコードにも反映さ
れる
– デフォルトではバイナリでの通信
• OData(ATOM)によるデータ公開が可能
– 追加/更新/削除には対応しない
• Toolkitを使用することでSOAP/JSONに対応
VSUG DAY - Winter 2012.01.28
20. WCF Web API
• WCF Web HTTP プログラミング モデルをより簡単に記述で
きるようにしたもの
– CodePlexにソースコード/ドキュメントを公開
– NuGetよりWebApi.allをプロジェクトに追加して利用
• データをPOCOで定義し、公開するメソッドを作成する
– WebGet属性、WebInvoke属性を利用
– アクセスするURLは上記属性の定義内で設定
– 返り値や引数としてPOCOを利用できる
– HttpStatusCodeを返すことができる
– ATOM/JSONの切り替えはリクエストのHTTPヘッダーによる
• ASP.NET MVCへの組み込みも容易
VSUG DAY - Winter 2012.01.28
21. まとめ
ASP.NET WCF Data WCF RIA WCF Web
WebForm
MVC
WebPages WCF Services Services API
VSUG DAY - Winter 2012.01.28