Написание проверяемого строго типизированного кода

Типобезопасный код — это код, осуществляющий доступ к типам только строго определенными, допустимыми способами. Например, имея действительную ссылку на объект, типобезопасный код может осуществлять доступ к памяти по фиксированным смещениям, соответствующим реальным членам-полям. Однако если код производит доступ к памяти по произвольным смещениям за пределами диапазона памяти, принадлежащего публично открытым полям этого объекта, он не является типобезопасным.

JIT-компиляция выполняет процесс, называемый проверкой, который анализирует код и пытается определить, является ли код типобезопасным. Код, который в процессе проверки признается типобезопасным, называется проверяемым типобезопасным кодом. Код может быть типобезопасным, но не проверяемым типобезопасным из-за ограничений процесса проверки его компилятором. Не все языки являются типобезопасными, и некоторые компиляторы языков, такие как Microsoft Visual C++, не могут создавать проверяемый типобезопасный код. Чтобы определить, создает ли компилятор языка, который вы используете, проверяемый типобезопасный код, нужно свериться с документацией по компилятору. Если вы используете компилятор языка, создающий проверяемый типобезопасный код только в случае, если вы избегаете определенных конструкций языка, возможно, вы захотите воспользоваться включенным в Пакет средств разработки программного обеспечения (SDK) для Windows средством PEVerify, чтобы определить, является ли ваш код проверяемо типобезопасным.

Код, не являющийся проверяемо типобезопасным, может осуществить попытку запуска, если политика безопасности позволяет коду обойти проверку. Однако так как строгая типизация является неотъемлемой частью механизма среды выполнения для изоляции сборок, безопасность не может уверенно соблюдаться, если код нарушает правила строгой типизации. По умолчанию код, не являющийся типобезопасным, допускается к выполнению, только если он исходит от локального компьютера. Поэтому мобильный код должен быть типобезопасным.

См. также

Ссылки

Peverify.exe (средство PEVerify)

Основные понятия

Управление доступом для кода

Основы управления доступом для кода

Процесс управляемого выполнения