[解決済み] WCF ChannelFactoryとプロキシ生成の比較
質問
ChannelFactoryを使用して呼び出すことができるとき、どのような状況でWCFサービスからプロキシを生成することを好むのでしょうか?
この方法では、プロキシを生成する必要がなく、サーバが更新されたときにプロキシを再生成することを心配する必要はないでしょうか?
ありがとうございます。
どのように解決するのですか?
WCFクライアントを作成するには、3つの基本的な方法があります。
-
Visual Studioにプロキシを生成させる。これは、WSDLを読み込んでサービスに接続するコードを自動生成します。何らかの理由でサービスが変更された場合は、それを再生成する必要があります。この大きな利点は、セットアップが簡単なことです。VSにはウィザードがあり、すべて自動で行われます。デメリットは、VSにすべてのハードワークを任せることになるため、コントロールが効かなくなることです。
-
使用方法
ChannelFactory
を既知のインターフェイスで使用します。これは、サービス(サービスコントラクト)を記述するローカルなインターフェイスを持っていることに依存しています。大きな利点は、変更をより簡単に管理できることです。変更を再コンパイルして修正する必要はありますが、コードを再生成するのではなく、新しいインターフェイスを参照することになります。一般に、この方法はサーバーとクライアントの両方を制御する場合に使われます。しかし、インターフェースはどんなサービスにも書くことができ、RESTのものでさえも書くことができます。 このTwitter API . -
独自のプロキシを書く - これはかなり簡単で、特に REST サービスでは
HttpClient
またはWebClient
. これは最も細かい制御を可能にしますが、その代償として多くのサービスAPIが文字列で提供されることになります。例えばvar content = new HttpClient().Get("http://yoursite.com/resource/id").Content;
- のように、APIの詳細が変更されても、実行時までエラーになることはないでしょう。
個人的に、私はオプション 1 が好きではありません。自動生成されたコードに依存するのは面倒で、あまりにも多くの制御を失います。さらに、それはしばしばシリアライゼーションの問題を引き起こします。私は 2 つの同じクラス (サーバー コードと自動生成されたクラス) を持つことになりますが、これは整理することは可能ですが、苦痛です。
オプション 2 は完璧ですが、チャンネルは少し制限されすぎています。 HTTP エラーのコンテンツを完全に失い . とはいえ、サービスを記述するインターフェースを持つことは、コーディングやメンテナンスがずっと簡単になります。
関連
-
[解決済み】コレクションが変更され、列挙操作が実行されないことがある。
-
[解決済み] Windows 7のsvcutil.exeはどこにあるのですか?
-
[解決済み] 受信メッセージの最大メッセージサイズ枠(65536)...枠を増やすには、MaxReceivedMessageSizeプロパティを使用します。
-
[解決済み] プロキシサーバーで Git を動かす - "Request timed out" で失敗する
-
[解決済み] すべてのWCF呼び出しにカスタムHTTPヘッダを追加するには?
-
[解決済み] wcf サービスのコンストラクタに値を渡すにはどうすればよいですか?
-
[解決済み] WCFサービス、タイムアウトを増加させる方法は?
-
[解決済み] Windows Server 2008(64bit)でwcfサービスを閲覧中に「HTTPエラー 404.3 - Not Found」と表示される。
-
[解決済み] WCFタイムアウト例外の詳細調査
-
[解決済み] WCFデータサービス(OData)とASP.NET Web APIの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] w3wp.exeとは何ですか?
-
[解決済み] WCFサービスのREST / SOAPエンドポイント
-
[解決済み】WCFとASMXのWebサービスの違いは何ですか?
-
[解決済み】Windows 8のIISでWCFサービスを提供できない。
-
[解決済み] WcfTestClient.exe (Visual Studioの一部)はどこにありますか?
-
[解決済み] すべてのWCF呼び出しにカスタムHTTPヘッダを追加するには?
-
[解決済み] WCFサービス、タイムアウトを増加させる方法は?
-
[解決済み] WCFタイムアウト例外の詳細調査
-
[解決済み] WCF Service Referenceの.datasourceファイルとは何ですか?
-
[解決済み] WCFとASP .Net Web APIの比較