Security

Since components can be downloaded, .NET has to provide a secure runtime environment. Assembly manifests can specify permissions they require, permissions they would like to have, and permissions they will never ask for. Thus, .NET can make intelligent decisions (based on where the assembly came from, digital signatures, the permissions its manifest claims and those it actually asks for) as to how much security clearance to grant it, if any. And the assembly is capable, based on how much .NET is willing to grant it, to decide whether it should attempt to run or not. Its security model is fine-grained and evidence-based, not just on/off.


References: E