4

私は、あるプロジェクト チームが問題点のいくつかを修正することで作業を合理化するのを支援しようとしています。

コードの問題点の 1 つは、サービス参照 (プロキシ) を介して WCF サービスを使用していることです [つまり、Visua Studio 2008 の「サービス参照の追加」]。プロキシなどの更新に関連する問題

これらおよびその他の関連する問題をサービス参照で処理するために、サービス参照に代わる優れた方法を探しています。私はすでにChannelFactoryを見たことがあり、それに最も傾いています。それは完全に良い解決策のようです。

ただし、問題は、これらのサービスをこのように消費するコードがたくさんあることです。

BatchClient client = new BatchClient(); //Batchclient is  a proxy
batchData = client.GetBatchData(batchNumber)

したがって、ChannelFactory パスに移動すると、プロジェクト全体で上記のようなすべてのコード部分を更新する必要があります。変更の量が多いため、チームはこのオプションにあまり満足していません。

私が持っている質問は、最小限のコード変更で使用できる「サービス参照の追加」に代わる他のより良い方法はありますか? または、既存のコードに影響を与えずに ChannelFactory を使用する方法はありますか?

4

2 に答える 2

1

BatchClientまず、チャネルをインスタンス化する独自のプロキシを作成することで、「多くのコードを置き換える必要がある」という問題を簡単に解決できると思います。現在使用されている生成コードと基本的に同じように機能します。

ただし、プロキシのない契約共有モデルに移行する前に、なぜ移行したいのかをよく考えてください。生成されたコード オプションはもう使用しません。主な理由は、WCF に慣れていれば必要ないからです。ただし、「サービス参照の追加...」パターンは WCF の初心者にとってより簡単であり、実際にはまったく費用がかからないと思います。

次の質問を自問してください (または、私に説明してください)。

  • 導入のオーバーヘッドはどのくらいですか? 何も見えません。生成したプロキシは、デプロイ後に機能します。構成ファイルでサービス アドレスと動作を変更します。
  • ソース管理に問題がありますか / 最新のものを入手しますか? これも問題にはなりません。最新のものを入手して、最新のものを使用してください。サービスが変更され、その変更を利用したい場合、共有コントラクト ファイルを使用して独自のチャネルをインスタンス化している場合は、サービス コントラクトの最新バージョンを取得する必要があります。
  • プロキシを更新していますか? プロキシがどのように機能するか、それが何であるか、何をするかについての知識の欠如がこれを引き起こす可能性がありますが、やはりプロキシなしでは簡単ではありません. 本当に、右クリックして「サービス参照の更新」を選択するだけですよね?

あなたが検討しているモデルはよりクリーンで、おそらくより柔軟に対応できますが、単純ではありません。あなたのチームが生成されたサービス プロキシの維持に問題を抱えている場合は、プロキシを削除して WCF の奥深くに投げ込むのではなく、それらの問題に対処します。

于 2011-04-26T08:45:13.717 に答える
0

クラス ClientBase を使用して同じ目的を達成することを提案する記事がいくつかあります。

a) https://aturcarablog.wordpress.com/2016/08/07/alternative-way-to-consume-wcf-service/を参照してください。

b) http://www.codeproject.com/Articles/412363/How-to-Use-a-WCF-Service-without-Adding-a-Service

したがって、コードは次のように書き直すことができます。

using (var batchClient = new ServiceWrapper<IYourWcfService>("YourEndpointConfigurationName"))
{
    batchData = batchClient.Proxy.GetBatchData(batchNumber);
}
于 2016-08-10T13:07:30.300 に答える