Провайдер - это просто другое название для паттерна стратегии
Обычно, когда кто-то упоминает об использовании провайдера, он говорит о каком-то абстрактном контракте, для которого может существовать много реализаций.
//As an abstract base class
public void SetupRoles(RoleProvider provider){}
//As an interface
public void SetupRoles(IRoleProvider provider){}
//As a delegate
public void SetupRoles(Action<String> addRole){}
Служба обычно предназначена для указания объекта без состояния, в котором есть только методы.Служба может быть использована в качестве Стратегии, но не обязательно должна быть.
//Plain old service... doesn't even need the web
// CRAZY TALK MAN!!!
public static class RoleService
{
public static void SetupRoles(){};
public static String[] GetRoles(){};
}
A Брокер действительно просто отвечает за хорошо ... посредничество.Он предназначен для перемещения сообщений между службами и объектами, организации взаимодействия между службами для обеспечения их изоляции.
public class Broker
{
public void SendImportantMessage(Message msg)
{
//Do some important processing here
// Maybe some validation
NotifySomeOtherServiceOrClassOrMaybeBobFromAccounting(msg);
}
}