Как поделиться библиотеками и компонентами в стиле Windows 8 WinRT Metro между приложениями - PullRequest
2 голосов
/ 16 сентября 2011

В документации Metro говорится, что приложения самосогласованы (нет общих библиотек DLL и т. Д.), Поэтому мне просто интересно, как можно создать модульное BIG приложение Metro, создавая повторно используемые компоненты / библиотеки.

Учитывая случай для приложений HTML5 / JavaScript Metro, если многие из них должны содержать одинаковые CSS и JavaScript (с учетом jQuery, шаблоны) или сценарии WinJS, то это выглядит не очень хорошо… Я ожидал какой-то формы библиотек / использовать заново с самого начала.

В наши дни место на жестком диске определенно дешевое, но я думаю, что хранилище версионных библиотек должно быть на месте, а зависимости (компоненты / библиотеки WinRT, библиотеки JavaScript и т. Д.) Должны быть загружены по запросу (если они еще не доступны). Здесь не нужно «изобретать колесо», просто посмотрите, как это делают Maven и Ivy… иначе вы обнаружите, что наша любимая библиотека jQuery 1.6.4 развернута в десятках (если не в сотнях) приложений, и раздувание готово. ..

Ответы [ 4 ]

5 голосов
/ 17 сентября 2011

Как правило, каждое приложение в стиле WinRT / Metro может обращаться только к библиотекам, встроенным в Windows или поставляемым в своем пакете appx. Там нет возможности для доставки централизованно ссылающихся dll. Каждое приложение, которое хочет использовать DLL / библиотеку, будет нуждаться в копии, которая поставляется вместе с ней.

2 голосов
/ 16 сентября 2011

Вы можете делиться библиотеками, вы просто не будете делать это с помощью DLL. Вы можете легко создать библиотеку классов с общими утилитами и функциями, а затем ссылаться на нее в своем приложении. Вы также можете перейти на C ++ и создавать свои собственные общие функции через WinRT.

1 голос
/ 16 сентября 2011

Как вы указали, не существует какого-либо глобального кеша для сохранения отдельного экземпляра библиотеки / компонента и совместного использования его с любым приложением, которому это необходимо. Хотя GAC в .NET хорош, я не думаю, что очень многие разработчики используют это в своих интересах. Как много других приложений .NET делятся сборками компонентов, сохраненными в GAC? Я считаю, что процент не очень высок, следовательно, все эти сборки дублируются. Решение не тратить время на Metro GAC кажется мне оправданным.

Им нужно будет реализовать 3 глобальных кэша для Metro, если они его построят. Один для каждого .NET, C ++ и JavaScript. Кажется, имеет смысл. Это звучит как беспорядок. Кроме того, как кэш узнает, что никакие приложения на компьютере больше не используют определенную сборку и ее можно удалить? Грязный ...

Это довольно сложная тема, и на самом деле не существует решения с коротким ответом. Независимо от дебатов, они могут работать над решением этой проблемы и просто не выпустили его в Windows Developer Preview. Требуется больше времени, чтобы увидеть, как платформа развивается ближе к релизу.

0 голосов
/ 16 сентября 2011

WinRT позволяет приложению Metro «зависеть» от объекта Framework. Этот объект может содержать все общие библиотеки DLL и т. Д., Которые могут использовать несколько приложений.

...