Microsoft Visual Studio .NET. Обзор основных новинок в версии Beta 2. Часть 2

Алексей Федоров

Часть 1

Оглавление

В предыдущем номере мы начали знакомство с основными новинками, появившимися в Microsoft Visual Studio .NET Beta 2. Мы выяснили, что с помощью этого средства облегчается создание XML Web-сервисов и Web-приложений, а также существенно увеличивается производительность труда разработчиков. В этой части статьи мы рассмотрим новые версии языков программирования, которые поддерживаются в Microsoft Visual Studio .NET, а также средства, обеспечивающие поддержку всего цикла создания корпоративных приложений.

Расширение функциональности языков программирования

Новая версия Microsoft Visual Studio обеспечивает поддержку более 20 различных языков программирования, среди которых четыре ключевых языка - Visual Basic .NET, Visual C# .NET, Visual C++ .NET и JScript .NET - предоставляются фирмой Microsoft. Другие фирмы разрабатывают компиляторы таких языков, как COBOL, FORTRAN, Perl, Python, RPG, Eiffel и Java

В последнее время Microsoft почти не упоминает о поддержке JScript в составе Microsoft Visual Studio .NET и практически все примеры предоставляются на VB.NET и C#, хотя, возможно, мы еще увидим новую версию JScript .NET, которая будет соответствовать спецификации ECMSScript Edition 4 и включать компилятор, поддержку классов и доступ к ядру .NET. Отметим, однако, что JScript .NET - это язык, который можно будет использовать только для создания Web-приложений на основе ASP.NET и для написания пакетных программ для среды .NET. Ниже мы подробнее рассмотрим три языка программирования фирмы Microsoft - Visual Basic .NET, Visual C# .NET, Visual C++ .NET.

Visual Basic .NET

Visual Basic .NET - наиболее простое и в то же время самое продуктивное из входящих в состав Visual Studio .NET средств для создания Windows- и Web-приложений. Новая версия языка пополнилась такими возможностями, как полная поддержка объектно-ориентированного программирования (включая наследование), визуальное наследование для форм, упрощенный доступ к функциям Windows, создание сервисов Windows NT и консольных приложений.
Споры о том, является ли Visual Basic .NET прямым потомком используемого миллионами разработчиков во всем мире языка Visual Basic или Microsoft «испортила породу», введя столько новшеств, будут продолжаться еще долго. Однако детальное обсуждение этой темы выходит за рамки данной статьи, и здесь мы кратко остановимся на основных нововведениях, появившихся в .NET-версии языка.

Полная поддержка наследования - наследования реализации (implementation inheritance) и визуального наследования форм - позволяет создавать приложения, в которых повторно используются большие объемы кода. Типичный пример таких приложений - Internet-приложения, содержащие множество общих элементов: электронные магазины, порталы, поисковые системы и т.п. Используя ключевое слово inherits, разработчики могут наследовать существующие классы, например:

Class      ECommerce
 Function      GetCustomer()
End Function      
Class      ECommerceEx
 Inherits      ECommerce 
     Function GetOrders()
     …
     
     End Function 

Экземпляры унаследованных классов поддерживают все методы и интерфейсы базовых классов. Кроме того, унаследованный класс может расширять набор методов и интерфейсов, поддерживаемых в базовом классе. Унаследованный класс также может переопределять методы базового класса с помощью ключевого слова overrides. Для предотвращения ошибок Visual Basic позволяет переопределять только такие методы, которые помечены как переопределяемые (overridable) в базовом классе.
Visual Basic .NET поддерживает перегрузку функций, предоставляя разработчикам возможность создавать различные версии подпрограмм и функций с одним и тем же именем, но с различными наборами аргументов. Перегрузка часто используется в объектно-ориентированном программировании, когда объектная модель требует наличия одноименных методов, работающих с различными типами данные, в частности:

Overloads      Sub Display(theChar As Char)
     ... 
     Overloads Sub Display(theInteger As Integer)
     ...
     Overloads Sub Display(theDouble As Double) 

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

Помимо рассмотренных выше объектно-ориентированных расширений языка, в Visual Basic .NET поддерживается многопоточная модель, позволяющая создавать асинхронные приложения. Это особенно актуально при создании масштабируемых Web-приложений, если требуется выполнить сложное вычисление, длительный запрос и т.п. Ниже показано, как с помощью Visual Basic .NET и поддержки потоков можно запускать фоновый код:

 
Sub MakeNewThread()
     Dim bg As bgWork 
     Dim myThread As Thread
     bg = New bgWork() 
     myThread = New Thread(New ThreadStart(AddressOf bg.Run)) 
     myThread.Start 
     End Sub
 Class      bgWork 
     Sub Run() 
     ... 
     End Sub
     End Class 

