Chris Anderson氏、Chris Guzak氏、Jerry Dunietz氏、Kamen Moutafov氏、Martyn Lovell氏、Elliot H Omiya氏はWinRTのさまざまなコンポーネントの開発を指揮している。彼らはBUILD 2012のThe Windows Runtime Q&Aというパネルディスカッションに登壇してWinRTアプリケーションに関する開発者の質問に答えた。ここでは最も重要だと思われる質問に対する回答を概観する。
ディスクトップアプリケーションにもWindows StoreアプリケーションにもひとつのCLRと一組のDLLが搭載されているが、ディスクトップアプリケーションの呼び出しはWinRTへ行かない。
WinRTの非同期呼び出しで問題が発生する場合がある。例えば、大量のファイルの名前をチェックする場合だ。各呼び出しで例外が発生してしまうのでデバッグがしにくくなる。開発チームはこの問題を解決するつもりだ。
Microsoftは将来の.NETとWinRTの情報を開示していないが、将来のいつかの時点で開示するつもりだ。現時点で言えるのは“Windows 8にはWinRTが搭載されている”ということだ。
ディスクトップアプリが排他モードでファイルを開いているとき、Windows Storeアプリがそのファイルを開こうとすると失敗する。これを回避するためには、読み取り専用モードでファイルを開く。ファイルシステムはWinRTアプリもディスクトップアプリも同じだ。
非同期処理はWindowsが管理する専用のスレッドプールにある分離スレッドによって実行される。UIスレッドで大量の非同期処理を呼び出す場合は、呼び出しが戻ってきたときにアプリケーションに大きな影響を与えるので注意が必要だ。大量の非同期呼び出しを実行する場合は、システムに過負荷を与えないように実行をバッチ化するとよい。
WinRTには新しい文字列型がある。WinRTをターゲットにするさまざまな言語を共通の方法でサポートするためだ。C#、C++、 JavaScriptなどの言語で作成される文字列はWinRTに渡されるとき自動的に複製されない。性能を考慮して参照が渡されるだけだ。しかし、必要に応じて複製することもできる。
Windows Storeの認定プロセスではアプリケーションがWinRTデバイスと互換性があるかどうか確認するだけで、徹底的な検査は行わない。ターゲットとするデバイスでアプリケーションが正しく動作するかどうか幅広くテストする必要がある。
Microsoftはシステムのバッテリレベルのようなハードウエア情報に対してプログラムからアクセスできるようにしていない。これは開発者がこのような情報に基づいてアプリケーションの挙動を変えることができないようにするためだ。デバイスやシステムの状態に関わらすアプリケーションが一貫した動作をするようにするためだ。Windows 8 Dev Portalではアプリケーションが動作するデバイスやWindowsのバージョンについての情報を提供する。
WinRTではアプリケーションのシステム管理タイプを記述するのは困難または不可能だ。システムはある種のシステムリソースに対するアクセスを禁止したり制限したりしている。
アプリケーションが特定のプロトコルに従属するように強制することはプログラムからはできない。例えば、mp3ファイルを再生するアプリケーションをプログラムから指定することはできない。この指定はユーザが行うことだ。
ディスクトップアプリケーションとストアアプリケーションの通信については、あるパネリストは“できないようにした”と言った。ユーザが制御するプロトコルやファイルタイプ関連を使って通信するのが唯一の方法だ。
WinRTアプリケーションは分離スレッドで動作しているとき複数のビューを持つ。Windowsは2つのビューをひとつのアプリケーションと見なしているので、ユーザはシステムアプリの持つスイッチの仕組みを使ってビューを切り替えることはできないが、各アプリケーションで切り替えの仕組みを実装することはできる。
Windows Storeアプリケーションはポートを開き通信できるがウェブサーバのポートである80は開けない。