Поделиться через


Общие сведения об интеграции СРЕДЫ CLR

Среда CLR — это сердце Microsoft .NET Framework и предоставляет среду выполнения для всего кода .NET Framework. Код, который выполняется в среде CLR, называется управляемым кодом. Среда CLR предоставляет различные функции и услуги, требуемые для выполнения программы, включая JIT-компиляцию, распределение и управление памятью, соблюдение безопасности типов, обработку исключений, управление потоками и безопасность. Дополнительные сведения см. в пакете SDK для .NET Framework.

С помощью среды CLR, размещенной в Microsoft SQL Server (называемой интеграцией CLR), вы можете создавать хранимые процедуры, триггеры, определяемые пользователем функции, определяемые пользователем типы и определяемые пользователем агрегаты в управляемом коде. Так как управляемый код компилируется в машинный код до выполнения, вы можете добиться значительного увеличения производительности в некоторых сценариях.

Управляемый код использует безопасность доступа к коду (CAS) для предотвращения выполнения определенных операций сборок. SQL Server использует CAS для защиты управляемого кода и предотвращения компрометации операционной системы или сервера базы данных.

Преимущества интеграции СРЕДЫ CLR

Transact-SQL специально предназначен для прямого доступа к данным и управления ими в базе данных. Хотя Transact-SQL преуспевает в доступе к данным и управлении, это не полнофункциональный язык программирования. Например, Transact-SQL не поддерживает массивы, коллекции, циклы для каждого цикла, битовую смену или классы. Хотя некоторые из этих конструкций можно имитировать в Transact-SQL, управляемый код имеет встроенную поддержку этих конструкций. В зависимости от сценария эти средства могут стать убедительной причиной для внедрения в управляемый код определенных функциональных возможностей поддержки базы данных.

Microsoft Visual Basic .NET и Microsoft Visual C# предлагают объектно ориентированные возможности, такие как инкапсуляция, наследование и полиморфизм. Связанный код теперь можно легко организовать в классы и пространства имен. При работе с большими объемами кода сервера это позволяет более легко упорядочивать и поддерживать код.

Управляемый код лучше подходит, чем Transact-SQL для вычислений и сложной логики выполнения, и предоставляет обширную поддержку для многих сложных задач, включая обработку строк и регулярные выражения. Благодаря функциональным возможностям библиотеки .NET Framework у вас есть доступ к тысячам предварительно созданных классов и подпрограмм. Их можно легко получить из любой хранимой процедуры, триггера или определяемой пользователем функции. Библиотека базовых классов (BCL) включает классы, которые предоставляют функциональные возможности для обработки строк, расширенных математических операций, доступа к файлам, криптографии и т. д.

Замечание

Хотя многие из этих классов доступны в коде СРЕДЫ CLR в SQL Server, те, которые не подходят для использования на стороне сервера (например, классы окон), недоступны. Дополнительные сведения см. в статье "Поддерживаемые библиотеки .NET Framework".

Одним из преимуществ управляемого кода является безопасность типов, или гарантия того, что код обращается к типам только точно определенным, разрешенным способом. Перед выполнением управляемого кода среда CLR проверяет код на безопасность. Например, код проверяется, чтобы не было прочитано памяти, которая ранее не была записана. Среда CLR также может помочь убедиться, что код не управляет неуправляемой памятью.

Интеграция со средой CLR позволяет улучшить производительность. Дополнительные сведения см. в разделе "Производительность интеграции СРЕДЫ CLR".

Выбор между Transact-SQL и управляемым кодом

При написании хранимых процедур, триггеров и определяемых пользователем функций необходимо принять одно решение о том, следует ли использовать традиционный язык Transact-SQL или язык .NET Framework, например Visual Basic .NET или Visual C#. Используйте Transact-SQL, если код в основном будет выполнять доступ к данным с малой или без процедурной логики. Управляемый код следует использовать для функций и процедур, интенсивно использующих ЦП, содержащих сложную логику, или при необходимости использования библиотеки BCL платформы .NET Framework.

Выбор между выполнением на сервере и выполнением в клиенте

Другой фактор в решении о том, следует ли использовать Transact-SQL или управляемый код, заключается в том, где должен находиться код, серверный компьютер или клиентский компьютер. На сервере можно запускать как Transact-SQL, так и управляемый код. Это позволяет упростить доступ к данным из кода и воспользоваться ресурсами обработки, имеющимися на сервере. С другой стороны, может потребоваться избежать размещения интенсивных задач процессора на сервере базы данных. Большинство клиентских компьютеров сегодня очень мощны, и вы можете воспользоваться этой мощностью обработки, поместив максимально возможный код на клиент. Управляемый код может выполняться на клиентском компьютере, а Transact-SQL не может.

Выбор между расширенными хранимыми процедурами и управляемым кодом

Расширенные хранимые процедуры можно создать для выполнения функциональных возможностей с помощью хранимых процедур Transact-SQL. Однако расширенные хранимые процедуры могут компрометировать целостность процесса SQL Server, в то время как управляемый код, проверенный как типобезопасный, не может. Кроме того, управление памятью, планирование потоков и волокон и службы синхронизации более глубоко интегрированы между управляемым кодом среды CLR и SQL Server. Интеграция СРЕДЫ CLR обеспечивает более безопасный способ, чем расширенные хранимые процедуры для записи хранимых процедур, необходимых для выполнения задач в Transact-SQL. Дополнительные сведения об интеграции СРЕДЫ CLR и расширенных хранимых процедурах см. в разделе "Производительность интеграции СРЕДЫ CLR".

См. также

Установка платформы .NET Framework
Архитектура интеграции СРЕДЫ CLR
Доступ к данным из объектов базы данных CLR
Начало работы с интеграцией CLR