| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > [70-316] Declarative and imperative security |
| Автор: marcusmae 30.9.2007, 21:20 | ||
| Всем привет. Вопрос из теста :
Вопрос полностью понятен. Но с моделями безопасности я знаком мало. Подозреваю, что Виста работает по каким-то таким концептам, когда в пользовательском режиме идут minimum permission requests to allow access to the file system, а чтобы получить доступ к разделам с повышенной защитой (%Program Files%, установка программ и тд), нужен как раз permission demand to allow access to the file system. В предложенном вопросе, вероятно, нужно делать именно permission request, ведь иначе на защищённый диск никакого доступа не дадут. Я правильно рассуждаю? И, вот declarative или imperative security? = Что это означает? |
| Автор: marcusmae 1.10.2007, 08:42 | ||
Атрибуты. Вот оно что. Понял.
Ну а всё-таки, какой вариант из первых двух лучше в данной ситуации и почему? |
| Автор: tol05 1.10.2007, 09:01 | ||
атрибут ограничен своей областью применения (см. AtributeUsage), например, для указанного атрибута объявление так выглядит
т.е. можно юзать для метода, но не для свойства. с другой стороны императивный способ позволяет работать даже с часью метода (от точки затребования полномочий до выхода из метода или до изменения требований в том же методе). Т.е. в любом фрагменте кода. При затребовании полномочий может возникнуть исключение. Для императивного способа ты должен сам обработать исключение - для декларативного - если возникнет исключение - труба дело. Вылетим из программы. Поэтому императивный способ имхо лучше. Единственное, когда применяется декларативный способ - проверки среда выполнения делает сама. Например, если для сборки указан атрибут - среда выполнения сама проверяет по всему коду нет ли недопустимых действий. Используется рефлексия и если метод А вызывает метод В, причем метод В требует полномочий, котрые метод А отвергает, то затребования полномочий не будет. |
| Автор: marcusmae 1.10.2007, 18:06 | ||
| Императивная стратегия даёт возможность самостоятельно заниматься контролем исключений. Понятно. Хорошо, а вот, допустим, использование атрибута
чем отличается от использования ключевого слова params? Описанные Вами правила поведения здесь действуют, т.е. является ли это примером декларативности/императивности? Что-то не очень понимаю, в чём бы это могло выразиться... |
| Автор: tol05 1.10.2007, 19:21 | ||
| тут даже не в секьюрити дело. Я смотрю. тема вырождается в объяснение правил использования атрибутов... и синтаксиса С#? Да, это декларативное программирование, но атрибут - это специфическая конструкция, предназначенная для использования рефлексией и описать ее можно тоже только через конструкции, понятные рефлексии, т.е. декларативно. Секъюрити здесь ни при чем. Декларативное программирования секъюрити возможно лишь потому, что среда выполнения, при работе с кодом любит и умеет работать с рефлексией. Но не нужно путать причину со следствием. Секъюрити просто использует (как дополнительную, или альтернативную, возможность своей настройки) сушествующую технологию рефлексии (атрибутов), вот и все. различия между params keyword и ParamArrayAttribute описаны http://msdn2.microsoft.com/en-us/library/system.paramarrayattribute.aspx
|
| Автор: marcusmae 1.10.2007, 19:40 | ||
Действительно недостаточно хорошо понимаю атрибуты. Теперь вроде по-лучше. Именно потому и спросил, что фраза является весьма мягким пожеланием, и причин/каких-либо различий не объясняется. tol05, большое спасибо за Ваши ответы. Я узнал много нового. |