Среди других новинок Visual Basic .NET можно назвать структурную обработку исключений. Так, вместо конструкции On Error GoTo теперь используются блоки Try..Catch..Finally. Приведем пример такого блока:

Sub SHE_Demo()      
     Try 
     // Выполнение какой-либо операции 
     Catch 
     // В случае ошибки Finlly 
     // Финальный код 
     End Try 
     End Sub 

Новая опция Option Strict заставляет компилятор генерировать ошибки компиляции в случаях, когда преобразование типов недопустимо. В языке теперь появилась возможность использовать разделяемые члены классов (shared members), с помощью которых данные и члены классов становятся доступными для всех экземпляров класса. Говоря о новшествах в Visual Basic .NET, также следует упомянуть поддержку возможности инициализации переменных в строке их объявления. Например, вместо:

 Dim X      As Integer 
     X = 1

можно использовать:

Dim X      As Integer = 1 

Для миграции с Visual Basic 6.0 в состав Visual Basic .NET входит специальное средство - Visual Basic Migration Tool Wizard. Это средство запускается автоматически при открытии проекта Visual Basic 6.0 в среде разработчика и позволяет не только создать новую версию проекта, но и обозначить части кода, требующие изменений. В результате работы Visual Basic Migration Tool Wizard создается специальный отчет, содержащий как рекомендации по изменению кода, так и ссылки на соответствующие разделы справочной системы с пояснениями и дополнительной информацией.

Visual Basic .NET представляет собой высокопроизводительную объектно-ориентированную систему, предназначенную для создания всех типов .NET-приложений. Теперь разработчики могут создавать масштабируемый код с поддержкой потоков и мощными средствами обработки исключительных ситуаций. Миграция существующего кода частично облегчается за счет использования Visual Basic Migration Tool Wizard, а ранее приобретенные знания сохраняются и приумножаются благодаря новой справочной системе, входящей в состав Microsoft Visual Studio .NET.

Visual C# .NET

Современный, компоненто-ориентированный язык программирования С# разработан фирмой Microsoft специально для платформы .NET. Не вдаваясь в детали, скажем, что C# вобрал в себя лучшее из таких языков, как C, C++, Java и Delphi, а обсуждение тонкостей оставим апологетам того или иного языка. Простейшая программа, которая с 70-х годов, со времен Кернигана и Ричи, выводит на экран строку "Hello, world!", на C# выглядит так:

using System;  
class Hello  
 static void Main() {  
  Console.WriteLine("Hello, world!");  
 }  
} 

Исходные тексты программ на C# хранятся в файлах с расширением .cs.
Наш пример будет сохранен в файле hello.cs. Программа начинается с директивы using System;, указывающей на то, что мы планируем использовать пространство имен System, которое является частью библиотеки классов Microsoft .NET. Это пространство имен содержит класс Console, используемый нами в методе Main. Пространства имен используются для иерархической организации элементов библиотеки классов. Директива using позволяет ссылаться на членов пространства имен без указания самого имени пространства имен. Таким образом, вместо System.Console. WriteLine мы пишем Console.WriteLine.
Метод Main является членом класса Hello. Он имеет модификатор static и, следовательно, является методом класса Hello, а не экземпляра этого класса. Точка входа в программу - метод, вызываемый при запуске программы, - всегда статический метод с именем Main.

Вывод строки "Hello, world!" обеспечивается за счет использования библиотеки классов. Сам язык не предоставляет эту библиотеку, поэтому в .NET используется общая библиотека классов, доступная из программ, написанных как на С#, так и на VB .NET или C++.
Имеются некоторые отличия программы на C# от программы на C/C++. Здесь нет глобального метода Main. Методы и переменные не поддерживаются на глобальном уровне - такие элементы всегда содержатся только в описаниях типов (классах или структурах). В программе не используются операторы «::» или «->». Разделитель «.» служит для отделения частей составных имен - Console.WriteLine. Программа не содержит предопределений. Такие предопределения не нужны вообще, так как порядок следования определений в C# не имеет значения. В программе нет также директивы #include для импорта других файлов. Зависимости между программами разрешаются на символьном, а не на текстовом уровне, вследствие чего разрушаются барьеры между программами, написанными на разных языках программирования.
Несколько слов о других особенностях языка С#.
Так, в С# используется унифицированная система типов, то есть все типы данных являются наследниками класса Object. Свойства и события реализуются на уровне классов. Свойства обеспечивают доступ к атрибутам объектов или классов. Для чтения и записи свойств используется следующая синтаксическая конструкция:

public class Person  
{  
 public string Name {  
  get {  
   return Name;  
  }  
  set {  
   Name = value;  
  }  
 }  
} 

