2011-11-14 4 views
2

svcutil.exe(または 'サービス参照の追加')を使用するのがなぜ悪いのかを説明する資料はたくさんあります。テスト容易性やタイトな結合などはありません。単純なサービスのクライアントプロキシを手動で作成するのは簡単です。インターフェイスを作成し、チャンネルを作成してください:Silverlight PollingDuplexクライアント/プロキシを手動で作成するにはどうしたらいいですか?

IMessageServiceAsync service = new ChannelFactory<IMessageServiceAsync>("BasicHttpBinding_IMessageEndpoint").CreateChannel(); 

私はSilverlight PollingDuplexクライアントと同様のことをしたいと思います。

これは難しいと思われます。生成されたクライアントはSystem.ServiceModel.DuplexClientBaseから継承されています。手動で作成したクライアントにも同様の処理が必要です。または、この基本クラスを実装せずに、すべてのクライアント側のDuplexコールバック機能を接続する方法はありますか?

誰もこれを試しましたか?それも可能ですか?

答えて

2

ことが可能です - あなたはChannelFactory<T>と同様の方法でプロキシを作成するためにDuplexChannelFactory<T>クラスを使用することができ、あなたの例であったが、あなたは、実装が含まれます(InstanceContextを入力)追加のパラメータを渡す必要がありますサーバーからのメッセージの受信に使用されたコールバックインターフェイスの

+0

恐ろしい、感謝カルロス。私が気づいておくべき他の潜在的な落とし穴がありますか? – MalcomTucker

+0

'DuplexChannelFactory'自体に特有のものはありません。 Add Service Reference( 'DuplexChannelBase'のサブクラス)によって生成されたプロキシは' DuplexChannelFactory.CreateChannel() 'によって作成されたものと同等です。 – carlosfigueira

関連する問題