Интеграция SQL Server 2005 с Visual Studio 2005 поднимет разработчикам настроение
Итак, настало время для праздника! 7 ноября увидели свет SQL Server 2005 и Visual Studio 2005. Надеюсь, что многие из читателей уже имели возможность испытать эти два замечательных продукта. Рекомендую и всем остальным как можно скорее это сделать, чтобы поближе познакомиться со всеми их новыми возможностями. Данную статью я хочу посвятить аспектам взаимодействия SQL Server 2005 и Visual Studio 2005, позволяющим существенно ускорить и упростить процесс разработки баз данных. Надо сказать, что эти продукты прошли долгий и тернистый путь. Большая часть трудностей была связана с необходимостью проведения бета-тестирования и внесения поправок одновременно в два очень масштабных решения, которые к тому же сильно зависят друг от друга. В некоторых аспектах эти два продукта хорошо стыкуются друг с другом, наиболее очевидный пример тому — SQL Server 2005 Common Language Runtime (SQLCLR), но в то же время существуют и другие, не столь очевидные места, где встречались противоречия. Так, например, все компоненты доступа к данным (в частности, ADO.NET 2.0) создавались специалистами из команды разработчиков SQL Server, а затем интегрировались в Visual Studio силами команды разработчиков Visual Studio.
Отдельно хочется сказать о механизме CacheSync, с помощью которого база данных может оповещать приложение о любых изменениях данных, с которыми работает запрос, используемый этим приложением на промежуточном или клиентском уровне. Эта функциональность настолько пришлась по вкусу разработчикам ASP.NET, что они в полном объеме включили ее в состав ASP.NET 2.0. Чтобы задействовать данный механизм, нужно просто подключиться к SQL Server с помощью управляющего элемента SQLDataSource, а затем присвоить свойству EnableCaching объекта SQLDataSource значение TRUE. Эта функция позволяет приложению обращаться только к начальной странице базы данных. Когда приложение просматривает страницу в первый раз, оно обращается к базе и запрашивает набор данных, используя имеющиеся в ней запросы или представления. После этого ASP.NET кэширует данные на прикладном уровне, и при всех последующих обращениях к этой странице данные будут предоставляться не из базы, а из кэша до тех пор, пока база данных не сообщит приложению, что соответствующие данные в самой базе изменились. В этот момент приложение может принять решение о том, когда оно будет запрашивать базу данных в следующий раз. Основное преимущество такого подхода состоит в том, что теперь разработчикам не требуется самим создавать процедуры проверки актуальности данных в кэше и включать в эти процедуры механизмы упорядоченного опроса. Следует также отметить, что использование такого механизма позволяет улучшить эксплуатационные характеристики как базы данных, так и приложения за счет уменьшения количества обращений к базе данных и снижения сетевого трафика.
С точки зрения разработчика, существует по крайней мере одна причина, по которой интеграция этих двух продуктов действительно оправдывает себя. Речь идет о механизмах отладки. Любой из тех, кто пытался пользоваться инструментами отладки в SQL Server 2000, знает, насколько они далеки от совершенства. Средства отладки, реализованные в SQL Server 2005 и Visual Studio 2005, стали существенно лучше. Теперь в распоряжении пользователя имеются действительно интегрированные с точки зрения языков и слоев инструменты отладки. На практике это означает, что разработчик, использующий средства Visual Studio, может включить контрольную точку в код программы, выполняющейся на его компьютере, после чего плавно перейти к стандартному пошаговому режиму выполнения программы. Если в ходе выполнения программы производится обращение к объекту базы данных (которым может быть, например, хранимая процедура T-SQL), отладчик сам переключается на язык T-SQL, и процесс отладки продолжается. При этом сам фрагмент кода T-SQL необязательно запускать на компьютере разработчика; если администратор корректно установил разрешения для базы данных, то процедура T-SQL может быть запущена на соответствующем сервере и разработчик может продолжать процесс отладки, причем ему не нужно знать, где выполняется программа в данный момент. Находясь в теле процедуры T-SQL, можно продолжать процесс отладки управляемого кода процедуры и не нарушить согласованности обработки при возврате к локальному коду на системе разработчика. В ходе данного процесса пользователь имеет полный объем отладочной информации из стека вызовов, точно так же как это было бы в случае использования полнофункционального отладчика.
В целях дальнейшего упрощения процесса управления проектами разработки баз данных теперь можно размещать все объекты базы данных с управляемым кодом в той же системе проверки исходного кода, которая применяется для обычных приложений. Это дает возможность контролировать из одного места все компоненты управляемого кода, независимо от того, где они находятся.
Одной из ключевых задач в ходе создания SQL Server 2005 и Visual Studio 2005 была задача объединения полноценной среды разработки в одном инструментальном средстве. В предыдущих версиях SQL Server и Visual Studio специалист, работавший над проектом базы данных, должен был для реализации тех или иных функций задействовать различные программные средства. Теперь разработчик может решать все необходимые задачи с помощью единственного инструмента — Visual Studio. В Visual Studio 2005 реализована поддержка нескольких новых типов проектов, предназначенных для работы с базами данных. Теперь каждый язык ассоциируется с проектом базы данных, что позволяет разработчику создавать объекты базы данных (такие, как хранимые процедуры или функции, определяемые пользователем) с помощью управляемого кода. Кроме того, в Visual Studio 2005 появились новые типы проектов, одним из которых является проект Database. Находясь внутри этого проекта, можно вызывать средства разработки баз данных для создания новой базы и сгенерировать соответствующие сценарии SQL, создающие или изменяющие структуру базы. Помимо этого, проект Database позволяет разработчику отлаживать код T-SQL сразу же после его создания. Появление этой функции избавляет нас от необходимости иметь под рукой запущенную консоль Enterprise Manager для создания или модификации объектов баз данных. К тому же теперь для выполнения запросов к базе данных разработчик может создавать и запускать сценарии запросов непосредственно из Visual Studio, не обращаясь при этом к Query Analyzer.
Поскольку можно будет создавать, модифицировать базы данных и работать с ними непосредственно из Visual Studio, команда разработчиков Visual Studio предусмотрела и реализовала в данном продукте простую возможность организации взаимодействия базы данных с созданным приложением, что может служить еще одним примером тесной интеграции двух рассматриваемых продуктов. В состав Visual Studio 2005 теперь входит SQL Server Express — компонент, представляющий собой версию исполнительного движка базы данных SQL Server, предназначенную для работы с клиентскими и встроенными сценариями. Разработчик может развернуть SQL Server Express одним щелчком мыши, для этого ему достаточно создать локальную базу данных, которую он планирует использовать со своими приложениями. Служба SQL Server Express умеет сама автоматически подключаться и отключаться от базы данных, поэтому в данном случае не требуется разрабатывать какие-либо сценарии для отключения и подключения к базе перед развертыванием приложения.
Интеграция между SQL Server 2005 и Visual Studio 2005 позволит разработчикам баз данных почувствовать себя так комфортно, как никогда прежде. Наконец-то можно работать над проектом базы данных через единый интерфейс, используя при этом массу новых компонентов, расширяющих функциональность и на уровне приложений, и на уровне самой базы данных! Все это позволяет создавать приложения, обладающие более богатыми и мощными возможностями.
Завершая статью, я хотел бы выразить глубокую благодарность коллективам разработчиков SQL Server 2005 и Visual Studio 2005 за созданные ими два замечательных продукта, появление которых коренным образом изменило подход к разработке приложений для баз данных.
Мэтт Нанн - Старший менеджер по продукту в команде Microsoft SQL Server, отвечает за подготовку технической документации для разработчиков SQL Server 2005. До Microsoft работал в других компаниях как технический менеджер и консультант по использованию различных платформ, включая Visual Basic, Visual Basic .NET и Borland Delphi, для разработки приложений для баз данных SQL Server. mattnunn@microsoft.com