Получение изображений через .resx по сравнению со статическими изображениями в веб-приложении asp.net

Наш текущий сценарий, кажется, адаптирован для файлов .resx, но мое понимание немного туманно, и я ищу некоторую известковость.

У нашего веб-приложения разные оболочки для разных клиентов, но разница не одинакова для всех клиентов. Под этим я подразумеваю, что один клиент может захотеть изменить только логотип, в то время как другой клиент может захотеть изменить логотип, некоторые кнопки и, возможно, цвет фона.

Чтобы удовлетворить это требование, я создал файл default.resx, в котором находится наш скин по умолчанию, все изображения элементов, строки и цветовые коды. А также client.resx, который содержит только те элементы, которые уникальны для клиента (другой логотип и кнопки) или что-то еще.

Затем я создал диспетчер ресурсов, который будет проверять client.resx на наличие ресурса и возвращать его на страницу, если ресурс отсутствует, он будет извлекать изображение из default.resx.

Один из других разработчиков говорит, что это неэффективно, и вместо того, чтобы использовать файл .resx, нам нужно иметь дерево папок с изображениями и переоснастить диспетчер ресурсов, чтобы использовать местоположения путей к изображениям вместо ресурсов .resx.

Я недостаточно знаю о том, как изображения передаются через файл .resx и как они передаются через дерево папок, и не могу опровергнуть его требование. Я думаю, что время, необходимое для обработки изображения через .resx по сравнению с изображениями в папке, в лучшем случае незначительно, но у меня возникают проблемы с поиском какой-либо конкретной информации по этому поводу. Не потребуется много времени, чтобы изменить дизайн менеджера ресурсов, чтобы он делал это так, как он предпочитает, но я хочу убедиться, что его претензия правомерна, прежде чем вкладывать время в этот процесс.

В качестве примечания мы говорим о более чем 100 изображениях, которые могут очень сильно отличаться.


person Siegeon    schedule 14.08.2012    source источник


Ответы (1)


Я хотел бы порекомендовать вам предоставить вашим клиентам возможность изменять файл CSS, а не файл resx для изменения фона / цветов / изображений и т. Д. Таким образом, у вас будет какой-то файл CSS по умолчанию, который клиенты могут переопределить (у них будет возможность загрузить свои файлы css или просто заменить его на сервере). В вашем CSS по умолчанию у вас должны быть классы CSS со ссылками на ваши изображения в качестве фона (логотип и т. Д.). Поэтому, если клиенты хотят изменить логотипы / изображения / цвета - они могут просто поместить несколько изображений на сервер - заменить файл CSS и проверить, все ли будет выглядеть нормально. А для строк просто продолжайте использовать файлы resx.

И ответьте на ваши вопросы: если у вас будет 100+ изображений - я думаю, будет лучше иметь файлы в какой-то папке вместо файла resx (вы хотите поместить в файл resx все изображения как необработанные данные, верно? Или у вас будет просто ссылки на нужные изображения). Файл может быть огромным, если он будет содержать все изображения в виде необработанных данных, поэтому для его анализа вам понадобится много оперативной памяти. И также я не думаю, что они вам понадобятся все в одном месте, может быть, некоторые изображения вы будете показывать всего пару раз в день, так что лучше не загружать его. Но если все свои изображения вы будете показывать на главной странице (или главной странице, где угодно) - если вы будете использовать кеширование, вы не увидите большой разницы в производительности.

person outcoldman    schedule 14.08.2012
comment
Спасибо за ответ. Я нацелился на файлы .resx через CSS, потому что у нас одинаковые требования в наших предложениях для Windows, и я хочу использовать одну и ту же общую библиотеку для этих двух предложений. Файлы ресурсов находятся в общей библиотеке. Я перетаскивал изображения из содержащей его папки в файл .resx, который находится в той же папке, но не удалял изображения из этой папки. С идеей, что это просто создание ссылки на изображение, так что все, что я делаю, это загружаю ссылки, а не весь кеш изображений. - person Siegeon; 14.08.2012