2

Metro のドキュメントには、アプリケーションが自己一貫性がある (共有 DLL がないなど) と記載されているため、再利用可能なコンポーネント/ライブラリを作成することで、モジュール式の BIG Metro アプリケーションを作成する方法を知りたいと思っています。

HTML5/JavaScript Metro アプリの場合を考えると、それらの多くに同じ CSS と JavaScript (jQuery、テンプレートを考えてください) または WinJS スクリプトを含める必要がある場合、見栄えがよくありません…何らかの形式のライブラリ/再利用が存在することを期待していました。はじめから。

現在、HDD スペースは間違いなく安価ですが、バージョン管理されたライブラリ リポジトリを配置し、依存関係 (WinRT コンポーネント/ライブラリ、JavaScript ライブラリなど) をオンデマンドで読み込む必要があると思います (まだ利用できない場合)。ここでは「車輪の発明」は必要ありません。Maven と Ivy がどのようにそれを行っているかを見てください.... そうしないと、私たちの最愛の jQuery 1.6.4 ライブラリが数十 (数百ではないにしても) のアプリケーションにデプロイされ、肥大化の準備ができていることがわかります。 ..

4

4 に答える 4

5

原則として、各WinRT / Metroスタイルのアプリケーションは、Windowsに組み込まれている、またはappxパッケージで出荷されているdllにのみアクセスできます。一元的に参照されるdllを出荷する機能はありません。dll /ライブラリを使用する各アプリケーションには、それに付属するコピーが必要です。

于 2011-09-16T21:47:40.947 に答える
2

ライブラリを共有することはできますが、DLLを使用して共有することはありません。共通のユーティリティと関数を使用してクラスライブラリを簡単に作成し、アプリケーションで参照/共有できます。また、C ++にドロップして、WinRTを介して独自の共有関数を作成することもできます。

于 2011-09-16T16:33:43.423 に答える
1

ご指摘のとおり、ライブラリ/コンポーネントの単一のインスタンスを保存し、それを必要とするアプリと共有するためのグローバル アセンブリ キャッシュはありません。.NET の GAC は優れていますが、それを利用する開発者はあまり多くないと思います。GAC に保存されているコンポーネント アセンブリを共有する .NET アプリはいくつあるでしょうか。割合はそれほど高くないと思います。結果として、これらのアセンブリはすべて複製されています。Metro GAC に時間を費やさないという決定は、私には当然のことのように思えます。

Metro を構築した場合、Metro 用に 3 つのグローバル キャッシュを実装する必要があります。.NET、C++、および JavaScript ごとに 1 つ。理にかなっているようです。これは混乱のように聞こえます。さらに、マシン上の特定のアセンブリを使用しているアプリがなくなったこと、および削除できることをキャッシュはどのように認識しますか? 混雑...

これはかなり複雑なトピックであり、短い答えの解決策は実際にはありません。議論に関係なく、彼らはこれに対する解決策に取り組んでいる可能性があり、Windows Developer Preview でそれをリリースしていません。リリースに向けてプラットフォームがどのように進化するかを確認するには、さらに時間が必要です。

于 2011-09-16T14:01:14.327 に答える
0

WinRT を使用すると、Metro アプリケーションは Framework オブジェクトに「依存関係」を持つことができます。そのオブジェクトには、複数のアプリケーションが使用するすべての共有 DLL などを含めることができます。

于 2011-09-16T18:04:33.223 に答える