Использование современных технологий для построения распределенных систем



Скачать 192.62 Kb.
Дата 30.08.2016
Размер 192.62 Kb.
УДК 004.4

А.В.Ермольчев, Л.С. Глоба, д.т.н., проф.
Использование современных технологий для построения распределенных систем

Аннотация

Рассмотрены основные концепции распределенных систем, приведены варианты архитектурных решений для их построения. Дан краткий обзор процессов разработки и шаблонов проектирования. Кратко описаны варианты построения уровня пользовательского интерфейса, уровня процессов предметной области, средств коммуникаций. С практической стороны основной уклон при этом делался на использовании технологий корпорации Microsoft.



Absract

Determination of the distributed systems is considered, the variants of architectural decisions for their development are described. The brief overview of development processes and design patterns is given. The variants of user interface level, business processes level, communication facilities development are briefly described. From a practical side a basic slope was done on use Microsoft Corporation technologies.


Введение

Единой общепринятой методологии планирования, проектирования и разработки распределенных систем на данный момент не существует, однако основные производители программного обеспечения используют различные архитектурные подходы. Наиболее распространена трехуровневая архитектура, которая, по-видимому, на данный момент является оптимальной. Для поддержания этой архитектуры разрабатываются новые инструментальные средства и технологии. В данной статье дан анализ современного подхода к построению распределенных систем и описываются некоторые продукты Microsoft, направленные на поддержание разработки таких систем.




  1. Распределённые системы

Существующий подход к определению распределенной системы имеет свои недостатки [1]. Все программное обеспечение, используемое в этой распределенной системе, могло бы работать и на одном единственном компьютере, но с точки зрения рассматриваемого подхода такая система уже перестанет быть распределенной. Следовательно, уже с этой точки зрения определение распределенной системы должно включать в себя анализ образующего такую систему программного обеспечения.

В современных распределенных системах функции одного уровня приложения разнесены между несколькими компьютерами. С другой стороны, программное обеспечение, установленное на одном компьютере, отвечает за выполнение функций, относящихся к разным уровням приложения. Следовательно, определение распределенной системы в виде совокупности компьютеров достаточно условно. Для описания и реализации распределенных систем предлагается рассмотрение понятия программной компоненты.

Программная компонента – это обособленная часть приложения, исполняемая на одном компьютере в пределах одного процесса, и предоставляющая собой некий набор сервисов, которые используются через ее внешний интерфейс другими частями приложения, выполняющимися как на этом же, так и на удаленных компьютерах. Ряд компонент пользовательского интерфейса при этом могут предоставлять свой сервис конечному пользователю.

Используя определение программной компоненты, можно дать более точное определение распределенной системы. Согласно нему, распределенная система представляет собой совокупность взаимодействующих программных компонент, выполняющихся на одном или нескольких связанных компьютерах, которая выглядит с точки зрения пользователя системы как единое целое. При исправном функционировании системы от конечного пользователя должно быть скрыто, где и как выполняются его запросы.

Программная компонента является минимальной единицей развертывания распределенной системы. В ходе модернизации системы одни компоненты могут быть обновлены независимо от прочих компонент.

Организация распределенных систем включает в себя дополнительный уровень программного обеспечения, находящийся между верхним уровнем, на котором находятся пользователи и приложения, и нижним уровнем, состоящим из операционных систем. Такое программное обеспечение называется промежуточным.

При разработке проектов распределённых систем решающими факторами выступают ответы на следующие вопросы:


  • кто и каким образом будет разрабатывать;

  • какую архитектуру использовать при разработке;

  • какие элементы решения являются типизированными (шаблонными);

  • какие платформы будут использоваться при разработке и эксплуатации;

Далее рассматриваются вопросы построения архитектуры распределённых приложений и возможность их практической реализации с использованием технологий корпорации Microsoft.


  1. Процессы разработки

Для ответа на вопрос «кто и каким образом будет разрабатывать» предлагается рассмотреть, какие существуют. Основные подходы к разработке программного обеспечения представлены так называемыми процессами разработки.

