Существуют случаи, когда необходимо принять решение на основе нескольких опций, и полиморфизм является излишеством (YAGNI). В этом случае переключатель прекрасен. Переключатель является просто инструментом и может использоваться или неправильно использоваться так же легко как любой другой инструмент.
Это зависит от того, что Вы пытаетесь сделать. Точка, однако, что необходимо думать дважды при использовании переключателя, как это может быть признаком плохого дизайна.
Вы имеете в виду безопасные отдельные типы запросов или всю службу? Если весь сервис, то вы можете использовать стандартные методы защиты IIS, такие как Windows Authentication. В контролируемой среде Windows, где веб-служба использует службы, вы можете настроить один идентификатор домена в качестве авторизованного пользователя между полями. Разумеется, используйте SSL для обеспечения безопасности шифрования данных.
@tbreffni публикует хорошую запись в блоге. В дополнение к этому в вашей службе данных ado.net вы устанавливаете правила доступа к сущностям, чтобы контролировать, как предоставляется доступ для различных сущностей в базовой модели данных сущностей.
Предполагая, что у вас есть следующий код:
public class Northwind : DataService<NorthwindEntities>
{
public static void InitializeService(IDataServiceConfiguration
config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
}
}
метод SetEntitySetAccessRule позволяет ссылаться либо на всю модель сущностей, либо только на конкретный набор сущностей, а затем определять разрешения на основе перечисления EntitySetRights. В перечислении присутствуют следующие значения:
None Запрещает все права на доступ к данным.
ReadSingle Авторизация на чтение отдельных элементов данных.
ReadMultiple Авторизация на чтение наборов данных.
WriteAppend Авторизация для создания новых элементов данных в наборах данных.
WriteReplace Авторизация для замены данных. Перечисление EntitySetRights задокументировано здесь .