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

Обновлен: Ноябрь 2007

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

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

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

См. также

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

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

Компиляция MSIL в машинный код

Ссылки

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

Другие ресурсы

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