Windows 8には2つのWinRTアプリケーション(重要な場合はC#/ Xaml)があります。最初のアプリはデータを送受信して2番目のアプリに送信する必要があります。それを行うための最良の方法は何ですか?WCFは使用できますか?
編集:最初のアプリは2番目のアプリについて知っています。実際、2番目のアプリは認証サーバーであり、トークンを取得するためのメソッドを1つだけ提供します。
Windows 8には2つのWinRTアプリケーション(重要な場合はC#/ Xaml)があります。最初のアプリはデータを送受信して2番目のアプリに送信する必要があります。それを行うための最良の方法は何ですか?WCFは使用できますか?
編集:最初のアプリは2番目のアプリについて知っています。実際、2番目のアプリは認証サーバーであり、トークンを取得するためのメソッドを1つだけ提供します。
不可能です。これにはループバックのサポートが必要です。テストのためにのみオンにできるものは、ユーザーのマシンに依存することはできません。CheckNetIsolation.exeユーティリティを使用して有効にすることができます。MSDNの記事はこちらです。
テストのみに重点を置いており、このようなアプリを出荷することはできません。認証サーバーは別のマシンで実行する必要があります。とにかく、同じマシンで実行すると危険にさらされる可能性を考えると、かなり重要です。
全体像がわからないため、WinRTなどのUI中心のアプリケーションモデルで認証サーバーを実行することは、かなり奇妙な設計上の決定のように思われます。「クラウド」ベースのサービスとは言えませんか?とにかく、そこにあるすべてのデバイスにそのサーバーのコードを配布する必要がないことを望んでいます。
そうは言っても、カスタム共有契約ソリューションを見てみましょう。基本的に、認証要求をDataRequestとして送信し、「サーバー」にDataResponseで応答させることができるはずです。
code.msdn.comには2つのサンプルアプリがあります。
私が偶然見つけたものの1つは、Windows.Networking.BackgroundTransferです。
基本的にこの記事からの引用:バックグラウンドでのデータの転送(C#/ VB / C ++およびXAMLを使用するWindowsストアアプリ)
しかし、私は実際には、穴の記事とバックグラウンドタスクの概念を理解していません。多分誰かがこれについてコメントすることができますか?
回答されているかどうかはわかりませんが、LaunchFileAsyncを使用してこれを行うことが可能であることがわかりました。例は次のとおりです。//アプリを起動するにはvarlaunchFileName= "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に記載されている必要があります。