WCF Webサービスを呼び出す - C#

WCF Webサービスを呼び出すプログラムの作成手順とコードを紹介します。

概要

こちらの記事では、WCF Webサービスの作成手順とIIS Webサーバーへの配置について紹介しました。この記事ではWindows Formアプリケーションから WCF WebサービスのWebメソッドを呼び出す手順、コードを紹介します。

プログラム例

Visual Studioで Windows Form アプリケーションを作成します。

事前準備

WCFサービスを作成し、IIS Webサーバーに配置します。今回使用するWCFサービスはこちらの記事で作成したものを利用します。

サービス参照の追加

プロジェクト作成後、ソリューション エクスプローラーのウィンドウで[参照]ノードを選択し右クリックでポップアップメニューを表示します。ポップアップメニューの[サービス参照の追加]メニューをクリックします。


[サービス参照の追加]ダイアログが表示されます。ウィンドウ上部の[アドレス]テキストボックスに、WCFサービスのURL(*.svc)を入力し[移動]ボタンをクリックします。


WCFサービスに接続し、サービスの情報を取得します。ウィンドウの[サービス]欄に取得したサービスが表示されます。ツリービューを展開しサービスを選択すると、サービスに含まれるWebメソッドが右側の[操作]エリアに表示されます。
ウィンドウ下部の[名前空間]のテキストボックスにWCFサービスを参照する名前空間を指定します。今回は[iPentecSimpleWcfServiceReference]とします。設定後[OK]ボタンをクリックします。


ダイアログを閉じ、Visual Studioに戻るとソリューション エクスプローラーに[Connected Services]のノードが追加され、"iPentecSimpleWcfServiceReference"のノードが追加されていることが確認できます。


UI

下図のUIを作成します。テキストボックスを2つ、ボタンを1つ配置します。

コード

下記のコードを記述します。button1のClickイベントを実装します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WcfServiceCall
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      iPentecSimpleWcfServiceReference.Service1Client client = new iPentecSimpleWcfServiceReference.Service1Client();
      string result = client.HelloProc(textBox1.Text);
      textBox2.Text = result;
    }
  }
}

解説

下記のコードでWCF Webサービスのクライアントオブジェクトを作成します。asmxの場合は、サービス名 + SoapClientの名称でしたが、WCFの場合は サービス名 + Client の名称となります。
  iPentecSimpleWcfServiceReference.Service1Client client = new iPentecSimpleWcfServiceReference.Service1Client();

下記のコードでWebメソッドを呼び出します。クライアントオブジェクトのメソッドにWebメソッドが実装されています。下記のコードではWCFサービスの HelloProc メソッドを呼び出しています。Webメソッドの戻り値はクライアントオブジェクトのメソッドの戻り値として返ります。
  string result = client.HelloProc(textBox1.Text);

Webメソッドからの戻り値をテキストボックスに表示します。
  textBox2.Text = result;

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


上部のテキストボックスに入力文字列を入力します。今回は「しましまラクダ」を入力します。入力後[button1]をクリックします。


ボタンをクリックすると下部のテキストボックスに文字列が表示されます。「こんにちはしましまラクダさん」の文字列が表示されます。WCFサービスで実装したHelloProcの動作である、入力文字列の前に「こんにちは」を追加し末尾に「さん」の文字列を追加する処理が実行できていることが確認できます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-06-20
作成日: 2018-05-29
iPentec all rights reserverd.