プログラマーな日々

プログラマーをやっています。好きなものは、C#, TaskChute Cloud, WorkFlowy, Backlog, AWSです。

IISでWCFサービスをホストする(サービスDLL編)

以下のエントリーではSVCファイルにサービスの実装を含めていますが、この手法には以下の特徴があります。
IISでWCFサービスをホストする(サービス編) - プログラマーな日々
IISでWCFサービスをホストします。 ...

エッセンシャルWCF P.23より引用

この手法には明らかなリスクとメリットがあります。どのWebサーバでもコードを表示して変更できるため、知的財産や変更管理を制御できなくなるリスクがあります。パフォーマンスも低下します。ユーザーがコードの処理内容を正確に把握し、必要に応じて変更できるため、コードの透過性が高まり、問題発生から解決までの時間が短縮されるメリットがあります。

そこで今回は実装をDLLに移行します。

DLLで実装する

クラスライブラリとしてビルドします

以下のソースコードをクラスライブラリとしてビルドします。実装は上記のエントリーと同じですが、返却される金額を変えています。

using System.ServiceModel;

namespace HelloWorld {
    [ServiceContract]
    public interface IStockService {
        [OperationContract]
        double GetPrice(string ticker);
    }

    public class StockService : IStockService {
        public double GetPrice(string ticker) {
            return 12.34;
        }
    }
}
ビルドしたDLLを配置します。

仮想ディレクトリに「bin」フォルダを作成し、そこにDLLを格納します。

SVCファイルを変更します。
<% @ServiceHost Language=c# Service="HelloWorld.StockService" %>

アプリ実行


サービスから金額を取得できました。(クライアントは以下のエントリーで作成したものを流用しました)
IISでWCFサービスをホストする(クライアント編) - プログラマーな日々
前回(IISでWCFサービスをホストする(サービス編) - プログラマーな日々)の続きです。今回はクライアントを作成し、前回IISにホストしたWCFサービスにアクセスします。 ...