Существует три разновидности процессов разработки программного обеспечения: каскадная (последовательная), спиральная (итеративная, гибкая) и комплексная.

В каскадном процессе [2] используется последовательный подход, при котором вехи (контрольные точки) используются в качестве точек оценки и перехода от одной фазы разработки к другой. Все задачи, относящиеся к одной фазе разработки, должны быть завершены до того, как начнется следующая фаза разработки. Каскадный процесс работает наилучшим образом, когда на начальном этапе проекта можно четко определить неизменный набор требований к разрабатываемому решению. Фиксация переходов от одной фазы разработки к другой облегчает распределение ответственности, отчетность и следование календарному графику проекта.

Спиральный процесс [2] учитывает необходимость постоянного пересмотра, уточнения и оценки проектных требований. Он может быть очень эффективным при быстрой разработке небольших проектов. Этот фактор стимулирует активное взаимодействие между проектной группой и заказчиком, поскольку заказчик оценивает ход и результаты работы на протяжении всего проекта. Недостатком спиральной модели является отсутствие четких вех, что может привести к хаотизации процесса разработки.

К спиральным процессам относят Unified Process, XP, Scrum.

Комплексные процессы сочетают в себе черты каскадной и спиральной моделей. К таковым относится Microsoft Solution Framework (MSF) [3].

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

MSF предлагает методики для планирования, проектирования, разработки и внедрения программного обеспечения различной сложности, включая и распределённые системы. Благодаря своей гибкости, масштабируемости и отсутствию жестких инструкций у MSF есть возможность удовлетворить нужды организации или проектной группы любого размера. Методология MSF состоит из принципов, моделей и дисциплин по управлению персоналом, составными процессами, технологическими элементами и связанными со всеми этими факторами вопросами, характерными для большинства проектов.

MSF состоит из двух моделей и трех дисциплин:

модели:


  • проектной группы;

  • процессов;

дисциплины:

  • управление проектами;

  • управление рисками;

  • управление подготовкой.




  1. Архитектура построения распределенных систем

Распределённую систему можно представить с помощью 3-х уровневой модели, включающей уровни пользовательского интерфейса, логики процессов предметной области (бизнес-логики), доступа к данным и ресурсам.

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

При реализации 3-уровневой архитектуры каждый из уровней реализуется как отдельная программная компонента.

В случае реализации любого из уровней в виде совокупности программных компонент мы получаем архитектуру «N-уровнего приложения».




  1. Разработка уровня пользовательского интерфейса

На сегодняшний день используется несколько различных подходов к взаимодействию с пользователем. Каждый из этих подходов с практической стороны воплощен в соответствующей разновидности пользовательского интерфейса, которые приведены ниже:

  • интерфейс приложений командной строки;

  • графический пользовательский интерфейс с использованием форм (окон);

  • интерфейс интерактивных веб-страниц с динамическим содержимым.

Помимо этого необходимо заметить, что уровень пользовательского интерфейса может быть ориентирован не только на обычные компьютеры, но и на всевозможные мобильные устройства.

Исходя из выбора средств взаимодействия с пользователем и производится выбор соответствующей технологии, с помощью которой разрабатывается уровень пользовательского интерфейса.

В настоящее время интерфейс командной строки используется достаточно редко. Чаще всего его можно встретить в приложениях системного администрирования и тестирования.


    1. Обзор Windows Forms и Windows Presentation Foundation

Интерфейс приложений с использованием форм (окон) реализован в приложениях, выполняющихся на клентской стороне. На сегодняшний день существует несколько технологий, предлагающих средства для создания интерфейсов такого типа. Как правило, они предлагают более высокий уровень абстракции и инкапсулируют рутину работы с различными системными функциями и обработке сообщений или сигналов операционной системы. Рассмотрим в качестве примера две технологии разработки пользовательского интерфейса подобного типа, входящие в состав Microsoft .NET Framework: Windows Forms и Windows Presentation Foundation [4].

