Существует много классов, имеющих это provider
суффикс. (Данные, членство, modelmetadata...).
Когда должен быть класс назван как класс поставщика?
Провайдеры в основном находятся между вашей логикой и хранилищами данных любого типа (база данных, xml и т.д.). MSDN упоминает:
Провайдеры абстрагируют носители данных примерно так же, как драйверы устройств абстрагируют аппаратные устройства.
Дополнительная информация: Microsoft ASP.NET 2.0 Providers: Introduction
For example: Вместо того чтобы работать с базой данных или XML, вы хотите работать с плоским файловым хранилищем на диске где-то в сети. Для этого вы создаете пользовательский провайдер и используете его в своей логике для сохранения данных.
Вот описание шаблона провайдера от MS (http: // msdn. microsoft.com/en-us/library/ms972319.aspx):
Сам по себе шаблон чрезвычайно прост и получил название "поставщик", поскольку он предоставляет {{1} } функциональность для API. По определению, поставщик - это просто контракт между API и уровнем абстракции бизнес-логики / данных . Поставщик - это реализация API, отдельная от самого API. Например, новая функция членства в Whidbey имеет статический метод , называемый Membership.ValidateUser (). Сам класс членства не содержит бизнес-логики ; вместо этого он просто перенаправляет этот вызов настроенному провайдеру . класс поставщика несет ответственность за содержание реализации для этого метода, вызывая любой уровень бизнес-логики (BLL) или уровень доступа к данным (DAL ) необходимо.
Есть некоторые правила поведения провайдера . Реализация поставщика должна быть производным от абстрактного базового класса , который используется для определения контракта для конкретной функции . Например, чтобы создать поставщика членства для Oracle, вы создаете новый класс OracleMembershipProvider, который является производным от MembershipProviderBase. базовый класс, например MembershipProviderBase, в свою очередь, является производным от общего базового класса ProviderBase . Класс ProviderBase используется для обозначения исполнителей как провайдера и принудительно реализует требуемый метод и свойство , общие для всех провайдеров. На рисунке 4 показан пример цепочки наследования .