|
DynamicResource и StaticResource
|
|||
---|---|---|---|
#18+
Вот сижу и не могу решить какое правильное решение выбрать. В чем суть, есть приложение и куча проектов с файлам ResourceDictionary, в файлах ресурсах проекта хранятся шаблоны и прочее ботва. Программа находит сборки, загружает их, после чего загружает ресурсы и добавляет их в визуальное дерево. Такие Freezable ресурсы как геометрии, кисти и прочие являются общими. То есть геометрии иконок используются в нескольких сборках одновременно. Возникает вопрос, как лучше разместить и организовать эти ресурсы . Вариант №1 Все общие ресурсы собрать в 1 сборке и разных ResourceDictionaty, а потом с помощью MergeDictionary объединить их на уровне приложения в App.xaml. Какие плюсы и минусы в этом я вижу: + ресурсы не дублируется в каждой сборке, а используется всеми из одного места + я могу быстро управлять этими ресурсами, так как всё в 1 месте, рассортировано по файлами в 1 проекте + когда ресурс запрашивается, ссылка на него кешируется, по этому если ресурс запрашивается дваждый то второй раз он искаться не будет (вообще об этом я только читал на MSDN, но подтверждения этого в коде StaticResources я как то не увидел) - все ресурсы будут находится на уровне приложения, а Static- и DynamicResources ищут ресурсы снизу вверх, и будут разрешены только после того, как пройдут по всему дереву. То есть на поиск нужного ресурса будет уходить много времени, так как само дерево очень и очень не маленькое. - если использовать StaticResources то дизайнер сообщает об отсутствии этого ресурса, так как он будет доступен только в RunTime'е, что не очень удобно. Я не пользуюсь дизайнером для отображения XAML кода, но предупреждение от этого ни куда не исчезает. Вариант №2. Все необходимые ресурсы для сборки размещать в этой же сборке и Merge'ыть их в нужные каталоги ресурсы. + Ресурс находится прямо там, где он запрашивается, следовательно на его поиск будет потрачено минимум времени + Я могу свободно использовать StaticResource и он разрешается прямо в дизайнере - Ресурсы размазаны по всем проектам, найти нужный становится довольно проблемным, спасается только F12 - Ресурсы дублируются, если 1 иконка встречается в 10 сборках, то получается, что мне нужно сохранить 10 одинаковых геометрий в 10 сборках Что собственно я хочу? а хочу я понять, какой способ организации ресурсов оптимален. Особенно критично для меня производительность, так как WPF не отличается высокой скоростью, хотелось бы свести подобные затраты с ресурсами к минимуму, при этом хочется, чтоб организация и управление ресурсами было как минимум удобно. Как вы организовывайте ресурсы в своих приложениях? P.S. прошу прощения за сумбур, температурю, голова вообще не варит ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2015, 19:59 |
|
|
start [/forum/topic.php?fid=21&fpage=14&tid=1440772]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 170ms |
0 / 0 |