2

Silverlight アプリケーションへの WCF サービス参照を追加しました。web.config からのバインディングは次のようになります。

<bindings>
  <wsDualHttpBinding>
    <binding name="wsDualHttpBinding">
      <security mode="None" />
    </binding>
  </wsDualHttpBinding>
  <pollingDuplexHttpBinding>
    <binding name="multipleMessagesPerPollPollingDuplexHttpBinding"
      duplexMode="MultipleMessagesPerPoll" />
  </pollingDuplexHttpBinding>
</bindings>

そして、サービスクライアントインスタンスを作成するためのこのスニペットがあります

var serviceClient = new DuplexCallerIdServiceClient(
         new PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll),
      new EndpointAddress("http://localhost:51445/Service/MyService.svc"));

私の懸念は、なぜコードで絶対 URL を提供しなければならないのかということです。同じサービスを使用するwinformsアプリケーションがあり、new DuplexCallerIdServiceClient()理想的なサービスクライアントインスタンスを作成するだけです。私はそれを回避する方法はありますか?バインド設定を変更できません。

ありがとう

4

1 に答える 1

0

サービスURLをハードコーディングする必要はありません。引数として渡されるか、関数呼び出しを行う(またはオブジェクトのプロパティを取得する)ハードコードされた文字列を置き換えて、コンストラクターに有効なサービスURLを入力します。

これが多くの方法の1つです。

var serviceClient = new DuplexCallerIdServiceClient(
     new PollingDuplexHttpBinding(PollingDuplexMode.MultipleMessagesPerPoll),
  new EndpointAddress(Info.Instance.ServiceURL));

Infoがシングルトンオブジェクトである場合、Instanceはシングルトンのインスタンスを取得し、ServiceUrlは...から取得する文字列プロパティです。データベース、構成ファイル、起動するようにハードコードされているなど...

PSシングルトンパターンには注意が必要ですが、構成情報エンティティとして非常に便利です。

于 2011-10-21T18:20:13.583 に答える