WCF入門-04。アプリケーション構成ファイル(app.config)を使用してWCFを構成する。
アプリケーション構成ファイルを使用してWCFを構成します。WCFService-04.zip
アプリケーション構成ファイルを使用すると、WCFのサービスモデルを構成する要素(アドレス・コントラクト・バインディング・ビヘイビア)を外部ファイルに記述することが出来ます。WCFのサービスモデルはプログラムコードで書くことも出来ますが、外部ファイルに記述することでリコンパイルなしに構成を変更できるようになります。
具体的には、WCFサービスのスタートアップルーチンが以下のようになります。
修正前
スタートアップルーチンで、アドレス、コントラクト、バインディングを設定しています。
Public Shared Sub Main()Dim baseUri As Uri = New Uri("http://localhost:8000/WCFService")
Dim host As ServiceHost = New ServiceHost(GetType(SampleService), baseUri)Dim httpBind As System.ServiceModel.BasicHttpBinding = Nothing
httpBind = New System.ServiceModel.BasicHttpBinding()host.AddServiceEndpoint(GetType(WCFInterface.ISampleService), httpBind, "HelloWCF")
host.Open()
Try
Console.WriteLine("何か入力すると終了します。")
Console.ReadLine()
Finally
host.Close()
End TryEnd Sub
修正後
スタートアップルーチンでは、公開するクラスのServiceHostをOpenにしているのみとなります。
Public Shared Sub Main()
Dim host As ServiceHost = New ServiceHost(GetType(WCFService.SampleService))
host.Open()
Try
Console.WriteLine("何か入力すると終了します。")
Console.ReadLine()
Finally
host.Close()
End TryEnd Sub
アプリケーション構成ファイルの記載を確認していきます。アプリケーション構成ファイルは、app.Configという名前でExeと同じフォルダに配置します。
- ビヘイビア
behavior name ="serviceBehavior"と付けていますが、任意の名前を設定することができます。serviceMetadata httpGetEnabled="true"とすることで、メタ情報をhttp経由で公開する設定をしています。メタ情報の公開については次の記事を参照してください。
service behaviorConfigurationにはビヘイビアで設定した名前を設定します。service nameには、公開するクラスの厳密名(名前空間+クラス名)を設定します。
endpoint addressにエンドポイントのアドレス、endpoint bindingに通信方法、endpoint nameは任意の名前を設定することができます。endpoint contractに公開するインタフェースの厳密名を設定します。
add baseAddressにベースアドレスを設定します。
上記を組み込んだapp.configは以下のようになります。