Знакомство с Microsoft .NET Framework 2.0, Часть 1. Обзор основных измененийИсточник: КомпьютерПресс, 10/2004 Алексей Федоров, сотрудник отдела стратегических технологий российского представительства компании Microsoft
ОглавлениеЧто нового в библиотеке классов
В середине будущего года компания Microsoft планирует выпуск ряда продуктов и технологий для разработчиков, создающих приложения на платформе Microsoft .NET. К этим продуктам относится обновленная линейка средств разработки Visual Studio .NET 2005, в составе которой будут как средства, рассчитанные на непрофессиональных разработчиков (Express-версии Visual Studio .NET 2005), так и средства, адресованные коллективам программистов и позволяющие использовать Visual Studio .NET 2005 для автоматизации всего процесса разработки программных продуктов и систем. Помимо этого планируется и выход новой версии СУБД - SQL Server 2005, которая также будет представлена в виде различных версий, предназначенных для решения широкого круга задач, связанных с хранением, обработкой и анализом данных. Все указанные продукты базируются на новой версии платформы для создания распределенных приложений компании Microsoft - .NET Framework 2.0. Данная публикация открывает обширную статью, посвященную рассмотрению изменений и дополнений в .NET Framework 2.0, и начнем мы с обзора основных новшеств и модификаций очередной версии .NET Framework. В этой части статьи мы не будем касаться изменений и дополнений в языках программирования - в основном они носят функциональный характер и направлены на решение таких вполне конкретных задач, как, например, улучшенная поддержка средств разработки, кодогенерации, компиляции и отладки, синхронизация возможностей C# и Visual Basic .NET, упрощение выполнения ряда рутинных операций и т.п. Также не представляется возможным рассмотреть все изменения, произошедшие в библиотеках классов .NET Framework 2.0, поэтому все желающие более детально изучить этот вопрос, могут обратиться к онлайновой утилите Whidbey Inspector (http://www.dotnet2themax.com/DotNetBrowser/ShowAssemblies.aspx), которая позволяет сравнить сборки, пространства имен, типы, члены классов и т.п. в версиях 1.1 и 2.0 и быстро определить, были ли они добавлены, удалены или модифицированы по сравнению с предыдущей версией. Что нового в библиотеке классовНаше знакомство с библиотекой классов будет целесообразно связать с основными уровнями классической трехуровневой архитектуры, активно используемой разработчиками при создании приложений на платформе Microsoft .NET. После рассмотрения основных классов, необходимых для реализации уровня представлений, уровня бизнес-логики и уровня доступа к данным, мы перейдем к дополнительным группам классов, обеспечивающим поддержку реализации Web-сервисов, к средствам развертывания приложений, к классам, реализующим доступ к различным системным сервисам, а также расскажем о некоторых дополнительных изменениях в библиотеке классов .NET Framework 2.0. Уровень представленияПлатформа Microsoft .NET предоставляет несколько механизмов для реализации уровня представления - это средства создания классических толстых клиентов (Windows Forms), тонких клиентов (Web Forms) и комбинация из лучших характеристик тонких и толстых клиентов, известная под названием Smart Client, с помощью которой можно создавать приложения, способные загружаться из Web, автоматически обновляться и работать как с онлайновыми, так и с отсоединенными данными. Основная функциональность, реализуемая на уровне представления, - ввод и проверка данных, их отображение. Дополнительная же функциональность связана с поддержкой этих операций. В зависимости от типа приложения, на клиентском уровне могут находиться функции, отвечающие за навигацию, кэширование данных, локализацию и глобализацию и пр. Windows-приложения на основе Windows Forms
Таблица 1. Краткие характеристики новых компонентов Windows Forms Помимо появления новых компонентов, используемых для реализации пользовательских интерфейсов Windows-приложений, произошли некоторые изменения в модели связи таких компонентов с источниками данных (Data Binding). Новый компонент DataConnector служит связующим звеном между интерфейсным элементом и источником данных и автоматически управляет функциями поддержки текущего состояния, события в источниках данных и изменения источников данных. DataConnector предназначен для совместного использования с такими компонентами, как DataNavigator и DataGridView. Web-приложения на основе Web Forms К числу основных изменений относятся следующие: теперь все компоненты генерируют код, совместимый со стандартом XHMTL 1.1, и поддерживают адаптивный рендеринг, возможность задания различных цветовых схем, а также функции, позволяющие подсчитывать число обращений к тому или иному элементу. Функции аппаратной фильтрации позволяют задавать различные значения свойств для различных устройств. Поддерживается группировка компонентов проверки ввода, которые могут быть включены или выключены для некоторых компонентов. Новые компоненты, реализованные в ASP .NET, представлены в табл. 2.
Таблица 2. Краткие характеристики новых компонентов ASP .NET 2.0 Изменения в механизмах связи с источниками данных включают появление новых компонентов, объединяющих строки соединения, запросы и параметры в одно целое и поддерживающих различные источники данных, в том числе Microsoft SQL Server, Microsoft Access, XML-файлы, Web-сервисы и бизнес-объекты, возвращающие наборы данных. Для реализации доступа к данным из бизнес-компонентов служит новый компонент ObjectDataSource, который предоставляет пользователям стандартный набор интерфейсов для связи с интерфейсными элементами, однако вместо непосредственной связи с источниками данных опирается на функциональность, предоставляемую бизнес-компонентами, задаваемыми пользователями. В числе новых компонентов для отображения данных следует особо отметить:
Уровень бизнес-логикиЗадача уровня бизнес-логики - обеспечить основную функциональность приложения, поэтому именно на указанном уровне реализуются такие функции, как обработка введенных пользователем данных, программная реализация бизнес-правил, инициация транзакций, взаимодействие с внутренними и внешними компонентами системы и т.д. Основные изменения и дополнения в .NET Framework 2.0, относящиеся к уровню бизнес-логики, связаны с расширенной поддержкой транзакций, сериализации, с улучшениями во взаимодействии с COM-объектами, а также с некоторыми изменениями в .NET Remoting. Поддержка транзакций Для создания простых транзакционных блоков кода можно использовать класс TransactionScope, тогда как интерфейсы ITransaction и IEnlistmentNotification предоставляют возможность управлять каждой фазой многофазовых распределенных транзакций. Новая транзакционная инфраструктура расширяет и дополняет средства поддержки COM+ транзакций, реализованные в пространстве имен System.EnterpriseServices. С целью реализации простых транзакций (в рамках одного локального домена приложений) в качестве альтернативы DTC можно использовать класс LightweightTransactionManager, реализованный в пространстве имен System.Transactions.Ltm. Сериализация В версии 2.0 класс BinaryFormatter, отвечающий за бинарную сериализацию, расширен поддержкой версионности: объект может быть десериализован из сериализации другой версии. В XML-сериализации теперь поддерживаются использование свойств (а не полей) для представления элементов схем; сериализация обобщенных типов; использование структуры Nullable для представления элементов, которые могут иметь нулевые значения. Кроме того, интерфейс IXmlSerializable поддерживает генерацию нестандартных схем. Улучшения взаимодействия с COM-объектами Расширение механизмов маршалинга существенно облегчает взаимодействие с неуправляемым кодом - добавлена возможность превращать указатели на функции в делегаты и выполнять маршалинг массивов вложенных структур фиксированого размера. Помимо этого значительно увеличена производительность большинства стандартных вызовов между приложениями, находящимися в разных доменах. Расширенная функциональность утилит Type Library Importer (Tlbimp.exe) и Type Library Exporter (Tlbexp.exe) позволяет обнаруживать ссылки на библиотеки типов без обращения к реестру. Изменения в .NET Remoting Классы в новом пространстве имен System.Runtime.Remoting.Channels.Ipc позволяют приложениям, выполняемым на одном компьютере, обмениваться данными без использования сети. В пространстве имен System.Runtime.Remoting.Channels добавлена поддержка безопасности на уровне каналов, вследствие чего канал TCP теперь поддерживает аутентификацию и шифрование, а также функции, улучшающие поддержку балансирования нагрузки. Уровень доступа к даннымНа уровне доступа к данным решаются проблемы обеспечения простых механизмов для доступа к источникам данных реализации по мере возможностей абстракции от конкретных данных. Кроме того, на этом уровне ставится задача позволить разработчику реализовать простой набор операций для манипуляции данными. В .NET-приложениях традиционно используются механизмы и компоненты доступа к данным, известные под названием ADO .NET. ADO .NET К новой функциональности в ADO .NET 2.0 можно отнести поддержку типов, определяемых пользователем (User-Defined Types, UDT), асинхронные операции с базами данных, поддержку типов данных XML и новых типов данных для SQL Server - varchar(max), nvarchar(max) и varbinary(max), возможность работы с набором активных результатов запроса (Multiple Active Result Sets, MARS): получение более одного открытого объекта SqlDataReader в рамках соединения, когда каждый экземпляр SqlDataReader был создан отдельной командой. Помимо этого управляемые провайдеры поддерживают функции перечисления экземпляров Microsoft SQL Server 2000 и более поздних версий; реализованы поддержка операции быстрого копирования и вставки данных для SQL Server и доступ к статистике SQL Server 2005 через 21 счетчик производительности; новый класс DataTableReader предоставляет содержимое DataSet или DataTable в режиме только для чтения с возможностью перемещения по записям только вперед. Новый набор интерфейсов - Schema Discovery API - позволяет запрашивать информацию о метаданных. XML.NET К тому же расширена функциональность существующих XML-классов, включая поддержку типов для классов XmlReader, XmlWriter и XPathNavigator, новую модель создания объектов XmlReader и XmlWriter и новый процессор для преобразований XSLT: метод Compile позволяет откомпилировать описание трансформации, а метод Execute - выполнить предварительно откомпилированное описание. Web-сервисыПространство имен System.Web.Services теперь поддерживает протокол SOAP 1.2 и элементы, которые могут иметь нулевые значения и базовый профиль WS-I Basic Profile 1.0 (http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a.html). Также реализована поддержка асинхронных вызовов методов Web-сервисов и добавлена возможность использования событийно-ориентированной модели вызова методов. БезопасностьНекоторые изменения в .NET Framework 2.0 относятся к расширению функциональности, связанной с созданием безопасных приложений. Операции с ACL Поддержка сертификата X.509 Класс System.Security.SecurityException Потоки с аутентификацией Расширенные сетевые функцииВ библиотеке классов .NET Framework 2.0 появились изменения и дополнения, связанные с поддержкой сетевых функций. Например, класс NetworkChange позволяет приложениям получать нотификации об изменениях IP-адреса сетевого интерфейса, которые могут быть связаны с изменениями сетевой карты или адаптера, с отсоединением сетевого кабеля, с выходом компьютера за границы покрытия беспроводной сети или со сбоями в оборудовании. В пространстве имен System.Net реализованы поддержка запросов от FTP-клиентов (расширенная функциональность классов WebRequest, WebResponse и WebClient), функции кэширования HTTP-ресурсов, механизмы автоматического обнаружения прокси и возможности получения информации о сетевом трафике и статистической информации. Класс для создания Web-сервера Информация о сетевом трафике Проверка доступности удаленных серверов Поддержка электронной почты Кэширование сетевых ресурсов Кроме того, расширена поддержка безопасности и увеличена производительность классов System.Net.Sockets.Socket и System.Uri. Отметим, что ряд рассмотренных здесь сетевых функций доступен пользователям языка Visual Basic .NET через свойства и методы класса Network, расположенного в пространстве имен My.Computer. Другие изменения и дополненияПомимо рассмотренных выше, в библиотеке классов .NET Framework 2.0, появился ряд расширений, которые не относятся к конкретным категориям. Расширения для консольных приложений Функции защиты данных Расширения функций ввода-вывода Поддержка последовательных портов Отметим, что пользователи Visual Basic .NET также могут обращаться к COM-портам через объект My.Computer.Ports. Активация приложений через манифест Модель активации на базе манифеста использует манифест, а не сборку для активации приложения. Манифест полностью описывает приложение, сборки, от которых оно зависит, требования безопасности и прочую информацию, необходимую для активации приложения. Модель активации на базе манифеста имеет ряд преимуществ по сравнению с активацией сборок, что особенно важно для Web-приложений. Например, манифест содержит требования безопасности, которые позволяют пользователю без собственно загрузки кода принять решение о том, разрешать ли выполнение приложения. Модель активации на базе манифеста предоставляет набор программных интерфейсов, позволяющих приложениям-хостам активировать приложения и расширения, описанные в манифесте. Базовая функциональность активации на базе манифеста реализована в методе AppDomain.ExecuteManifest класса AppDomain. Запуск приложений по технологии ClickOnce позволяет развертывать клиентские приложения с Web-сервера, запуская их по ссылке, содержащей адрес файла с манифестом данного приложения. После того как манифест загружен, активизируется специальный сервис Windows - Click-Once Host, который проверяет содержимое файла манифеста, загружает необходимые для функционирования приложения сборки, устанавливает ссылки на приложение и создает новый элемент стартового меню. Итак, мы рассмотрели основные изменения и дополнения новой версии .NET Framework 2.0. Следует отметить, что данная публикация основывается на бета-версии продукта и что к моменту выпуска в нем могут произойти определенные перемены. В последующих частях данной статьи мы постараемся учесть это и сделать предлагаемую читателям информацию как можно более актуальной. Дополнительная информация
|