2012-06-22 5 views
2

В Windows 8 есть два приложения WinRT (C#/Xaml, если это имеет значение). Первое приложение должно получить и отправить некоторые данные во второй. Какой лучший способ сделать это? Можно ли использовать WCF?Связь между приложениями в WinRT

EDIT: первое приложение знает о втором. На самом деле второе приложение является сервером аутентификации, он предоставляет только один метод для получения токена.

+0

Можете ли вы рассказать нам больше о данных, количестве, частоте, типе? Можете ли вы рассказать нам больше о двух приложениях, знают ли они об афоризме или нет? –

+0

Thx, Erno. Я обновил вопрос. –

+0

Пожалуйста, прочтите этот вопрос: http://stackoverflow.com/questions/7465517/how-can-a-metro-app-in-windows-8-communicate-with-a-backend-desktop-app-on-the- s (особенно второй ответ: http://stackoverflow.com/a/7466021/563088), он дает некоторые предпосылки и почему вы можете захотеть изменить свою архитектуру. –

ответ

2

Не возможно, это требует поддержки обратной петли. Что-то, что вы можете включить только для теста , вы не можете полагаться на него на машине своего пользователя. Утилита CheckNetIsolation.exe доступна, чтобы включить ее, статью MSDN is here.

Акцент на только для тестирования, вы не можете отправить такое приложение. Ваш сервер аутентификации должен работать на другом компьютере. Очень важно, в любом случае, учитывая вероятность того, что он будет скомпрометирован, когда он будет работать на одной машине.

1

Не имея полной картины, кажется довольно странным дизайнерским решением иметь сервер аутентификации, работающий в ориентированной на пользователя модели приложений, такой как WinRT. Не может ли это быть «облачным» сервисом? Я бы предпочел, чтобы в любом случае не было необходимости распространять код для этого сервера на каждом устройстве.

Сказав это, взгляните на custom share contracts solution. По сути, вы должны отправить запрос на аутентификацию как DataRequest и дать ответ «серверу» с ответом DataResponse.

Есть два примера приложения на code.msdn.com:

0

Одна вещи, которую я наткнулся на это: Windows.Networking.BackgroundTransfer

В основном приходит из этой статьи: Transferring data in the background (Windows Store apps using C#/VB/C++ and XAML)

Но я на самом деле не через отверстие статьи & концепции фоновых задач. Может кто-нибудь может прокомментировать это?

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 можно иметь любое имя с любым расширением, и это расширение следует упомянуть в FileTypeAssociation вызывающего приложения в packager.manifest файла.

Смежные вопросы