WCF を使用して、実行中の 2 つの Windows アプリケーション間で IPC をセットアップしようとしています。私は、このソリューションを実装する他の (より良い?) 方法があることを知っていると言って始めたいと思います。ただし、既存の設計上の考慮事項/制約がいくつかあるため、以下を使用する必要があります: - netTcpBinding - 双方向通信をサポートするための DuplexChannelFactory<>
MS Windows を実行する単一の専用ハードウェアにすべてをインストールするため、すべてのアプリケーション、サービスなどは同じマシンに存在します。
したがって、回路図は次のようになります WPFApp1 (ReportingFacilityInterface 定義を含む) 通知を WPFApp2 への個別のコールバックとして返します ^ | | | V ReportingFacilityInterfaceProxy ^ | | | V WPFApp2 (WPF1 ReportingFacilityInterface オブジェクトで公開されたメソッドを呼び出す必要があります)
WCF の「サービス」クラスとコントラクトを作成しました。通信を容易にするためにプロキシ dll を使用しています。
イベントのシーケンスは次のとおりです。
1) WPFApp1 が起動し、公開されたサービス クラスのインスタンスをインスタンス化します。
ReportingFacilityInterface = new ReportingFacility.ReportingFacilityInterface();
これで問題なく起動します。
2) WPFApp2 の起動とプロキシ オブジェクトのインスタンスの初期化
reportingFacilityProxy = new ReportingFacilityInterfaceProxy.ReportingFacilityProxy();
これにより、プロキシ オブジェクトがインスタンス化され、これが呼び出されます。
reportingFacilityInterface = DuplexChannelFactory<IReportingFacilityInterface>.CreateChannel(objContext, "RPIEndPointConfiguration");
これは実行され、正常に返されるようです。
3) WPFApp2 はオブジェクトに対して (プロキシ経由で) を呼び出します
reportingFacilityInterface.Initialize(configuration);
次の詳細で例外が発生します。
net.tcp://localhost:8732/ReportingFacility に接続できませんでした。接続の試行は、00:00:02.1931255 の期間継続しました。TCP エラー コード 10061: ターゲット マシンがアクティブに拒否したため、接続できませんでした 127.0.0.1:8732
CurrPorts アプリケーションを使用して現在のポートの使用状況を調べたところ、ポート #8732 が私のマシンで現在アクティブ/使用されているポートのリストにないことに気付きました。
私はかなりグリーン @ WCF の世界なので、ここで困惑しています。上で述べたように、これらはすべて Windows 7 ハードウェアの同じ (専用の) 部分で実行されているため、権限/役割は問題になりません。ここにかなり近づいていると思いますが、何かが足りないだけです。
ありがとう、ジョンB