Технология Windows Forms реализуется классами, входящими в пространство имён System.Windows.Forms. Классы, входящие в это пространство имён, являются оболочкой для всех стандартных функций Win32 API. Благодаря этому внешний вид и поведение стандартного приложения Windows можно обеспечить классами пространства имён System.Windows.Forms. В этом пространстве имен определены все стандартные элементы управления Windows Forms.

Функцональность, поддерживающая взаимодействие с Windows, включает свойство Handle, содержащее дескриптор окна. Дескриптор окна – это значение типа HWND, уникально идентифицирущее окно. Элемент управления может рассматриваться как окно, поэтому у него есть соответствующий дескриптор. Оконные дескрипторы в свою очередь связаны с соответствующими графическими ресурсами, представленными в виде обычных битовых матриц.

Однако вошедщая в состав .NET Framework 3.0 технология Windows Presentation Foundation (WPF) полностью меняет этот подход.

WPF – одно из четырёх главных расширений .NET Framework, предназначенное для создания пользовательского интерфейса в интеллектуальных клиентских приложениях. В то время, как элементы управления Windows Forms основаны на собственных элементах управления Windows, использующих оконные дескрипторы (Window handles), которые основаны в первую очередь на экранных пикселях, WPF базируется на DirectX. Приложение WPF не использует оконные дескрипторы и базируется на векторной графике, поэтому размеры как элементов, так и всего пользовательского интерфейса легко масштабировать. Кроме того, здесь включена поддержка 2D, 3D, анимации, звука и видео.

Одно из важнейших преимуществ WPF заключается в том, что работа по созданию пользовательского интерфейса легко может быть разделена между дизайнерами и разработчиками. Результат работы дизайнера может быть непосредственно использован разработчиком. При этом одну из ключевых ролей играет использование XAML (XML-подобный язык для разметки приложений) в качестве языка декларативного описания пользовательского интерфейса.

На данный момент существует множество конверторов популярных векторных графических форматов в формат XAML. Для некоторых популярных векторных редакторов также разработаны соответствующие плагины. Помимо этого корпорация Microsoft разработала собственный инструментарий для полноценной разработки приложений WPF под названием Expression. В него входят следующие программные продукты:


  • Microsoft Expression Blend;

  • Microsoft Expression Design;

  • Microsoft Expression Web;

  • Microsoft Expression Media;

  • Microsoft Expression Encoder.

Помимо возможности построения клиентских приложений, WPF предоставляет возможность строить приложения для основных типов веб-браузеров, работающих не только под управлением Windows, но также MacOS и Linux. Эта технология получила название Silverlight (для Linux существует проект под названием Moonlight). Необходимая функциональность на стороне клиента реализуется при помощи соответствующего плагина для браузера. Он представляет обозревателю внутреннюю модель DOM. Так как язык XAML основан XML, документ, определяющий загружаемый клиенту пользовательский интерфейс, вполне пригоден для индексирования поисковыми системами. Приложение Silverlight начинается с вызова объекта Silverlight из HTML страницы, который и загружает файл XAML. Этот файл содержит объект Canvas, выступающий подложкой для всех других элементов. Объекты XAML способны генерировать соответствующие события, которые могут быть обработаны необходимым образом.

Вся функциональная часть приложений WPF и Silverlight может программироваться с использованием любого языка, входящего в состав .NET Framework.




    1. Обзор ASP.NET и ASP.NET AJAX

В отличие от приложений, формирующих пользовательский интерфейс на клиентской стороне, приложения, использующие интерфейс интерактивных веб-страниц с динамическим содержимым на клиентской стороне его только отображают посредством веб-браузера. Формируется же он на стороне веб-сервера. Одной из технологий, способных формировать динамическое веб-содержимое, является ASP.NET (Рис.1) [4].

Одним из ключевых отличий от других технологий является то, что технология ASP.NET является частью .NET Framework и обеспечивает полноценную объектную модель для всех элементов управления. На стороне сервера возможен доступ до всех классов .NET Framework, что позволяет интегрироваться со множеством служб. Элементы управления ASP.NET предлагают богатый набор функциональности.




