回答这个问题: 声明安全-这是什么? 并没有真正告诉我多少......不告诉我任何事情被钝器。
我碰到一个博客就有关.NET中的表现,并提到了这一点:
你用声明性安全?
如果可能的话,建议你用声明的安全,而不是必要的安全检查。 当前实现的需求提供了目前正在建设,以帮助安全审计的安全工具更好的性能和支持。
请注意,如果您的安全检查是在方法中有条件的,必须安全是唯一的选择。
链接: http://weblogs.asp.net/sanjeevagarwal/archive/2009/09/09/net-code-performance-tips-part-1.aspx
什么是“安全声明”代表什么? 有人可以给一个具体的例子吗?
在一般情况下,它是一个基于注释,而不是编码的安全性。 例如,在.NET你可以申请一个属性,导致生成的代码需要调用者具有一定权限的方法。
这里有一个具体的例子: http://www.knowdotnet.com/articles/securityattributes.html
声明功能允许程序员来表达在设计时的意图。 这些意向是由语言的引擎内部执行 - 换句话说,我们没有看到它是如何做。 一个例子是属性:
[RequireDeletePermission]
public void DeleteFile( string fileName )
{
}
该声明指出DeleteFile
方法不能没有叫DeletePermission
。 (这是一个虚构的例子。)运行时会强制执行这个规则给你。 没有更多的代码是必需的。 SQL权限也属于这一类。
你强制使用自己的代码策略被称为势在必行 。 你可以使用任何语言的机制来做到这一点,但代码本身(而不是一个内置的结构)表达你的意图。 你会看到在SQL触发器这样的事情,当时没有正式的约束会捕获所需的精确限制。
CREATE TRIGGER TR_UPD_fix_image_filename ON products AFTER UPDATE
AS
BEGIN
UPDATE product SET image=itemnumber + '.jpg' WHERE id IN (SELECT id FROM inserted)
END
(好了,所以这是一个哑实例。通过设计,最典型的情况下,可以通过约束来处理。)
你可以看一下AOP的例子。
在一般情况下,声明意味着当代码执行安全从其他代码(业务逻辑EG)分离的代码组织。 通常所有安全文物集中在一个地方,而且简化了组件的开发:业务逻辑和安全性。