【WCF】【C#】WCF ~ 基礎知識編 ~

WCFを学ぶ前に

サービス / クライアントとは

 * 自身の機能を、別のプログラムへ提供するプログラムを「サービス(Service)」という
 * このサービスを利用するプログラムを「クライアント(Client)」という

 * イメージ的に、以下のように考えると、関係性が分かりやすいかも...
  + サービス:シェフ(色々な料理を提供)
  + クライアント:客(注文する人)
  →メニューという名のインターフェイスにより、客はサービスを受けて、要求を満たすイメージ。

WCFとは

WCF;Windows Communication Foundation
 * .NET Framework 3.0 から導入
  => .NET Framework 3.0 より前のプロセス間通信は、.NET Remoting。(詳細は以下の関連記事を参照)
.NET Remoting ~ プロセス間通信 ~
https://blogs.yahoo.co.jp/dk521123/32863213.html
  • クライアントとサービスが、お互いにエンドポイント(後述を参照のこと)という要素を通じて、
  やり取りをするのだが、そのやり取りするを統一的に扱うための技術。
=> プロセス間通信(IPC:Inter Process Communication)を実現する技術
}}}
http://www.atmarkit.co.jp/fdotnet/wcf/wcf02/wcf02_02.gif

■ 通信の3要素「ABC」

【1】 A : Address(アドレス)「Where」 ... どのアドレスに対してメッセージを送る/受けるのか
【2】 B : Binding(バインディング)「How」 ... どのようにメッセージを送る/受けるのか
【3】 C : Contract(コントラクト)「What」... 何を交換するのか

 →この3つの要素をまとめてエンドポイント(Endpoint)という
http://www.atmarkit.co.jp/fdotnet/wcf/wcf02/wcf02_01.html

【1】アドレス

 →通信のあて先。(どこに送受信するか)

【2】バインディング

 →通信の手段。(どうやって送受信するか)
バインディングの種類
http://www5a.biglobe.ne.jp/~imo/wcf.html
より抜粋

 * BasicHttpBinding : WS-I Basic Profileに準拠したWebサービス通信
 * WsHttpBinding : WS-*プロトコルを使用した高機能なWebサービス通信。
 * WsDualHttpBinding : WS-*プロトコルを使用した高機能なWebサービス非同期双方向通信。
 * NetTcpBinding : .NET同士の高速マシン間通信。
 * NetNamedPipeBinding : .NET同士のマシン内プロセス通信。
 * NetMsmqBinding : MSMQによるWCFアプリケーション間通信。
 * MsmqIntegrationBinding : 既存のMSMQアプリケーションとの相互接続通信。

 * どのように選ぶかは以下を参照のこと。
http://www.atmarkit.co.jp/fdotnet/wcf/wcf02/wcf02_03.gif

【3】コントラクト

 →通信内容の形式。(何を送受信するか)
http://d.hatena.ne.jp/tekk/20091103/1257256369
の説明がすごく分かりやすかったので。。。

 * クライアントとサーバのインタフェースにあたる部分を「コントラクト」と呼ぶ。
 * クライアント-サーバ間で、どのようなインタフェースで渡すかという取り決め
  →だから「Contract = 契約」と呼ぶ
イメージ的には...
■サービスコントラクト
 ・・・ こんなサービスありますよって契約(コントラクト)

■データコントラクト
 ・・・ このデータやりとりしますよって契約(コントラクト)