Событие - это член класса, позволяющий объекту или классу выдавать нотификационные сообщения. Событие задается как обычный метод, но с ключевым словом event.
В заключение также отметим автоматическую поддержку версий, возможность генерации документации на основе специализированных комментариев (///), а также новацию вроде автоматического сбора мусора, реализованного на уровне ядра .NET.
Для разработчиков, начинающих освоение C# (а это - 100% тех, кто заинтересовался возможностями этого языка), Microsoft предоставляет не только детальную спецификацию, но и обширную справочную систему, а также предлагает множество готовых примеров, иллюстрирующих различные аспекты работы с платформой .NET

Visual C++ .NET

Версия Visual C++ для платформы .NET имеет множество нововведений, позволяющих разработчикам создавать и использовать Web-приложения и Web-сервисы. От других языков программирования для платформы .NET Visual C++ .NET отличается тем, что поддерживает как кодовую модель платформы .NET (managed code model), так и кодовую модель Windows (unmanaged native code model). В состав Visual C++ .NET входит мощное расширение библиотеки Active Template Library (ATL), называемое ATL Server. Это расширение позволяет разработчикам создавать компактные, высокопроизводительные Web-приложения и сервисы. Расширения в Visual C++ .NET облегчают вызов Web-сервисов и из клиентских, и из серверных приложений, независимо от того, используется ли при разработке ядро .NET, библиотека Microsoft Foundation Classes (MFC), ATL или непосредственно функции Windows API.

С помощью Managed Extensions for Visual C++ разработчики могут создавать приложения для платформы .NET. Можно сказать, что Managed Extensions играет роль «моста» между кодом на Visual C++ и кодом на других языках программирования, включая Visual C# .NET и Visual Basic .NET.
Простейшая программа на Visual C++ .NET выглядит так:

#using <mscorlib.dll>  
using namespace System;  
   
void main()  
{  
  Console::WriteLine(L"Hello, world!")  
} 

Как мы видим, приведенный выше код начинается с директивы #using. Эта директива служит для доступа ко всем типам, определенным в указанной динамической библиотеке (в терминах .NET динамическая библиотека называется сборкой - assembly - и содержит, помимо собственно кода на промежуточном языке, метаданные и ресурсы). Внутри метода main() мы вызываем статический метод WriteLine класса Console, который определен в mscorlib.dll. Отметим, что вторая строка нашей программы указывает компилятору на то, что мы будем использовать типы данных, определенные в пространстве имен System. Это позволяет вместо полного имени класса указать его как Console::WriteLine.
Кроме поддержки создания .NET-приложений, в новой версии Visual C++ появилась возможность создания HTML-диалоговых панелей и безоконных интерфейсных элементов - все это реализовано в библиотеке MFC. Также некоторые базовые классы (CString, CFile, CRect, Cpoint) теперь можно использовать из ATL - runtime-версии MFC при этом не требуется.
Ознакомившись с основными функциональными расширениями языков программирования, обратимся к последней части нашего обзора - поддержке полного цикла создания корпоративных приложений.

Поддержка полного цикла создания корпоративных приложений

Для создания корпоративных приложений в семейство Visual Studio .NET входят два продукта - Visual Studio .NET Enterprise Architect и Visual Studio .NET Enterprise Developer. В составе этих продуктов содержатся средства для дизайна, создания и тестирования Web-сервисов и приложений, разрабатываемых коллективами разработчиков. Среди этих средств можно назвать следующие:

  • средства для моделирования баз данных на основе технологий Visio;
  • средства для программного моделирования на основе технологий Visio;
  • широкий набор шаблонов для корпоративных приложений;
  • средства тестирования - Application Center Test;
  • средства контроля версий - Visual SourceSafe. Рассмотрим эти средства более подробно.

Включенные в состав Visual Studio .NET средства моделирования поддерживают методологию Object Role Modeling (ORM), которая базируется на следующих ключевых принципах:

  • простота - моделирование происходит в наиболее элементарной форме;
  • коммуникабельность - структуры баз данных документируются на языке, понятном всем разработчикам;
  • аккуратность - на основе модели данных создается корректно нормализованная схема.

Использование методологии ORM в качестве инструмента моделирования, принятого в Visual Studio .NET, обусловлено тем, что обычно разработчики моделей получают информацию от заказчиков, знающих предметную область, но не способы моделирования. Следовательно, разработчик должен создавать концептуальные модели, понятные заказчикам, и при этом должен иметь возможность анализировать информацию и манипулировать типовыми данными. Методология ORM разработана специально для удовлетворения указанных требований. ,
ORM представляет приложение как набор объектов, играющих определенные роли. Такой подход иногда называется моделированием на базе фактов, поскольку он представляет данные в виде набора фактов. Такие факты не могут быть разделены на более примитивные элементы без потери информации.
Например, имеются следующие факты: «у человека есть телефон»; «человек живет по определенному адресу»; «человек родился в определенный день»; «человек был принят на работу в определенный день». Соответствующая этим фактам ORM-модель представлена на рис. 1.

Рис. 1

Овалы на рис. 1 представляют собой объекты; прямоугольники - определения; стрелки и точки - ограничения. Например, стрелка на изображении факта «у человека есть телефон» расшифровывается как: «возможно, что у одного человека есть более одного телефона и что у более чем одного человека есть один и тот же телефон». Для факта «человек родился в определенный день» комбинация стрелки и точки означает, что каждый человек родился в один конкретный день.

На рис. 2 изображена знакомая многим ER-модель (Entry Relationship) для приведенной ORM-диаграммы.

Рис. 2

ER-модель автоматически генерируется на основе соответствующей ORM-модели. Затем ER-модель используется для создания SQL-кода для базы данных. Этот процесс полностью обратим: на основании схемы базы данных мы можем получить ER-модель и породившую ее ORM-модель.

Шаблоны для корпоративных приложений

Шаблоны для корпоративных приложений (Enterprise Templates) содержат два ключевых компонента - начальную структуру проекта (шаблон проекта) и «политику» (policy), ассоциируемую с данным проектом. Использование корпоративных шаблонов облегчает реализацию общей схемы проекта. В частности, распределенное приложение может состоять из проектов для каждого из трех архитектурных уровней - пользовательского интерфейса, бизнес-логики и данных. Помимо задания начальной структуры приложения, архитектор приложения может включать в шаблоны стандартные компоненты и другие повторно используемые программные элементы.
В состав Visual Studio .NET входят шаблоны как для простых распределенных приложений, так и для более комплексных. Эти шаблоны доступны как проекты на языках Visual Basic .NET и Visual C# .NET.
Создание корпоративного проекта начинается с выбора шаблона из раздела Enterprise Templates. Следующим шагом является добавление к проекту компонентов, классов, проектов и иных программных элементов. В результате мы получаем высокоуровневую структуру приложения, которая будет служить отправной точкой для создания проекта.
Политика - это XML-документ, описывающий проект на языке Template Description Language (TDL). Данный документ позволяет архитекторам приложений управлять средой Visual Studio .NET, включая такие ее элементы, как список задач, панель инструментов, браузер свойств, Solution Explorer, дизайнеры, редакторы и т.д. С помощью TDL-документов архитекторы могут указывать, какие технологии доступны для разработчиков, задавать начальные значения или диапазоны начальных значений переменных, включать в состав проекта дизайнерские документы.

Средства тестирования

Средство Application Center Test позволяет разработчикам собирать информацию о производительности и выполнять функциональное тестирование Web-сервисов и приложений, созданных средствами Visual Studio .NET. Application Center Test поддерживает скриптовый язык и обладает возможностью имитации нагрузки на Web-приложения и сервисы. Среди тестов, поддерживаемых Application Center Test, можно отметить Browser Record Test, поддерживающий регистрацию HTTP-запросов и отсылаемых клиентам Web-страниц. Этот тест может быть как статическим, так и динамическим. При анализе результатов тестирования доступна следующая информация:

  • число запросов в секунду;
  • время до посылки первого байта;
  • время до посылки последнего байта;
  • ошибки TCP и HTTP;
  • число обслуженных запросов.

Внедрение приложений

Входящие в состав Visual Studio .NET средства внедрения приложений характеризуются следующими ключевыми возможностями:

  • внедрение является интегрированной частью любого проекта;
  • разработчики могут внедрять приложения на Web-серверы типа Internet Information Server, на не-Web-серверы, на традиционные носители типа CD-ROM или на комбинацию из вышеперечисленных;
  • полная поддержка классов для создания программ установки;
  • полная поддержка инициативы Zero Administration for Windows, включая установку side-by-side.

Заключение

В этой статье мы ознакомились с основными новинками в средстве разработки для платформы .NET - Microsoft Visual Studio .NET, которое значительно облегчает создание Web-сервисов и интеграцию приложений с уже существующими сервисами. Поддерживается создание и клиентского, и серверного кода с использованием знакомой многим разработчикам интегрированной среды разработки, а также таких концепций, как дизайнеры, редакторы свойств и Windows- и Web-формы.
Новации в языках программирования обеспечивают полную поддержку концепций объектно-ориентированного программирования, облегчают интеграцию с платформой .NET и позволяют создавать различные типы приложений - от клиентских приложений до Web-сервисов.
Полная поддержка создания корпоративных приложений расширяет возможности архитекторов приложений и позволяет с большей продуктивностью создавать решения различных уровней сложности с использованием ранее созданных программных компонентов и моделей.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=3862