WinRT中的应用程序间通信

时间:2012-06-22 13:18:44

标签: c# windows-8 windows-runtime

在Windows 8上有两个WinRT应用程序(C#/ Xaml,如果重要)。第一个应用程序应该接收并向第二个应用程序发送一些数据。最好的方法是什么?可以使用WCF吗?

编辑:第一个应用程序知道第二个应用程序。实际上,第二个应用程序是一个身份验证服务器,它只提供一种获取令牌的方法。

4 个答案:

答案 0 :(得分:2)

不可能,这需要环回支持。你只能打开测试的东西,你不能在用户的机器上依赖它。可以使用CheckNetIsolation.exe实用程序启用它,MSDN文章is here

强调仅用于测试,您无法发送此类应用。您的身份验证服务器需要在其他计算机上运行考虑到它在同一台机器上运行时会受到损害的可能性,这非常重要。

答案 1 :(得分:1)

如果没有完整的图片,那么在以UI为中心的应用程序模型(如WinRT)中运行身份验证服务器似乎是一个相当奇怪的设计决策。它不能被认为是基于“云”的服务吗?无论如何,我更愿意,不必在那里的每台设备上分发该服务器的代码。

话虽如此,看看custom share contracts solution。 您基本上应该能够将身份验证请求作为DataRequest发送,并让“服务器”以DataResponse进行响应。

code.msdn.com上有两个示例应用程序:

答案 2 :(得分:0)

我偶然发现的一件事是:Windows.Networking.BackgroundTransfer

基本上来自这篇文章:Transferring data in the background (Windows Store apps using C#/VB/C++ and XAML)

但我实际上并没有通过这篇文章&背景任务的概念。 也许有人可以对此发表评论?

答案 3 :(得分:0)

我不确定它是否已被回答,但我发现可以使用LaunchFileAsync执行此操作。 一个例子如下: //启动应用                 var launchFileName =“june.kit”;

            var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
            var option = Windows.Storage.CreationCollisionOption.ReplaceExisting;

            // create file 
            var launchFile = await folder.CreateFileAsync(launchFileName, option);

            // write content
            await Windows.Storage.FileIO.WriteTextAsync(launchFile, tempChk);

            // launch file
            bool success = await Launcher.LaunchFileAsync(launchFile);

其中launchFileName可以包含任何扩展名,并且此扩展名应在packager.manifest文件中的调用应用程序的FileTypeAssociation中提及。