Рис.1. Базовая архитектура ASP.NET

Модель кода ASP.NET представляет собой комбинацию кода разметки (HTML), элементов управления ASP.NET и кода на любом из языков программирования, поддерживаемых .NET Framework.

Разметка и код ASP.NET размещаются в файле .aspx, а код С# или другого языка программирования, добавляемый для настройки поведения веб-формы, может находиться либо в этом же файле в блоке

Процесс обработки веб-формы ASP.NET выглядит следующим образом.


  1. Процесс ASP.NET просматривает страницу и определяет, какие объекты должны быть созданы для того, чтобы сконструировать экземпляр модели страницы.

  2. Динамически создаётся базовый класс страницы, включая члены для элементов управления страницы вместе с их обработчиками событий.

  3. Дополнительный код, включённый в страницу .aspx, вместе со всеми дополнительными файлами кода страницы, комбинируется с этим базовым классом для завершения построения объектной модели.

  4. Полный код компилируется и помещается в кеш для обработки последующих запросов.

  5. Генерируется HTML(или WML)-код, который возвращается пользователю.

На страницы ASP.NET можно добавлять три типа элементов управления:

  • серверные элементы управления HTML;

  • серверные элементы управления Web;

  • настраиваемые и пользовательские элементы управления.

Дополнительные возможности по созданию пользовательского интерфейса для веб-клиентов привносит технология ASP.NET AJAX [4]. Она представляет собой реализацию каркаса Ajax от Microsoft.

Сама по себе технология Ajax скорее является комбинацией других технологий (HTML/XHTML, CSS, DOM, JavaScript, XML, XMLHttpRequest), обеспечивающая возможность реализовывать богатый потенциал современных браузеров.

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


  1. Реализация уровня процессов предметной области с использованием Windows Workflow Foundation

Windows Workflow Foundation (WF) представляет модель, в которая позволяет определять и выполнять процессы с использованием набора строительных блоков – действий (activities). Создавать эту модель можно с помощью визуального конструктора, создавая тем самым шаблон рабочего потока.

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



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


  1. Использование Windows Communication Foundation при построении распределенных систем

Windows Communication Foundation (WCF) представляет собой новую коммуникационную технологию, включающую все средства её предшественников, и комбинирует их в одной программной модели.

Декларативное поведение. Вместо требования наследования от базового класса (такое требование присутствует в .NET Remoting и Enterprise Services) для определения служб могут использоваться атрибуты. Это подобно Web-службам, разработанным на ASP.NET.

Коммуникационные каналы. Хотя технология .NET Remoting очень гибка в отношении коммуникационного канала, WCF - хорошая альтернатива, поскольку обеспечивает аналогичную гибкость. WCF представляет множество каналов для взаимодействия с использованием HTTP, TCP или канала ICP.

Хостинг компонентов и служб. Точно так же, как вы можете использовать настраиваемые хосты с .NET Remoting и Web Services Enhancements (WSE), можно развернуть службу WCF в исполняющей системе ASP.NET, служб Windows, процессе COM+ или просто в приложении Windows Forms для одноранговых вычислений.

Расширяемость. .NET Remoting имеет существенную и гибкую возможность расширения. Здесь не только можно создавать собственные каналы, форматировщики и прокси, но также внедрять функциональность внутрь потока сообщений на клиенте и сервере. WCF предоставляет подобную расширяемость; однако здесь расшения создаются за счет применения заголовков SOAP.

Инфраструктура безопасности. Для реализации независимых от платформы Web– служб должна использоваться стандартизованная среда безопасности. Предлагаемые стандарты реализованы в WSE 3.0 и продолжены в WCF.

Поддержка предшествующих технологий. Вместо полной перезаписи распределенного решения для использования WCF последнюю можно интегрировать с существующей технологией. Канал, предоставленный WCF, взаимодействует с обслуживаемыми компонентами с применением DCOM. Web – службы, разработанные на ASP.NET, также могут быть интегрированы.


  1. Возможность использования Windows CardSpace для управления идентификацией пользователей

