用語集

用語 説明
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

.NET Framework 3.5は、RESTfulサービスとAJAXサービスをサポート。RESTfulとはRoy FieldingのREST原則に従うシステムのこと。

REST(REpresentational State Transfer)

RESTは以下のHTTPメソッドを使用してWebサービスの情報を操作する簡易Web2.0サービス技術。
  • Get(読み出し)
  • Post(追加)
  • Put(更新)
  • Delete(削除)
RESTでは操作対象への識別に煩雑なSOAPドキュメントを使わず、すべてURLで表現する。返される情報はHTMLファイルではなく、XMLのドキュメント。


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と呼ぶ。
  1. Address(通信の宛先)
  2. Binding(通信手段)
  3. 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 に特有の機能です。
  • セッション
    • このバインディングでセッション コントラクトをサポートするかどうかを指定します。
  • トランザクション
    • トランザクションが有効かどうかを指定します。
  • 双方向
    • 二重のコントラクトがサポートされているかどうかを指定します。この機能はバインディングでセッションをサポートする必要があることに注意してください。


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




タグ:

WCF REST
+ タグ編集
  • タグ:
  • WCF
  • REST
最終更新:2011年07月09日 14:50