以下のエントリーでは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サービスにアクセスします。 ...