WCFのホスティングは、大別して 2種類 3種類あります。ひとつは IIS によるホスティング、もう一つはセルフ ホスティングです。→ さらにWAS ( Windows Process Activation Service ) によるホスティングがありました。
IIS によるホスティングなら Web サイトとして、セルフ ホスティングならコンソールアプリケーションや Windows サービスのプロジェクトとして構築することになるかと思います。
HTTP ( またはHTTPS ) プロトコル以外を使用する場合は クライアントのプロキシ クラスを動的に生成する場合は、WCF サービスを定義したアセンブリを、ホストアプリケーションとクライアントアプリケーションの両方で参照する必要があるので、WCF サービスの定義はクラスライブラリにて行います。 ( まぁ、ホストアプリケーションに直接定義して、クライアントアプリケーションはホストアプリケーション自体を参照設定することもできますけど・・・。 )
ホスティング方法に関わらず、WCF サービスはホストアプリケーションとは切り離して、クラスライブラリにした方がいいかと思います。なぜなら、ホスティング方法が変更になっても、変更作業が容易にできるからです。
セルフ ホスティングの場合、クラスライブラリに切り離した所で何も特別な作業は必要ありません。普通にプログラミングすればいいです。
では IIS によるホスティングの場合はどうかというと、これも特別な作業は必要ありません。
強いて言うなれば、IIS によるホスティングの場合は、 svc ファイルを用意してその中で ServiceHost ディレクティブを記述する必要があるのですが、この時コードビハインドの設定ができます。しかし、 WCF サービスをクラスライブラリとした場合、当然コードビハインドは利用できません。
[ ServiceHost ディレクティブの例 ]
IIS によるホスティングで、クラスライブラリに定義した "YokoKen.WCFServices.TestService" という WCF サービスを使用する場合の、 svc ファイルの記述例を以下に示します。
<% @ServiceHost Service="YokoKen.WCFServices.TestService" %>
見ての通り、特別な記述は何もありません。コードビハインドを利用しないため、Language 属性や CodeBehind 属性は不要です。
[ 参考 ]
Directive Syntax
@ServiceHost
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/113-2f33d054