Windows CardSpace (WCS) — технология, которая представляет собой основанное на отраслевых стандартах решение для управления идентификацией при работе с Интернетом. WCS — это способ простой и безопасной идентификации пользователей при перемещении между ресурсами Интернета без необходимости повторного ввода имен и паролей.

В отличие от ранее используемых технологий унифицированной идентификации (например, Microsoft Passport), WCS управляет непосредственно пользователями и приложениями, с которыми устанавливается контакт (а не из централизованного ресурса). Имеется возможность применения разных схем и уровней сложности для идентификации, например, при доступе на Web-форумы, или для проведения банковских операций.




  1. Использование шаблонов проектирования

Шаблон проектирования (паттерн, pattern) — это эффективный способ решения характерных задач проектирования, в частности проектирования компьютерных программ [5]. Шаблон не является законченным образцом проекта, который может быть прямо преобразован в код. Он представляет собой описание или образец для того, как решить задачу, таким образом, чтобы её можно было использовать в различных ситуациях. Объектно-ориентированные шаблоны зачастую показывают отношения и взаимодействия между классами или объектами без определения того, какие конечные классы или объекты приложения будут использоваться. При этом алгоритмы не рассматриваются как шаблоны, так как они решают задачи вычисления, а не проектирования.

Основная польза каждого отдельного шаблона состоит в том, что он описывает решение целого класса абстрактных проблем. Также тот факт, что каждый шаблон имеет свое имя, облегчает дискуссию об абстрактных структурах данных (ADT) между разработчиками, так как они могут ссылаться на известные шаблоны. Таким образом, за счёт шаблонов производится унификация терминологии, названий модулей и элементов проекта.

Правильно сформулированный шаблон проектирования позволяет, отыскав удачное решение, многократно его использовать. В отличие от идиом, шаблоны независимы от применяемого языка программирования.

Существуют следующие основные типы шаблонов проектирования:



  • основные шаблоны (Fundamental);

  • порождающие шаблоны проектирования;

  • структурные шаблоны (Structural);

  • поведенческие шаблоны (Behavioral);

  • шаблоны параллельного программирования (Concurrency).

Помимо них существует ряд других шаблонов:

  • шаблоны предоставление доступа к хранимой информации;

  • аналитические шаблоны, описывают основной подход для составления требований для программного обеспечения (requirement analysis) до начала самого процесса программной разработки;

  • коммуникационные шаблоны, описывают процесс общения между отдельными участниками/сотрудниками организации;

  • организационные шаблоны, описывают организационную иерархию предприятия/фирмы;

  • «анти-шаблоны» (Anti-Design-Patterns) описывают, как не следует поступать при разработке программ, показывая характерные ошибки в дизайне и в реализации.




  1. Платформенные решения для построения распределенных систем

Здесь в качестве примера предлагается рассмотреть уже готовые архитектурные решения от корпорации Microsoft: Microsoft Connected Services Framework и Microsoft Unified Communications.

Платформа Microsoft Connected Services Framework обеспечивает общие сервисные функции, необходимые для связывания воедино сетей и служб доставки информационного наполнения.

С помощь данной платформы решается проблема интеграции различных архитектур, на базе которых работают корпоративные и телекоммуникационные инфраструктуры, с использованием более гибкой абстрагирующей архитектуры и единой системы коммуникаций с высоким уровнем интероперабельности. Платформа Connected Services Framework решает названную проблему, предлагая заказчикам сервисно-ориентированную архитектуру SOA (Service-Oriented Architecture) и технологию web-служб XML в качестве единой коммуникационной среды.

Открытая архитектура создания новых видов услуг, реализованная в этой платформе, может использоваться сторонними разработчиками для быстрого создания, развертывания и администрирования базовых Leaf-служб («листья» в древовидном иерархическом представлении) и сложных Composite-служб (комбинированные сервисы).

