WCF

開発

開発手順は、先にサービス提供側を開発してから、クライアント側を開発するながれだと思う。
先にサービス側開発しないと、クライアントの開発ほぼ不可能の状態となる。
もしかしたら、サービス側で提供する機能のメソッドを宣言して置いて(実際の機能を実装しない)、一回発行してクライアント側の実装は、宣言したものによって、開発しやすくなると思う。

サービス提供側

IISによって、サービスの提供

IISによって、サービスの提供は Visual Studio の 「Web」-「WCF サービス アプリケーション」テンプレートのプロジェクトを作成して、
これはサービス提供側のWEB端末となります。
作成したWEB端末にWCFサービスライブラリを追加するのは、Visual Studio の WCF から「WCFサービスライブラリ」テンプレートを利用して、
プロジェクトを作成する。

作成したWCFサービスライブラリプロジェクト、ディフォルトでは、IService1.cs と Service1.cs 二つファイルが追加されている。
これは、WCFサービス提供側のひなとなります。

他のアプリケーションによって、サービスの提供

何のプロジェクトでも構いません。Windows From 、Console、WPFなど

サービスを提供できるように、いくつやらないといけないことがあります。

  • サービス提供側のプロジェクトのApp.configファイルの中に、endpoint の記述が必要  App.configファイルの設定は「WCF Service Configuration Editor」によって、設定する。
     「Service type」は新規作成した「WCF サービスライブラリ」プロジェクトの ServiceContract のインターフェイスを実装したクラスを指定する  「Contrace」は新規作成した「WCF サービスライブラリ」プロジェクトの ServiceContract のインターフェイスを指定する
  • 実行部で、「Uri」クラスを利用して、もう一回endpointを指定する必要がある。

例:

internal static ServiceHost myServiceHost = null;

サービス開始

Uri baseAddress = new Uri("http://localhost:8080/MemberService");
myServiceHost = new ServiceHost(typeof(SampleService),baseAddress);
myServiceHost.Open();
serviceButton.Text = "Stop Service";

サービス停止

if (myServiceHost.State != CommunicationState.Closed)
{
     myServiceHost.Close();
     serviceButton.Text = "Start Service";
}

クライアントの開発

プロジェクトの種類

クライアントでは、何のプロジェクトでも構いません。Windows Form、Console、WPFなど

サービス参照の追加

前提条件:サービス提供側を構築した状態。

  • 方法1 下記のコマンドによって、app.config と generatiedProxy.cs ファイルを生成し、利用する
    svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://192.168.11.2:8080/Service.svc
    まだ svcutil コマンドの使い方として、下記のような方法があります。
    dllからメタファイルを作成する
    svcutil WCFSample.LongTimeService.dll
    メタファイルからプロキシを作成する
    svcutil /namespace:*,WCFSample.Client handcraft.wcfsample.org.2008.05.17.wsdl *.xsd /out:Proxy.cs
  • 方法2: Visual Studio 2005 なら、「Visual Studio 2005 Extensions for WCF」ツールによって、サービスを追加 (試したことがありません。)
  • 方法3: Visual Studio 2008 なら、プロジェクトの上に右クリックして、「サービス参照の追加」によって追加できる。プロジェクトの中に普通の Web 参照みたいの参照フォルダが作成され、実際に見ると、プロジェクトの app.config ファイルも修正されたし、追加された参照フォルダの中身の隠しているファイルをみて、「Reference.svcmap」-「Reference.cs」ファイルは、「方法1」で生成した generatedProxy.cs ファイルの中身と同じです。
    ※クライアント側は複数のプロジェクトを含まれている場合が、生成されたapp.configファイルをEntryプロジェクトへ移動すること。

クライアント側の構造

「サービス参照の追加」によって、ソリューションに追加されたものからみて、判断した。 「IXXXService」
サービス側提供しているメソッドのインターフェイス。
インターフェイスの属性は[ServiceContract()]となります。

「XXXService」
「IXXXService」インターフェイスを実装したサービスクラス。
※具体的に、もっと活用的にこのクラスの中に何を実装すればいいかはっきり分からないが、一応インターフェイスの実装しなければならない。

「Member」クラス
これはデータのコンテナクラスとなります。
クラスの属性は[DataContract]となり、クラス中の各プロパティの属性は[DataMember]となります。



フレッツ光が月額556円~【GMOとくとくBB】

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結解除 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:44:14 (1628d)

e[NȂECir Yahoo yV LINEf[^[Ōz500~`I
z[y[W ̃NWbgJ[h COiq@COsیI COze