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 很好,但我认为没有多少开发人员利用它。许多一次性 .NET 应用程序共享保存在 GAC 中的组件程序集?我相信这个百分比不是很高,因此所有这些程序集都是重复的。不花时间在 Metro GAC 上的决定对我来说似乎是有道理的。

如果他们确实构建了 Metro,他们将需要为 Metro 实现 3 个全局缓存。.NET、C++ 和 JavaScript 各一个。这似乎是有道理的。这听起来像一团糟。另外,缓存如何知道机器上没有应用程序不再使用某个程序集并且可以将其删除?乱...

这是一个相当复杂的话题,并没有真正的简短答案解决方案。不管争论如何,他们可能正在研究解决方案,只是还没有在 Windows 开发者预览版中发布。需要更多时间来了解该平台如何发展到更接近发布。

于 2011-09-16T14:01:14.327 回答
0

WinRT 允许 Metro 应用程序对框架对象采取“依赖关系”。该对象可以包含多个应用程序可能使用的所有共享 DLL 等。

于 2011-09-16T18:04:33.223 回答