用語集
用語 |
説明 |
XML Schema (xsd) |
XML文書の論理的構造を定義する為のスキーマ言語の一つ。 元々XMLのスキーマ言語としてはSGML用スキーマ言語であるDTD(Document Type Definition:文書型定義)が使われていたが、要素のデータ型が定義できない、文法がXMLと全く異なる等、XMLでは使いづらい面があった為、W3Cが開発・標準化にあたっている。 |
WSDL |
Web Services Description Language。Webサービスを記述する為のXMLをベースとした言語仕様。 Webサービスの機能やどのような要求をすればよいか等が定義されている。 |
WCFとASP.NETの関係
WCFとASP.NETの関係についてMSDNに記述がある。
Webサービスの分類
RESTとSOAP Webサービスの比較
|
REST |
SOAP_Webサービス |
通信プロトコル |
HTTP |
特定しない。標準化されているのはHTTPのみ。 |
HTTPメソッド |
Get/Post/Put/Delete |
Post |
リクエストメッセージ |
URL |
SOAP XMLドキュメント |
レスポンスメッセージ |
XMLドキュメント |
SOAP XMLドキュメント |
エンコード方式 |
XML/バイナリ |
XML/バイナリ |
メタデータの定義 |
標準化方法無し |
WSDL |
信頼性 |
SSLのみ |
WS-Securityに対応可能 |
トランザクション処理 |
サポート外 |
WS-Transactionに対応可能 |
実装の難易度 |
簡単 |
複雑 |
SOAP Webサービス
SOAP(Simple Object Access Protocol)とは標準化されたXML形式のメッセージを利用したプロトコル。以下の2つに分類できる。
ASMX(ASP.NET Webサービス)
MSが最初に.NET Frameworkで提供したWS-I(Web Services Interoperability Organization)Basic Profile準拠のWebサービス。WS-I Basic Profileは、SOAP/WSDL/UDDIの基本仕様のみ定義するのでかなりシンプルなWebサービスしか実現できないが、
Javaとの相互運用性が高い。通信量が多く、パフォーマンスは悪い。
WSE(Web Service Enhancements)
WS-I Basic Profileの課題を解決する為、WS-*と呼ばれるBasic Profile SOAP Webサービスを拡張した仕様。SOAPドキュメントのヘッダを拡張することにより、以下の課題を解決。
- .NET Framework 3.5 WCFがサポートするWS-*仕様
- WS-Security(認証・暗号化)
- WS-Federation(ID管理)
- WS-Coordination(分散アプリケーションの動作調整)
- WS-Trust(信頼関係)
- WS-Atomic Transaction(トランザクション)
- ...
問題はまだ広く普及していないこと。
Web2.0
REST(REpresentational State Transfer)
RESTは以下のHTTPメソッドを使用してWebサービスの情報を操作する簡易Web2.0サービス技術。
- Get(読み出し)
- Post(追加)
- Put(更新)
- Delete(削除)
RESTでは操作対象への識別に煩雑なSOAPドキュメントを使わず、すべてURLで表現する。返される情報はHTMLファイルではなく、XMLのドキュメント。
- WCFによるRESTなWebサービス実装方法(msdn Code Recipe)
- Web APIの例(Yahoo!)
- WCF Web HTTP プログラミング モデルの概要(msdn)
AJAX(Asynchronous JavaScript + XML)
JavaScriptの非同期通信インターフェース技術の集合体。.NET Framework 3.5はAJAXの一部機能としてASP.NET AJAXをサポートし、JavaScriptからWCFのAJAXサービスを直接呼び出すことが可能。WCFのAJAXサービスは以下の2種類形式のメッセージをクライアントに返すことができる。
- POX(Plain Old XML)... JavaScript以外でも利用可能。汎用性が高い。
- JSON(JavaScript Object Notation)... JavaScriptと親和性が高く通信パフォーマンスがよい。
サービス指向(SOA)
SOA(Service-Oriented Architecture)は複数のサービスより分散システムを構築するという指向。
サービス指向の4原則は以下の通り。
- サービスの境界が明確であること。
- サービスが自律していること。
- コントラクトを共有すること。
- ポリシーによって互換性を保つこと。
WCF概要
WCF(
Windows Communication Foundation)は、Microsoftの分散オブジェクト技術の実装。
通信の3要素(ABC = Endpoint)
以下の3要素を合わせてEndpointと呼ぶ。
- Address(通信の宛先)
- Binding(通信手段)
- Contract(通信内容)
Address
アドレスはベースアドレスと相対アドレスから構成される。
Address = BaseAddress + RelativeAddress
例)
Address(Endpoint) = http://localhost:8000/WCFSampleService/HelloWCF
BaseAddress = http://localhost:8000/WCFSampleService
RelativeAddress = HelloWCF
Binding
WCFではクライアントからのサービス呼び出し及びサービスからクライアントへサービス結果のレスポンスは、全てメッセージ(Message)として取り扱う。クライアントとサービスは、これらのメッセージに対する必要な処理を提供する必要がある。
WCFではメッセージに対する特定の処理のことをバインディング要素(Binding Element)と呼ぶ。
クライアント・サーバ間通信では以下のバインディング要素が必須。
- エンコードバインディング要素(Encode Binding Element)
- トランスポートバインディング要素(Transport Binding Element)
代表的なバインディングは以下の通り。
バインディング |
構成 |
セキュリティ |
セッション |
トランザクション |
双方向通信 |
概要 |
BasicHttpBinding |
Basic Profile |
N/A |
N/A |
N/A |
N/A |
SOAPベースのWebサービスのBasic-Profileを使用するバインディング |
WSHttpBinding |
WS-* |
メッセージ |
オプション |
○ |
- |
Webサービス拡張仕様を使用するバインディング |
WSDualHttpBinding |
WS-* |
メッセージ |
○ |
○ |
○ |
WSHttpBindingの双方向版 |
NetTcpBinding |
.NET |
トランスポート |
オプション |
○ |
○ |
TCP/IPを使用するバインディング |
WebHttpBinding |
- |
- |
- |
- |
- |
RESTスタイルのWebサービスおよびJSONをサポートするWebプログラミングモデルのバインディング |
- 構成
バインディングによる相互操作を可能にするプロトコルまたはテクノロジに名前を付けます。
- セキュリティ
チャネルをセキュリティで保護する方法を指定します。- なし
SOAP のメッセージはセキュリティで保護されず、クライアントは認証されません。
- トランスポート
セキュリティ要件はトランスポート層で満たされます。
- メッセージ
セキュリティ要件はメッセージ層で満たされます。
- 混在
のセキュリティ モードは TransportWithMessageCredentials として知られています。メッセージ レベルで資格情報を処理し、整合性と機密性の要件がトランスポート層で満たされます。
- 両方
メッセージ レベルとトランスポート レベルのセキュリティが共に使用されます。この機能は、NetMsmqBinding に特有の機能です。
- セッション
- このバインディングでセッション コントラクトをサポートするかどうかを指定します。
- トランザクション
- 双方向
- 二重のコントラクトがサポートされているかどうかを指定します。この機能はバインディングでセッションをサポートする必要があることに注意してください。
- 参考:システムが提供するバインディングの構成(msdn)
Contract
ContractはWCFクライアントがWCFサービスを利用する為のWCFサービスのインターフェース。WCFではWSDLに準拠したContractとして以下のものを提供する。
- Service Contract ... インターフェース定義
- Operation Contract ... メソッド型宣言
- Data Contract ... インターフェースのプロパティ宣言
- Error Contract ... サービスのエラー定義
- Message Contract ... メッセージ形式の定義
WCFのその他の概念
MEX(Metadata Exchange)エンドポイント
どのようなインターフェースが実装されているか問い合わせの窓口。COM/DCOMのIUnkownインターフェースに相当。MEXエンドポイントに問い合わせることで、WCFサービスのメタデータ(WSDL)を取得できる。
ビヘイビア
エンドポイントのメタデータ(WSDL)以外に対外的に公開せず、WCFサービスの動作に影響するサービスのモデル情報。
セキュリティ
TBD
LINK
最終更新:2011年07月09日 14:50