WCFを使ったサンプルの実装 1
では早速WCFを使った通信のサンプルを実装してみましょう。
サンプル概要
今回は先ほど上げた会員情報を扱うサービスのサンプルを実装します。
サービス提供側に2つのプロジェクト、クライアント側に1つのプロジェクトを作成します。
なお、サービス提供側とクライアント側は別ソリューションとして作成します。
プロジェクト | 概要 |
WCFMemberServiceLibrary | 会員情報サービスのコントラクト定義および実装 |
WCFMemberServiceGUI | 会員情報サービスをホスティングするWindowsアプリケーション。サービス提供のための「ABC」はこのプロジェクトのapp.configに定義する |
WCFSampleClient | 会員情報サービスを使用するクライアントアプリケーション。サービス利用のための「ABC」はこのプロジェクトのapp.configに定義する |
最初は通信方式としてWebサービスBasic-Profileを使用して実装し、その後TCPへと切り替えてみましょう。
- アプリケーションによるホスティング
- IISによるホスティング
WCFMemberServiceLibraryプロジェクトの実装
まず、会員情報サービスを実装する「WCFMemberServiceLibrary」プロジェクトから作成しましょう。
Visual Studio 2005を起動し、新しいプロジェクトを作成します。Visual Studio 2005 Extensions for WCFが正しくインストールされていれば、プロジェクトの種類として[.NET Framework 3.0]というカテゴリが追加されているはずです。今回は[WCF Service Library(WCF)]を選択し、「WCFMemberServiceLibrary」という名前でプロジェクトを作成します。
新しいプロジェクトを作成すると、自動的に「class1.cs」というファイルが作成され、WCFサービスのひな型が定義されます。このファイルのコメントには、WCFサービスを完成させるまでの手順が記されていますので、興味のある方は確認してみてください(ただし記述内容は英語です)。
今回はこのひな型を削除し、新たなコントラクト定義を追加しましょう。Visual Studio 2005メニューより[プロジェクト]-[新しい項目の追加]を実行し、[WCF Service]を選択して「SampleService.cs」を作成します。
このファイルにサービスを実装していきます。サービス・コントラクトは先ほどのISampleService
インターフェイスを実装します。同様にデータ・コントラクトはMember
クラスを使用します。実際の処理はISampleService
インターフェイスを実装したSampleService
クラスに記述します。
public class SampleService : ISampleService { static Dictionary<int, Member> members = new Dictionary<int, Member>(); public void addMember(Member member) { members[member.Id] = member; } public Member getMember(int memberId) { return members[memberId]; } }
ここでは会員情報サービスの簡易な実装としてDictionary
クラスを使い、addMember
メソッドとgetMember
メソッドを実装しています。会員IDをキーに会員情報の格納・取得を行っています。詳細はサンプルをダウンロードしてソースコード(WCFMemberServiceLibrary/SampleService.cs)をご覧ください。
これでサービス本体の実装は完成です。いったんビルドしておきましょう。