私はそのインターフェイスを使用して複数のクラスを持ち、サーバでもにいくつかのパラメータに基づいて特定のインスタンスを作成するファクトリがあります。複数のクラスをWCFに切り替える
これらのクラスをWCFクライアントに公開する必要があります。私は、インターフェイスをOperationContract
とマークして通信を確立できると期待しましたが、サーバー上にあると思われます(私はWCF )クラスごとにサービスを作成する(または少なくともポートを開く)必要があり、インタフェース用にはできません。
これを行う唯一の方法ですか、何か不足していますか?
明示的に編集する:
私は1つのメソッドとのインターフェイスを持っているとします。Execute(EnumedParam action)
としましょう。 私は
InterfaceType.Execute(Action.One);
で、アクションに基づいてインスタンスを作成し、それを実行するサーバー上でクライアントからそれを呼び出すことができるようにしたいと思いExecute
方法です。
また、クラスのインスタンスが多数存在する可能性があります。クライアントは、クラスだけでなくインターフェイスについても何も知らないようにしたいと考えています。
どのようにWCFでこれを行うことができますか?
(注:私のクラスのモデルは完全に間違っている場合は、私はこれについての詳細を読むことができる本やブログをお勧めすることができます?)
私は別の編集
のコメント内のコードを貼り付けることはできませんWouter de Kortは私が何をしているかの素晴らしい例を示しました。しかし、エンドポイントをセットアップするにはどうしたらいいですか? はここhttp://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication与えられた例を見てみると - 著者はこのようなポートを開きます。私の問題がどこにある
using (ServiceHost host = new ServiceHost(
typeof(StringReverser),
new Uri[]{
new Uri("http://localhost:8000"),
new Uri("net.pipe://localhost")
}))
{
は今それです。最初のパラメーターはクラスです(インターフェースクラスまたは抽象クラスであってはなりません)。インターフェイスを拡張するすべてのクラスでそれを行う必要がありますか、何とか複数のクラスに同じホストを使用できますか?
答えをありがとう、私はあなたの答えとして私のポストを更新しました。 – user1164630
@ user1164630 WCFサービスのホストを設定することも別の問題です。あなたの例では、コンソールアプリケーションがWCFサービスをホストするために使用されています。IISを使用してweb.configファイルに設定することもできます –