SESSION-6
サービス指向 Windows Communication Foundation (WCF) Windows Workflow Foundation (WF) Windows CardSpace (CardSpace) まとめ
オブジェクト コンポーネントからサービスへ 1980s オブジェクト指向 クラスベース責務の分離 カプセル化継承 ポリモーフィズム 1990s 2000s コンポーネント指向 インターフェイスベースタイプシステム ランタイムメタデータ位置透過な分散コンポーネント サービス指向 メッセージベーススキーマとコントラクト分散を意識したモジュールの分割
サービスの組み合わせ ( 再利用 ) によってシステム構築を迅速化させる複雑化する IT 環境への対処 サービス という単位 自律可能かつ接続可能なコンポーネント 動的なモジュールの再利用 ライブラリの再利用から実行済みアプリケーションの再利用へ サービス指向によるパラダイムシフト : 造り直さないシステム 変化 進化可能なシステム長期に渡る開発 短期間での逐次的な開発機能指向 プロセス指向孤立したシステム 繋がるシステム密結合 疎結合単一プラットフォームのみ マルチプラットフォーム混在
先進的な UX ID 連携と管理 統合データモデル ビジネスプロセス可視化と管理 統合可能なメッセージング Windows Presentation Foundation Office Windows CardSpace Active Directory ADO.NET Windows Workflow Foundation Office SharePoint Server Windows Communication Foundation Windows Forms ASP.NET & AJAX ADFS MIIS SQL Server HIS BizTalk Server.NET Framework Office System Application Servers Integration Servers Windows Server Features
~2002 2002~2006 2006~ DCOM Enterprise Services MSMQ System. Messaging Windows Communication Foundation.NET Remoting WSE Web Services Enhancements SOAP Toolkit ASMX ASP.NET Web サービス
.NET Framework 1.x ~ 2.0 アプリケーション Web サービス.NET.NET 高速なバイナリ通信 キュー型非同期メッセージング 分散トランザクション API ASMX / WSE.NET Remoting System.Messaging Enterprise Services プロトコル SOAP & WS-* Remoting バイナリプロトコル MSMQ DCOM.NET Framework 3.0 ~ アプリケーション すべての通信形態を WCF で一元的にサポート API Windows Communication Foundation プロトコル SOAP & WS-* REST & POX/JSON RSS/Atom WCF バイナリプロトコル MSMQ その他
サービス サービス実装 A アドレス サービスホスト B バインディング エンドポイント public class MyService : IMyService {... } C コントラクト メッセージ var proxy = new MyServiceClient("MyEndpoint"); var mydata = new MyData(); proxy.foo(mydata); [ServiceContract] public interface IMyService { [OperationContract] void Foo(MyData d); } [DataContract] public class MyData {... } クライアント A B C エンドポイントプロキシ var host = new ServiceHost(typeof(MyService)); host.open(); <service name="myservice">... <endpoint contract="imyservice host.close(); binding="basichttpbinding address="http://localhost/hoge"/> </service> <client> <endpoint name="myendpoint" contract="imyservice" binding="basichttpbinding address="http://myserver/hoge"/> </client>
サービスサービス実装 A サービスのロケーションアドレス B 通信バインディングプロトコル エンドポイント サービスの定義 ( 公開情報 ) public class MyService : IMyService インターフェイスと実装の分離 {... } C サービスのコントラクト内容 メッセージ [ServiceContract] public interface IMyService { インターフェイスによる [OperationContract] } プロトコル依存しない void サービス内容の定義 Foo(MyData d); ( メッセージのやりとりの 仕方やメッセージの定義 [DataContract] ) public class MyData {... } クライアント サービスホスト var proxy = new MyServiceClient("MyEndpoint"); Visual Studio や SDK ツールにより自動生成可能なプロキシ var mydata = new MyData(); proxy.foo(mydata); A B C エンドポイント プロキシ var host = new ServiceHost(typeof(MyService)); host.open();... さまざまなアプリケーションでホスト可能なサービスランタイム host.close(); <service name="myservice"> <endpoint contract="imyservice <client> 柔軟性の高いサービスの構成 <endpoint name="myendpoint" contract="imyservice" binding="basichttpbinding binding="basichttpbinding ( アドレスの変更 エンドポイントの追加 サービス実装の変更などが容易 address="http://localhost/hoge"/> address="http://myserver/hoge"/> ) </service> </client>
自由度の高い WCF のサービスホスティングセルフホスト : ServiceHost を使ったホストコードを実装 コンソールアプリケーション Windows アプリケーション (WPF Windows Forms) NT サービスアプリケーションサーバー上でのホスト :.svc ファイルによる宣言的ホスティング (ASP.NET Web サービスライク ) IIS 6.0/5.1 (ASP.NET ワーカープロセス ) HTTP プロトコル (HTTP 系バインディング ) のみ IIS 7.0 & WAS (Windows Process Activation Service) Windows Server 2008/Windows Vista HTTP TCP Named-Pipe MSMQ をサポート
標準機能により アシュアランスと相互運用性を強力にサポートアシュアランス ( 品質保証機能 ) 安全で信頼性の高い通信をサポートセキュリティリライアビリティ ( リライアブルメッセージング ) 分散アトミックトランザクション相互運用性対異種プラットフォーム : Web サービス 3.5 の代表的な新機能 WS-I Basic Profile 準拠 WS-* サポート Web スタイルサービス (REST 型 Web サービス ) AJAX 用サービス RSS/Atom フィードサービス対既存の分散テクノロジー : ASMX WSE 3.0 MSMQ COM+ との相互運用をサポート
ワークフロー開発のための基盤ワークフローとは? ビジネスプロセス / ロジック 実行プロセスの中断 再開など スケーラビリティが要求される様々な形態や粒度のワークフローを実現 システムワークフロー ヒューマンワークフローアプリケーション内のプロセス サービス間連携プロセス... Visual Studio 上でビジュアルな開発が可能 モデル駆動型での開発をサポート Microsoft 製品の基盤技術へ Office SharePoint Server 2007 ワークフローエンジンとして BizTalk Server "6 オーケストレーションエンジンとして システムワークフロー ヒューマンワークフロー
状態の変化 遷移に着目したプロセスを表現 処理の流れに着目したプロセスを表現
ワークフロー実行エンジン ランタイム エンジン ワークフロー アクティビティ ポリシー エンジン ポリシー ランタイム サービス ワークフローの実行を司るエンジン ビジネス プロセス シーケンシャル or ステートマシン ビジネス ロジックのビルディング ブロック ビルトイン or カスタマイズ <ビルトイン> - IfElse While Sequence Parallel - Code Listen InvokeWebService... ビジネス ルール アプリケーション (ワークフロー ホスト) アクティビティの実行条件であるビジネス ルールをワークフローから分離 ワークフロー サービス (配管処理) トラッキング ステート管理 トランザクション... ワークフロー ホスト さまざまなアプリケーションでワークフローをホスト可能
WF ワークフローを WCF サービスとして公開 WCF サービス WF ワークフロー WF 専用 WCF サービスホスト WCF エンドポイント WCF クライアント WF 専用の WCF サービスホスト バインディングにより WF ワークフローを WCF サービスとして公開 実行 WF ワークフロー内から WCF サービスへの接続 WF ワークフロー WCF サービス WCF サービス WCF サービスとの間の送信 受信用アクティビティの提供
ID 管理システムにおける現状課題 : セキュリティの問題 フィッシングやなりすましの危険性法律 法令遵守の問題 個人情報保護法などが義務付ける ユーザーアクセスの完全追跡の実現が困難システムを跨る連携の問題 異なる ID 管理システム間を統合連携させることは困難ユーザビリティの問題 システム毎に必要となる ユーザー ID / パスワードの入力ならびに管理が煩雑
"ID メタシステム " の提唱 ID システムのためのシステム (= メタシステム ) 多様なセキュリティトークンを扱うことが可能な抽象的なアプローチの確立一貫性の無いベンダー固有のメカニズムではなく オープンなアーキテクチャ & テクノロジー WS-* ベースでプラットフォーム非依存統合ではなくフェデレーション ( 連携 ) 3 つのロールでシステムを構成 Subject = ユーザー Identity Provider = ID 発行 管理責任者 Relying Party = ID を利用するサービス ID メタシステム Identity Provider Subject Relying Party
カードを受け取る Subject ( ユーザー ) カードを発行 カードの発行を依頼 カードを使用 カードの使用に必要なクレームのセット サインによる本人確認 カードが正当であることを確認 Identity Provider Relying Party ( クレジットカード会社 ) ( 商店 )
ID セレクターの提供 ID メタシステムのための UI ユーザー (Subject) が使用様々な ID を カード として管理 ユーザー ID/ パスワード X.509 証明書... 2 種類のカード 自己発行 :ID 情報をローカルに自己登録 マネージド : 信頼されている発行機関が発行より簡単に よりセキュアに ユーザー ID/ パスワード入力 カードの選択 フィッシングやなりすましを防止アプリケーションに組み込み可能な API Windows:WPF Windows Forms Web:IE7 (icardie.dll) 自己発行 マネージド
セキュリティプロバイダ (Identity Provider) ユーザー (Subject) サービスプロバイダ (Relying Party) セキュリティトークンサービス (STS) (3) CardSpace 起動 アプリケーション (1) サービスへアクセス サービス (2) セキュリティポリシーを要求 (4) カードの選択 (5) セキュリティトークンの要求 (6) セキュリティトークンの生成 (7) セキュリティトークンの提示 (8) 認証完了
.NET Framework 3.0/3.5 と Visual Studio 2008 の登場により.NET におけるサービスアプリケーション開発は新たなステージへ Windows Communication Foundation (WCF) サービス開発のための統一基盤最適化されたサービスの実現へ Windows Workflow Foundation (WF) モデル駆動によるワークフロー開発のための基盤 スケーラブルなビジネスプロセスの実現へ Windows CardSpace (CardSpace) 次世代のフェデレーション型 ID システムの実現基盤 よりセキュアでユーザビリティの高い ID システムの実現へ Visual Studio 2008 と.NET Framework 3.5 を是非ご評価下さい!
[MSDN].NET Framework Developer Center http://www.microsoft.com/japan/msdn/netframework/ [MSDN] Windows Developer Center Windows Server 2008 http://www.microsoft.com/japan/msdn/windows/windowsserver2008/ Windows Communication Foundation コミュニティサイト (English) http://wcf.netfx3.com/ Windows Workflow Foundation コミュニティサイト (English) http://wf.netfx3.com/ Windows CardSpace コミュニティサイト (English) http://cardspace.netfx3.com/
2007 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.