外部ソースから受信したデータのプロパゲーターとして機能する Windows サービスがあります。この Windows サービスは、WCFServiceHost
をホストしNetNamedPipeBinding()
ます。ServiceContract
も定義するCallbackContract
サーバーを消費し、解析されたデータをイベントとしてバブルアップするクライアント DLL コンポーネントもあります。サーバーからコールバックを受信すると、データがバブルされます。
コードはデスクトップ アプリで動作しますが、WinRT アプリでクライアント DLL を参照しようとすると、次のエラーが発生します。
The pipe name could not be obtained for the pipe URI: Access is denied. (5, 0x5)
これは、(私の知る限り) WinRT が名前付きパイプをサポートしていないためだと思います。
WinRT でそのようなサービスを利用するにはどうすればよいですか? WCF側を任意の要件に変更できますが、Windowsサービスとしてホストする必要があります(WinRTコンシューマーはありません)。通信は常に同じマシン内で行われます。ポーリングは最後の手段です。