ТЕХНОЛОГИИ РАЗРАБОТКИ

Приступая в 2000 г. к созданию новой версии своей СУБД, корпорация Microsoft в качестве одной из наиболее приоритетных задач определила необходимость существенного усиления в ней средств разработки приложений. Решение этой проблемы в новой версии SQL Server 2005 обеспечивается за счет тесной интеграции механизма управления базой данных со средой исполнения .NET Framework и инструментом Visual Studio. Более того, еще три года назад компания объявила, что отныне обновленные версии SQL Server и VS будут выпускаться одновременно (варианты 2005 будут представлены в ноябре этого года).

Технически эта интеграция заключается в том, что среда .NET Framework и ее ключевой компонент Common Language Runtime (CLR) включены непосредственно в механизм управления базой данных SQL Server 2005. Это дает возможность создавать хранимые процедуры на любом языке .NET и, самое, главное, - использовать для всего цикла подготовки приложений мощные и хорошо знакомые многим программистам средства VS. При этом, говоря о повышении эффективности процесса разработки приложений, особо нужно подчеркнуть сокращение затрат на отладку ПО - в том числе в режиме взаимодействия серверной и клиентской частей программ - как одного из самых трудоемких процессов разработки.

Однако наряду с поддержкой CLR в SQL Server 2005 получили свое развитие и традиционные средства программирования, в частности хорошо знакомый разработчикам БД язык запросов Transact-SQL (T-SQL). Помимо очевидных преимуществ от наличия различных технологий это создает для специалистов определенные проблемы в части правильного выбора подходящих средств, поскольку одна и та же задача может выполняться различными способами.

Вариант CLR, реализованный в движке SQL Server, в рабочих документах Microsoft получил название SQLCLR. (Далее говоря об использовании CLR мы будем иметь в виду любой язык программирования, который может работать в этой среде, в первую очередь VB.NET или C#, входящие в состав VS 2005.) Достоинство CLR заключается в его изначальной ориентации на обработку данных, что может быть полезным, например, для таких часто встречающихся задач, как преобразование строковых данных или математические операции. Но сами по себе универсальные языки программирования не позволяют напрямую выполнять операции обмена данными с базами данных. Для этого нужно использовать технологию ADO.NET, входящую в состав .NET Framework.

Вот как может выглядеть операция выборки данных с помощью средств ADO.NET (на языке C#):

using(SqlConnection conn = new SqlConnection(

"server=MyServer; database=MyWorks; " +

"user id=MyUser; password=MyPassword"))

{

conn.Open();

SqlCommand cmd = new SqlCommand(

"SELECT Name, GroupName FROM " +

"HumanResources.Department", conn);

SqlDataReader r = cmd.ExecuteReader();

while(r.Read())

}

Этот код может применяться и для клиентского приложения, и для Web-решения, и для связующего компонента. В данном случае для соединения с SQL Server используется провайдер System.Data.SqlClient, при этом можно из среды SQLCLR обратиться к другому экземпляру СУБД, причем не только SQL Server. Например, провайдер System.Data.OracleClient обеспечивает доступ к серверу Oracle.

В новой версии SQL Server 2005 Microsoft существенно усилила средства разработки приложений

Такой же конструкцией можно воспользоваться и для того, чтобы обратиться в тому серверу, где используется данная хранимая процедура. Но вряд ли это имеет смысл, так как в данном случае создается новое отдельное соединение (со всеми накладными расходами, связанными с этим), в то время как на самом деле приложение уже подключено к собственному серверу. Чтобы использовать текущее подключение, следует применить вариант "context connection":

using(SqlConnection conn = new SqlConnection(

"context connection=true"))

{

conn.Open();

}

Тут стоит обратить также внимание на то, что в ранних версиях ADO.NET для реализации доступа к собственному и внешнему серверам приходилось использовать два разных пространства имен - SqlServer и SqlClient.

Однако ADO.NET все же не нужно рассматривать как полноценную замену языку T-SQL, который был спроектирован специально для прямого доступа к данным и манипулирования ими. Тем более, что T-SQL в SQL Server 2005 подвергся переработке в плане его приведения в соответствие со стандартом ANSI и получил ряд функциональных расширений. Например, теперь любой объект можно создать только операторами языка определения данных (DDL) без необходимости применения хранимых процедур, а также преимуществами безопасного CLR-кода.