Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

WCFサービスのクライアントを作成する

WCFサービスのクライアントを作成し、前回作成したサービスにアクセスします。
WCFサービスの作成 - プログラマーな日々
WCFサービスを作成、起動します。 ...

クライアントの作成

前回作成したソリューションを開きます。
開いたソリューションに[Windowsフォームアプリケーション]のプロジェクトを新規作成します。
System.ServiceModelへの参照を追加します。
Form1.csにソースコードを記述します。
using System;
using System.ServiceModel;
using System.Windows.Forms;

namespace Client {
    /// <summary>
    /// サービスのコントラクトを定義する
    /// </summary>
    /// <remarks>
    /// 前回作成したWCFサービスのコントラクトのソースコードをコピーし、プロキシとします。
    /// </remarks>
    [ServiceContract(Namespace = "http://My.WCF.Samples")]
    public interface IServeice1 {
        [OperationContract]
        string getMessage(string inputMessage);
    }

    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();

            button1.Click += button1_Click;
        }

        private void button1_Click(object sender, EventArgs e) {
            // エンドポイントを作成します。
            EndpointAddress endPoint 
                = new EndpointAddress("http://localhost:8000/WCFSampleService/HelloWCF");

            // プロキシを作成します。
            IServeice1 proxy = ChannelFactory<IServeice1>.CreateChannel(
                                                    new BasicHttpBinding(), endPoint);

            // WCFサービスのメソッドを呼び出します。
            try {
                string outputMessage = proxy.getMessage(".NET WCF");
                MessageBox.Show(outputMessage);
            } catch (Exception ex) {
                MessageBox.Show("サービス呼び出し失敗:" + ex.Message);
            }
        }
    }
}

動作確認

ソリューションをマルチスタートアップに設定します。

設定方法はこちらのエントリーを参考にしてください。
Visual Studioソリューションのマルチスタートアップが便利 - プログラマーな日々
Visual Studioでは、実行時に複数のプロジェクトを起動することができます。

F5キーを押します。


WCFサービスとクライアントが起動するので、[button1]をクリックします。



クライアントがWCFサービスのメソッドを呼び出すことができました。