Платформа Microsoft Connected Services Framework помогает в улучшении экономического эффекта от внедрения новых услуг, а также в снижении сложности и рисков развертываемых систем. Она представляет собой основу, которую можно доработать для решения необходимого спектра задач.

Использование интегрированной среды разработки Microsoft Visual Studio .NET в комбинации с платформой Connected Services Framework позволяет быстро создавать совершенно новые типы услуг. Услуги можно создавать на основе собственного кода, а можно использовать надстройки для уже опубликованных web-служб, в том числе службы коротких сообщений SMS, управления трафиком, для биллинга и др.

Платформа Microsoft Connected Services полностью готова к встраиванию в существующие среды OSS/BSS, а также в разного рода сетевые системы, с использованием неразрушающих существующую архитектуру web-служб или других стандартных протоколов.

Устраняет необходимость использования единой для всех услуг структуры биллинга, которую иногда называют «one size fits all» (всех «под одну гребенку»). Транзакционная, подписная, повременная и пакетная – любые виды оплаты можно эффективно контролировать с помощью инструментов платформы Connected Services Framework. Высокая скорость и гибкость реализации системы биллинга создает дополнительные возможности для экспериментов и оптимизации бизнес-моделей.

Благодаря использованию структурированных интерфейсов для работы со сторонними поставщиками информационного наполнения и услуг, платформа Connected Services Framework позволяет использовать материалы в режиме реального времени.



Microsoft Unified Communications – это единая платформа объединенных коммуникаций, которая внедряет ориентированные на пользователей, интуитивно понятные и экономичные решения в рабочую среду. Основная цель решения – кардинально поднять эффективность работы людей как главного ресурса бизнеса. Для корпоративных пользователей переход на платформу объединенных коммуникаций Microsoft означает возможность управления всеми средствами взаимодействия в рамках Microsoft Office в одной системе с единым входом. Для ИТ-специалистов особенно актуальны такие конкурентные преимущества Microsoft Unified Communications, как экономия затрат на эксплуатацию, упрощение инфраструктуры, высокая степень безопасности.

В основе платформы объединенных коммуникаций корпорации Microsoft лежат такие технологии корпорации Microsoft: Microsoft Exchange Server, Microsoft Office Live Meeting, Microsoft Office Live Communications Server 2005 и Microsoft Office Communicator 2007. Поскольку новые версии этих продуктов входят в состав выпуска Microsoft Office 2007, предлагается единая платформа объединенных коммуникаций, которая внедряет ориентированные на пользователей, интуитивно понятные и экономичные решения в рабочую среду сервера базы данных и объединяет электронную почту, обмен мгновенными сообщениями, передачу речи (включая телефонную связь) и видео в единую интуитивную систему, ориентированную на пользователей, а не на технологии.



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

Заключение


Несомненно, одной из основных проблем разработки программных систем на сегодняшний день является построение распределенных систем. Разработчики современного программного обеспечения поддерживают трехуровневую архитектуру таких систем, причем для реализации каждого из уровней предлагается как минимум одна технология. Также помимо технологических решений также предлагаются уже готовые платформы для создания распределенных систем.
Список использованных источников

  1. Таненбаум Э. Распределенные системы: принципы и парадигмы. – СПб: Питер, 2003.

  2. Иванова Г.С. Технология программирования: Учебник для ВУЗов. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2002.

  3. Хандхаузен Р. Знакомство с Microsoft Visual Studio 2005 Team System – СПб: Питер, 2006.

  4. Нейгел К., Ивьен Б., Глинн Д., Скиннер М., Уотсон К. C# 2005 и платформа .NET 3.0 для профессионалов. – М.: ООО «И.Д.Вильямс», 2008.

  5. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приёмы объектно-ориентированного проектирования. Паттерны проектирования. – СПб.: Питер, 2007.


База данных защищена авторским правом ©infoeto.ru 2022
обратиться к администрации
Как написать курсовую работу | Как написать хороший реферат
    Главная страница