Навигация по сайту в ASP.NET 2.0 - Модель провайдеров
ОГЛАВЛЕНИЕ
Модель провайдеров
Возможности навигации по сайту реализованы при помощи модели провайдеров (provider model), которая предоставляет стандартный интерфейс программ (API - класс SiteMap), но позволяет разработчикам добавить свою реализацию интерфейса во время выполнения. ASP.NET 2.0 предоставляется с единственной реализацией - XmlSiteMapProvider, с помощью которой разработчик может создать карту сайта используя XML-файл (Web.sitemap). Тем не менее, структура нашего сайта может быть сформирована информацией о существующей базе данных, либо каталогами и файлами, из которых составлен наш веб-сайт. Вместо того чтобы дублировать базу данных либо файловую систему в файле Web.sitemap, мы можем создать специализированный провайдер (custom provider), который использует базу данных или информацию о файловой системе в качестве карты сайта.
Благодаря провайдеру мы можем предоставить собственную реализацию под-системы навигации сайта, но при этом доступ к ней может быть осуществлен посредством класса SiteMap. В сущности, имея в наличии специализированный провайдер (custom provider), класс SiteMap и элементы управления навигацией будут работать точно также, как и в случае с XmlSiteMapProvider. Единственным отличием будет только то, что информация карты сайта будет заимствована от нашей созданной логической структуры, будь это база данных, веб-сервис, файловая система либо какой-нибудь другой источник данных, который требуется нашему приложению. В данной статье мы рассмотрим способ создания специализированной модели навигации по сайту и построим с нуля файловый провайдер карты сайта (File System-Based Site Map Provider). Читайте далее, чтобы узнать больше об этом!
Назначение файлового провайдера карты сайта (File System-Based Site Map Provider)
Назначением файлового провайдера карты сайта является возврат карты сайта по запросу, где карта сайта является набором иерархически взаимосвязанных узлов. В частности, каждый узел карты сайта реализован в .NET Framework в качестве экземпляра класса SiteMapNode. Специализированный файловый провайдер карты сайта в данном случае будет выполнять следующее:
- Получать информацию карты навигации (она может быть базой данных, основанной на системе файлов и т.д.)
- Проходить по информации карты навигации, создавая узлы SiteMapNode для каждого логического раздела
- Добавлять узлы к карте сайта, тем самым формировать иерархию узлов, но при этом помнить о том, что может быть только один корневой узел.