Net развитие платформы windows которое позволяет осуществлять структурное проектирование

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

Четыре основные аспекта

Хотелось бы выделить четыре аспекта в подходе. NET как платформы для разработки корпоративных приложений:

1) концепция, т. е. общий подход;

2) вычислительная модель – в ее основе лежит достаточно формальная математическая модель. Это некая более реальная реалистичная формализация, но тем не менее тоже фактически модель вычисления на компьютере достаточно общего вида. Так же, как в Java-подходе, имеется виртуальная Java-машина, которая работает на любой платформе, так и здесь есть виртуальная машина высокого уровня, в терминах которой компилируется код на различных языках программирования, но эта платформа ограничена множеством ОС Windows;

3) технологическая платформа;

4) инструментальная средства Visual Studio.NET.

Достаточно важным является подход к реализации системы управления этой виртуальной машиной, которая называется Common Language Runtime (CLR) и подразумевает выполнение компонентов программы, написанных на различных языках. Платформа включает среду реализации, среду вычисления с точки зрения абстрактных (виртуальных) машин и. NET Framework общей надстройки, которая представляет собой семейство базовых системных классов. При этом система типов также является достаточно универсальной, т. е. общей common type system (CTS). По сути, с одной стороны, это система типов, которая принята в C#, а с другой – в эту систему типов подгружается на самом деле система типов любого языка программирования, который написан для этой среды.

Одним из достаточно ранних курсов, реализованных в Санкт-Петербургском государственном университете для. NET, является курс создания компилятора для. NET. Он был написан для студентов второго курса, которые за один семестр могли создать компилятор некоего подмножества языка C# для. NET. То есть речь идет о том, что не только на тех языках, которые реализованы для. NET, но и вообще на этой платформе возможно реализовать произвольный язык, если правильно погрузить его в термины виртуальной машины, и, конечно, типы языка, каким бы он ни был, будут оттранслированы в семейство CTS.

Еще одним важным принципом реализации концепции. NET является предоставление ПО как сервиса. На самом деле эта идеология присуща не только Microsoft, но и Java или подходу IBM SOA, но в рамках подхода. NET есть множественные реализации, которые связаны с различным образом организованными сервисами: это веб-сервисы, технология Remoting, более поздняя технология WCF и др., скажем ASP, технологии, связанные с веб-формами, и целый ряд других технологий, которые предназначены для реализации ПО как сервиса и распространении SOA по сети Интернет.

Первое, что приходит на ум при словах «распространение по Интернету», – это вирусы. В этой связи нужно сказать, что важным акцентом после известных событий 11 сентября для Microsoft является безопасность. Платформа. NET во многом ориентирована на реализацию этого принципа безопасности, и компоненты, которые создаются в рамках платформы. NET, учитывают это.

Одним из направлений реализации и принципом подхода SDL (Secure Development Lifecycle) является Seсure by Design, т. е. собственно проектирование ПО ведется таким образом, что оно является изначально безопасным. Во многом на это нацелена идеология. NET и ее компонентная ориентированность механизма сборок assembler, т. е. самодостаточных компонентов для разворачивания ПО, который является основой идеологии. NET и защищен такими средствами, как цифровая подпись, имя автора и версии сборки и целый ряд других аспектов, позволяющих обеспечивать высокую безопасность создаваемого ПО как покомпонентно, так и в целом для корпоративных приложений, строящихся на основе интероперабельности – постоянно взаимодействующих и меняющихся объектов.

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

Прежде всего речь пойдет о технологии Windows Forms и Web Forms, достаточно важных технологиях создания, в том числе и корпоративных приложений, которые обеспечивают стандартизацию пользовательских интерфейсов и взаимодействие в среде Интернет на основе этих интерфейсов. Конечно, мы посмотрим на. NET. Отчасти в сравнении с Java весь San Microsystems тоже имеет достаточно древний и апробированный подход, который называется EJB, по сути, компонентное проектирование тоже на основе виртуальной машины, и даже в различных ОС, не только Windows. Но с языковой точки зрения интероперабельность – подход немного беднее. Мы обсудим некоторые параллели, преимущества и недостатки. NET, которые выявлены и существуют, в том числе и в аспекте проектирования корпоративных приложений.

Что такое Microsoft.NET

Не совсем верно рассматривать. NET как исключительно технологическое средство, платформу. По сути, это достаточно комплексная идеология проектирования ПО, в том числе и корпоративного типа.

NET включает следующие основные аспекты (послойно, от более абстрактного уровня к более конкретному):

1) идеология проектирования и реализации программного обеспечения;

2) модель эффективной поддержки жизненного цикла прикладных систем;

3) унифицированная, интегрированная технологическая платформа;

4) современный, удобный в использовании, безопасный инструментарий для создания, размещения и поддержки программного обеспечения.

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

Кроме того, это модель, в том числе и математическая, достаточно эффективной поддержки ЖЦ программных систем – от концептуальной постановки задачи проектирования до реализации, внедрения, разворачивания по сети Интернет одним кликом приложения и сопровождения. Это технология, обеспечивающая унифицированное проектирование с точки зрения использования открытых протоколов и средств взаимодействия SOA, HTTP, XML, UDDI, WSDL, других стандартов и, наконец, это современный, удобный в использовании и безопасный инструментарий командной разработки больших систем, который поддерживает все этапы ЖЦ – создания, разворачивания, размещения и сопровождения поддержки ПО.

Итак, рассмотрим более подробно основные аспекты. NET.

В чем состоит видение Microsoft этой идеологии?

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

Идеология и основные принципы. NET

NET как идеология (vision) – это:

1) легкость развертывания приложений в глобальной среде Интернет;

2) экономичная разработка программного обеспечения;

3) бесшовная, гибкая интеграция программных продуктов и аппаратных ресурсов;

4) предоставление программного обеспечения как сервиса;

5) новый уровень безопасности и удобства использования. Во-первых, само обозначение. NET говорит о том, что эта технология ориентирована на Интернет, на открытую среду взаимодействия компонентных приложений на глобальную среду, это веб-браузер, который работает на различных программно-аппаратных платформах – и смартфоны, и коммуникаторы, и при этом обеспечивается доступ к ресурсам в неких центрах данных, если речь идет о корпоративных системах.

1. Важным аспектом является легкость разворачивания приложения в глобальной среде Интернет. На сегодня в Microsoft реализован инструментарий ClickOnce, который позволяет осуществить разворачивание программных системы одним щелчком мыши.

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

3. Также важным идеологическим аспектом. NET является интеграция программных продуктов и аппаратных ресурсов, которую можно охарактеризовать как бесшовную, гибкую. Вообще, если рассматривать производство ПО как задачу, то можно заметить, что изначально это было искусство, т. е. фактически ручное изготовление штучного товара. Позже наступил период, когда кустарей-одиночек сменили программные проектные команды, создающие ПО с использованием более серьезного инструментария. В настоящее время существующие сборочные конвейеры, такие как Visual Studio.NET и др., позволяют во многом стандартизировать режим и на основе стандартных компонентов вести сборку очень сложных систем, включающих сотни тысяч индивидуальных программных моделей, достаточно сложно взаимодействующих друг с другом. Сегодня все, что строится в мире ПО, во многом связано с интеграцией, т. е. в идеале новое ПО не производится, принципиально новая функциональность даже при создании нового продукта составляет от силы 10–15 %, все остальное – это уже ранее использованное решение, которое просто повторно применяется, и интеграция новых функциональных моделей компонентов с уже реализованными частями, фрагментами программ продуктов.

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

5. Еще два важных аспекта идеологии. NET – новый уровень безопасности и удобства использования.

По поводу удобства: Microsoft удалось завоевать достаточно большое количество пользователей во многом потому, что ОС, которые она предоставляет, являются достаточно удобными с точки зрения удобства пользования (usability) – это хорошие средства, позволяющие достаточно быстро решать сложные или типовые задачи одним щелчком или с помощью мастеров для решения типовых задач. В Microsoft одна из самых сильных команд специалистов по usability. И многие пользователи уже привыкли к интерфейсу Microsoft.

Безопасность – это стратегический приоритет корпорации, и, конечно, NET как идеология не может не отмечать важность этого приоритета и широко его применять.

NET как вычислительная модель

1. Компонентный подход как развитие объектно-ориентированной модели.

2. Универсальная система типизации: «всякая сущность есть объект»; унификация данных и метаданных.

3. Строго иерархическая организация кода, пространств имен и классов.

4. Универсальный интерфейс. NET Framework (включая поддержку различных подходов к программированию).

5. Высокая вариативность экземпляров реализации (в частности, на основе веб-сервисов).

Рассмотрим особенности вычислительной модели работы. NET, как подхода к созданию, в том числе больших корпоративных систем.

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

Еще одним важным аспектом вычислительной модели является универсальная или обобщенная система типизации Common Type System. Здесь реализуется достаточно инновационный подход Microsoft, который сводится к декларации, что каждая сущность есть объект. То есть речь идет о чисто объектно-ориентированном подходе и попытке реализовать эту идею, а также об унификации данных и метаданных. Во всяком случае появляется достаточно хорошее средство использования метаданных. Репозиторий метаданных реализован достаточно эффективно, в частности, следует отметить средство Reflection, которое позволяет восстановить код по метаданным класса. Сборка или представление компонента включают в себя все метаданные, которые необходимы для разворачивания этого компонента как части программного продукта.

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

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

Для. NET реализован целый ряд языков программирования, которые транслируются во внутреннюю среду абстрактной или виртуальной машины. NET. Это прежде всего родной язык. NET Си#; это F#, который, по сути, является развитием языка SML, т. е., с одной стороны, он во многом является функциональным языком, но с другой – реализует и некоторые аспекты ООП, поскольку функция является объектом модели и язык моделирует объектный подход; ряд языков Cobol, Fortran, которые использовались в большом количестве унаследованных проектов, и. NET, позволяет портировать проекты унаследованных приложений, в том числе корпоративных, которых очень много.

Языки логического программирования, такие как Prolog, поддерживаются в. NET, и любой новый или известный язык в виде компилятора для. NET можно реализовать самостоятельно.

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

Перечислим основные особенности технологической платформы. NET.

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

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

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

Независимо от языка программирования и программной модели поддерживается унификация доступа к библиотекам за счет общего интерфейса с виртуальной машиной. NET. Здесь используется аналог API-интерфейса, т. е. открытого интерфейса на основе классов, который можно достаточно гибко настраивать.

Также важно отметить, что. NET во многом соответствует современным технологическим стандартам. Язык C# сейчас фактически стандартизован европейской ассоциацией стандартов, и во многом используются стандартные протоколы обмена и стандарты таких данных, как HTTP, XML, UML, SOAP, протоколы взаимодействия.

Как инструментальное средство, NET является достаточно универсальным, поскольку поддерживает многоязыковую среду Common Language Runtime (CLR), которая, как упоминалось ранее, поддерживает разработку компонентов на различных языках. При этом важной особенностью является возможность построения фрагментов проекта на наиболее подходящих для этого языках.

При реализации бизнес-логики и интерфейса их, конечно, необходимо разделять. Бизнес-логику лучше реализовать на Прологе как набор условий и логических альтернатив, другой подход – сделать это на функциональном языке, таком как F#, а интерфейс можно достаточно легко реализовать на C#, который включает все механизмы взаимодействия с Windows и библиотеками. NET Framework наиболее быстрым и прозрачным способом, т. е. различные компоненты достаточно быстро реализуются.

И в этом смысле у. NET практически нет альтернатив, такого большого спектра языков и разнообразия подходов больше не найти. Причем сервисные средства. NET, такие как отладка, анализ кода и т. д., поддерживаются для всех без исключения языков, реализованных в рамках Visual Studio. То есть на каком бы языке ни велась разработка, программист получает все сервисные возможности, интегрированные в среду разработки. Как было сказано ранее, можно разрабатывать собственные языки программирования, это достаточно интересно и актуально. Одним из современных направлений развития программной инженерии является создание программного обеспечения на основе DSL – предметно-ориентированных языков, т. е. языков для приложений того или иного рода, той или иной предметной области.

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

Посмотрим на архитектурную схему: сбоку, интегрируя все доступные сервисы (рис. 8.1), начиная с уровня естественного языка, с уровня исходного кода на языке программирования, находится Visual Studio.NET – как средство разработки, оно интегрирует все особенности платформы. Основой для программирования являются различные языки программирования. Работа происходит в исходном тексте, в стандартном редакторе Visual Studio.NET, при этом на любом языке. Типы этого языка, какими бы своеобразными они ни были, транслируются автоматически при трансляции кода в стандартные системные типы. NET, т. е. имеют место трансляции в типы Common Language Specification (CLS). Далее используются на уровне пользовательского интерфейса различные веб-формы, веб-сервисы, скажем, средства SP.NET Windows Forms, технологии, связанные с. NET Remoting, и т. д. На уровне взаимодействия с данными используются технологии ADO.NET и т. д., слабоструктурированные данные могут преобразовываться по средствам форматов в стандарты XML. Естественно, все взаимодействие со средой выполнения строится на основе базовых классов. NET Framework, которые едины для любого языка программирования, строятся на основе компонентов, берущих свое начало в базовых классах. И все трансляции осуществляются в термины ассемблера высокого уровня – это ассемблер Common Language Runtime (CLR), т. е. виртуальной машины. NET (рис. 8.2).

Рис. 8.1. Архитектурная схема. NET Framework и Visual Studio.NET

Рис. 8.2. Схема компиляции в Common Language Runtime

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

Естественно, трансляция осуществляется в терминал языка MSIL – это ассемблер высокого уровня, который в 3–5 раз плотнее, чем обычный ассемблер, если рассматривать, например, процессор Intel 8086 или ассемблер Z80.

Рис. 8.3. Схема выполнения CLR

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

Основные возможности, которые предоставляет среда CLR:

• поддержка стандартных типов и правил создания новых типов;

• межъязыковая интеграция:

– включение в код на одном ЯП классов на другом ЯП;

– обработка исключений из программы на одном ЯП программой на другом ЯП;

– и т. д.

• единый набор библиотек классов для всех поддерживаемых ЯП;

• самоописываемые компоненты – не требуют дополнительных файлов (IDL, TLB, Proxy/Stub и т. п.); компонент является самодостаточным, имеет всю необходимую информацию для встраивания его в программный продукт и разворачивания;

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

• сервисы безопасности (запрет неавторизованного доступа к ресурсам для пользователей – Role-Based Security, доступ на основе безопасности кода – Code-Based Security и автор кода, версия сборки и др.).

Рассмотрим работу универсальной системы типизации (рис. 8.4).

В основе лежит понятие базисного типа, который в. NET называется System.Object (это очень похоже на Java). Он делится на две категории – типы-ссылки и типы-значения, при этом типы-значения и типы-ссылки различным образом хранятся и используются. Типы-значения при создании экземпляра класса каждый раз вводятся в память и т. д.

Типы-ссылки – это классы, интерфейсы, массивы, делегаты и т. д.

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

Рис. 8.4. Универсальная система типизации (UTS)

В основе архитектуры. NET лежит понятие «сборка».

Сборка кода (assembly) – группа ресурсов, типов и метаданные, описывающие эти ресурсы и типы, необходимые для функционирования компонентов. Сборка реализуется как единое целое. Сборка – это самодостаточная единица кода.

К особенностям сборок кода прежде всего относятся следующие:

• сборка распространяется и реализуется как единое целое;

• метаданные сборки содержат информацию о зависимостях между ресурсами, версиях и т. п.;

• сборка характеризуется номером версии (последняя, специфичная и т. п.).

На уровне сервисов архитектура выглядит следующим образом:

• принцип. NET – «ПО как сервис»;

• следующий уровень архитектуры – уровень сервисов (рис. 8.5);

• сервисы доступны на уровне классов любого ЯП для. NET.

На нижнем уровне архитектуры существуют системные сервисы Microsoft Windows. На более высоких уровнях – различные надстройки, сервисы для работы с данными, сервисы интерфейсные и т. д. Сервисы. NET находятся на более высоком уровне, чем сервисы для Windows.

Рис. 8.5. Архитектура. NET – уровень сервисов

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

Абстрактная машина. NET. CLR располагается над уровнем сервисов ОС (Windows CE, Windows ME, Windows 2000, Windows.NET).

Системные сервисы располагаются над CLR (доступ – через библиотеки классов): доступ к функциям ОС, управление данными, отладка, другие сервисы и т. п.; еще выше – компоненты и сервисы для разработки веб-узлов, веб-сервисов, пользовательских интерфейсов (GUI).

Веб-приложения – архитектура клиент – сервер с доступом пользователей к данным через веб-браузер (технология ASP.NET).

Распределенные приложения на основе иных механизмов удаленного взаимодействия компонентов XML Web Services – на основе открытых стандартов, NET Remoting – на основе внутренних протоколов Microsoft и целый ряд других подходов.

По сути, NET представляет собой виды базовых классов для сервисов:

• доступ к сервисам ОС (Windows CE, ME, 2000, NET);

• доступ к графическим функциям (двумерная графика, обработка изображений, шрифты, в том числе технология ClearType, интеграция с GDI и DirectX);

• сетевые функции;

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

• глобализация;

• криптография;

• доступ к данным (библиотека классов ADO+ и OLE DB-драйверы);

• классы для средств разработки (отладка, трассировка, управление ресурсами, компиляция, установка ПО, протоколирование событий и т. д.);

• другие классы (в том числе поддержка протокола SOAP).

Назначение Windows Forms – обеспечение разработки традиционных Windows-приложений на основе сервисов Microsoft.NET и соответствующих библиотек классов.

Особенности разработки – унификация доступа:

• к библиотекам классов;

• механизмам распространения сервисов;

• механизмам поддержки версий;

• сервисам безопасности.

Вывод: создание Windows-приложений в архитектуре Microsoft.NET дает разработчикам существенные преимущества, поскольку огромное количество классов уже реализовано, и остается заполнить пробелы только с реализацией бизнес-логики по сравнению с традиционным API-ориентированным подходом.

Назначение Web Forms — основа веб-сервисов и веб-приложений в архитектуре Microsoft.NET.

Особенность – программная модель основана на ASP+ – новом поколении активных серверных страниц (эволюция технологии ASP – более 1 млн разработчиков).

Идея веб-форм (из Visual Basic 6): отделение логики веб-приложения от интерфейса (за счет объединения в рамках формы ASP– и HTML-кода).

Преимущества:

• более строгая структурированность приложений;

• широкий спектр (серверных) интерфейсных элементов;

• простая и мощная объектная модель;

• легкость разработки (и масштабирования) веб-приложений.

Основное средство для разработки приложений и сервисов в архитектуре. NET – Microsoft Visual Studio.NET (современная версия Microsoft Visual Studio).

Вот какого рода веб-сервисы можно создавать в. NET, так выглядит общая архитектура (рис. 8.6).

Рис. 8.6. Веб-сервисы в. NET

Веб-сервисы в. NET:

1) программируемые компоненты приложений, доступные посредством стандартных интернет-протоколов;

2) центральная часть архитектуры. NET;

3) распределяют функциональность по глобальной сети;

4) строятся на существующих и развивающихся стандартах: HTTP, XML, SOAP, UDDI, WSDL.

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

Поддерживаемые форматы: HTTP, XML, SOAP, UDDI, WSDL и др.

Компонентное программирование в. NET. Компоненты – это:

• независимые, повторно используемые и тиражируемые модули, из которых строятся приложения;

• в целом более крупные, чем объект (объекты – конструкции уровня ЯП);

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

• независимы от языка реализации.

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

Компонентная объектная модель (COM):

• основной стандарт Microsoft для компонентов;

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

• основа для ActiveX, OLE и многих других технологий взаимодействия;

• поддерживается в Visual Basic, C++, NET и др.

Модель Java Beans:

• основной стандарт Sun Microsystems для компонентов;

• зависима от языка реализации.

Сравнение компонентно– и объектно-ориентированного программирования.

Основные понятия объектно-ориентированного программирования:

• класс (class);

• интерфейс (interface).

Основные понятия компонентно-ориентированного программирования:

• свойство (property);

• событие (event);

• сборка (assembly).

Говоря об основных возможностях. NET, следует отметить, что кроме плюсов существуют и значительные недостатки.

Наиболее существенные недостатки. NET:

1) высокие требования к аппаратному обеспечению (минимум 256M RAM, 10G HDD для работы с Microsoft Visual Studio.NET);

2) сложности работы с некоммерческими релизами программного обеспечения (некоторая неустойчивость, отсутствие полномасштабной документации); сервис – это не всегда надежно и предсказуемо. Не всегда имеется документация. Некоторые языки не до конца стандартизованы, а некоторые не до конца реализованы как продукты;

3) поддержка ряда теоретически интересных и практически полезных языков программирвоания не в полном объеме (SML для Visual Studio.NET – в процессе реализации);

4) инструментарий. NET и компиляторы для языков программирования не ратифицированы по международным стандартам.

Платформа. NET – выводы.

1. Стратегическая идеология – это и технологическая платформа, и подход, который определяет стратегию Microsoft на ближайшее десятилетие.

2. Несомненное качественное превосходство над аналогами (Borland Delphi, Microsoft Visual Studio и др.) за счет:

• интероперабельности и межъязыкового взаимодействия;

• многоуровневой безопасности, SDL, безопасности на уровне компонентов;

• интеграции с веб-сервисами;

• облегчения разворачивания и использования.

3. Завершенность решения для широкого коммерческого использования в силу концептуальной новизны и грандиозности проекта.

4. NET – развитие платформы Windows, которое позволяет осуществлять компонентное проектирование.

5. NET – фундамент для создания корпоративных приложений нового поколения.

6. Основа. NET – принцип компонентной интеграция приложений на уровне сервисов, взаимодействующих посредством языка XML и протокола SOAP.

7. Стратегическая цель. NET – создание программной инфраструктуры для разработки и функционирования распределенных приложений на базе интернет-стандартов.

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

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

Основные компоненты архитектуры .NET

Давайте рассмотрим основные компоненты один за другим.

Спецификация общего языка (CLS)

Спецификация общего языка (CLS) определяет набор правил и рекомендаций, которым должны следовать языки программирования, чтобы быть совместимыми в среде .NET. Это гарантирует, что код, написанный на разных языках, может беспрепятственно взаимодействовать, способствуя независимой от языка разработке.

Система общего типа (CTS)

Система общих типов (CTS) формирует основу для определения типов данных и взаимодействия с ними в рамках .NET Framework. Он устанавливает согласованный тип системы, которая обеспечивает обмен данными и совместимость на разных языках.

Библиотека классов .NET Framework (FCL)

Библиотека классов .NET framework (FCL) — это набор готовых классов, методов и компонентов, которые разработчики могут использовать для ускорения разработки приложений . FCL предлагает богатый набор функций для решения сложных задач: от обработки файлов до подключения к базе данных.

Общеязыковая среда выполнения (CLR)

В основе архитектуры .NET лежит среда Common Language Runtime (CLR). Эта среда выполнения управляет выполнением кода, распределением памяти и обработкой ресурсов. Он предоставляет такие функции, как сбор мусора, обработку исключений и безопасность кода, обеспечивая надежную и эффективную работу приложений.

Общеязыковая инфраструктура (CLI)

Инфраструктура общего языка (CLI) стандартизирует процесс выполнения и разработки приложений .NET. Он включает в себя JIT-компилятор, который преобразует код промежуточного языка (IL) в собственный машинный код, обеспечивая кросс-платформенную совместимость.

Управляемый и неуправляемый код: понимание дихотомии

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

Управляемый код: использование возможностей CLR

Управляемый код находится в защитных рамках среды Common Language Runtime (CLR). Эта среда предоставляет ряд преимуществ, включая автоматическое управление памятью, безопасность и обработку исключений.

  • Автоматическое управление памятью. Управляемый код освобождает разработчиков от сложностей с распределением памяти. CLR занимается распределением памяти, отслеживанием времени существования объектов и освобождением ресурсов посредством сборки мусора. Этот механизм повышает стабильность приложения и минимизирует ошибки, связанные с памятью.
  • Безопасность. Управляемый код использует механизмы безопасности CLR, применяя безопасность доступа к коду (CAS) для предоставления разрешений на основе уровней доверия. Типовая безопасность предотвращает распространенные ошибки программирования, повышая безопасность приложений.
  • Обработка исключений. Управляемый код получает преимущества от надежной обработки исключений CLR. Разработчики могут реализовать структурированную обработку ошибок с помощью блоков try-catch, повышая устойчивость кода и плавное восстановление в непредвиденных сценариях.

Неуправляемый код: выход за рамки CLR

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

  • Прямое взаимодействие с системой. Неуправляемый код отлично подходит для сценариев, требующих прямого взаимодействия с системой. Такие языки, как C и C++, обеспечивают манипулирование памятью, доступ к оборудованию и интеграцию API на системном уровне.
  • Интеграция устаревшего кода. Неуправляемый код устраняет разрыв между современными приложениями .NET и устаревшими системами. Вызов платформы (P/Invoke) позволяет управляемому коду вызывать функции из неуправляемых DLL, что упрощает интеграцию.
  • Ручное управление ресурсами. Неуправляемый код требует ручного управления памятью, что обеспечивает контроль и гибкость. Однако этот элемент управления отвечает за предотвращение утечек памяти и других ошибок.

Выбор правильного типа кода

Выбор между управляемым и неуправляемым кодом зависит от требований приложения.

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

Уровни архитектуры приложения .NET.

Архитектура приложения .NET обычно состоит из трех уровней:

Уровень представления

Уровень представления фокусируется на взаимодействии с пользователем и дизайне интерфейса. Он включает в себя элементы графического пользовательского интерфейса (GUI), элементы управления и компоненты взаимодействия с пользователем. Разработчики используют такие инструменты, как Windows Presentation Foundation (WPF), для создания визуально привлекательных и адаптивных пользовательских интерфейсов.

Уровень бизнес-логики

Уровень бизнес-логики инкапсулирует основные функции приложения. Он содержит алгоритмы, правила и рабочие процессы, которые определяют, как данные обрабатываются и манипулируются ими. CLR гарантирует, что уровень бизнес-логики работает эффективно и безопасно.

Уровень доступа к данным

Уровень доступа к данным управляет взаимодействием с базами данных и системами хранения данных. Это позволяет приложению извлекать, изменять и хранить данные, сохраняя при этом целостность и безопасность данных. ADO.NET предоставляет необходимые классы и методы для беспрепятственного взаимодействия с данными.

Особенности архитектуры .NET Framework

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

Управление памятью и сбор мусора

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

Система общего типа (CTS)

Система общих типов (CTS) обеспечивает беспрепятственное взаимодействие различных языков программирования, поддерживаемых платформой .NET. Он определяет набор правил, которым должны следовать все языки .NET, позволяя объектам, созданным на одном языке, беспрепятственно использоваться другим. Это упрощает повторное использование кода и сотрудничество между разработчиками, использующими разные языки.

Если вы Фаундер и хотите заниматься бизнесом, а не микроменеджментом, ждем вас в блоге Founder HR! Помогаем обрести стабильность в работе с сотрудниками за 2 недели. Подписывайтесь по ссылке! Для всех подписчиков бесплатный чек-лист, чтобы оценить талант рекрутера и выбрать лучшего! Забирайте по ссылке ↪️

Обширная библиотека классов (FCL)

Библиотека классов .NET framework (FCL) — это обширная коллекция готовых классов и компонентов, которые предоставляют широкий спектр функциональных возможностей. Разработчики могут использовать эти классы для выполнения общих задач, таких как файловый ввод-вывод, доступ к данным и взаимодействие с пользовательским интерфейсом, тем самым ускоряя процесс разработки.

Разрешения на безопасность и доступ к коду

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

Языковая независимость и многоязычная поддержка

Платформа .NET поддерживает несколько языков программирования, включая C#, VB.NET, F# и другие. Разработчики могут выбрать язык, который лучше всего соответствует их навыкам и требованиям проекта. Такая языковая независимость способствует повторному использованию кода и позволяет командам эффективно сотрудничать.

Упрощенное развертывание и совместимость версий

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

Поддержка интегрированной среды разработки (IDE)

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

Объектно-ориентированное программирование (ООП)

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

Разработка веб- и облачных приложений

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

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

Платформа .NET предоставляет ряд инструментов для создания визуально привлекательных и интерактивных пользовательских интерфейсов. Windows Presentation Foundation (WPF) позволяет разрабатывать современные и привлекательные настольные приложения, а Windows Forms предлагает традиционный подход к созданию графических пользовательских интерфейсов.

Преимущества архитектуры приложений .NET

Архитектура платформы .NET предлагает несколько убедительных преимуществ для разработчиков и приложений:

Объектно-ориентированная парадигма

Архитектура .NET основана на парадигме объектно-ориентированного программирования (ООП). Этот подход способствует модульности кода, возможности повторного использования и сопровождения, что позволяет разработчикам создавать надежные и масштабируемые приложения.

Упрощенное управление

Страницы, написанные на .NET, по своей сути управляемы, поскольку исходный код и HTML объединены в одном месте. Это упрощает разработку, обслуживание и отладку, увеличивая общий жизненный цикл программного обеспечения.

Разработка, экономящая время

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

Многофункциональный фреймворк

Архитектура .NET представляет собой комплексную структуру с широким набором функций. Эти функции включают автоматическое управление памятью посредством сборки мусора, надежную обработку исключений и безопасное выполнение кода.

Улучшенная согласованность и мониторинг

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

Примеры из реальной жизни: приложения, построенные на архитектуре .NET Framework.

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

Пакет Microsoft Office

Широко используемый пакет Microsoft Office Suite, включающий такие приложения, как Word, Excel, PowerPoint и Outlook, построен на архитектуре .NET. Этот пакет легко интегрирует сложные функции, такие как обработка документов, вычисления в электронных таблицах и управление электронной почтой, обеспечивая при этом удобный интерфейс.

Adobe Креативное Облако

Adobe Creative Cloud, включающий такие известные приложения, как Photoshop, Illustrator и Premiere Pro, использует архитектуру .NET для предоставления передовых инструментов редактирования и дизайна мультимедиа. Эти приложения требуют сочетания сложных функций и гибкого взаимодействия с пользователем, что легко обеспечивает .NET.

Делл Буми

Dell Boomi, ведущая платформа интеграции как услуги (iPaaS), использует архитектуру .NET для предоставления единой платформы для подключения приложений, данных и устройств. Его способность решать сложные задачи интеграции и преобразования данных демонстрирует надежность .NET в корпоративных решениях.

Переполнение стека

Популярное сообщество разработчиков и платформа вопросов и ответов Stack Overflow использует архитектуру .NET для управления огромным количеством пользовательского контента, взаимодействиями и обновлениями в реальном времени. Масштабируемость и оперативность платформы подчеркивают возможности .NET в работе с веб-приложениями с высоким трафиком.

SAP Бизнес Один

Это решение для планирования ресурсов предприятия (ERP) для малого и среднего бизнеса, построенное на платформе .NET. Это приложение органично и эффективно интегрирует различные бизнес-процессы, включая бухгалтерский учет, управление запасами и взаимоотношениями с клиентами.

Изучение будущих тенденций: .NET Core и не только

Эволюция архитектуры .NET является свидетельством ее непреходящей актуальности и адаптируемости в быстро меняющемся технологическом ландшафте. Углубляясь в будущее .NET, важно выделить ключевые достижения, такие как .NET Core и последние версии, включая .NET 5 и .NET 6. Эти версии не только предоставляют расширенные возможности, но и закладывают основу для дальнейшего развития. рост и инновации в разработке приложений .NET.

Представляем .NET Core

.NET Core стал поворотным моментом в экосистеме .NET. Это кроссплатформенная среда с открытым исходным кодом, которая предлагает разработчикам гибкость в создании и развертывании приложений в различных операционных системах, включая Windows, Linux и macOS. Такая кросс-платформенная совместимость расширяет возможности приложений .NET, делая их доступными для более широкой аудитории.

Единая платформа с .NET 5 и .NET 6.

Выпуск .NET 5 положил начало созданию единой платформы, объединяющей лучшие функции .NET Core, .NET Framework и Xamarin. Такая конвергенция упрощает процесс разработки и предоставляет согласованный набор инструментов и API для создания широкого спектра приложений: от веб-приложений и настольных компьютеров до облачных и мобильных приложений.

Повышенная производительность и производительность

В .NET Core и последующих версиях приоритет отдается оптимизации производительности и продуктивности разработчиков. Компиляция «точно в срок» (JIT), компиляция с опережением времени (AOT) и другие улучшения во время выполнения способствуют повышению скорости выполнения и снижению использования памяти. Кроме того, современные инструменты разработки, такие как Visual Studio и Visual Studio Code , предоставляют разработчикам эффективные возможности кодирования, отладки и тестирования.

Контейнеризация и микросервисы

В эпоху контейнеризации и архитектуры микросервисов .NET Core и .NET 5/6 имеют хорошие возможности для поддержки этих современных парадигм. Совместимость Docker и Kubernetes обеспечивает беспрепятственное развертывание и оркестрацию приложений .NET, упрощая управление сложными распределенными системами.

Интеграция искусственного интеллекта и машинного обучения

Будущее разработки приложений тесно переплетено с искусственным интеллектом (ИИ) и машинным обучением (МО). .NET Core и его преемники предлагают библиотеки и платформы, которые облегчают интеграцию искусственного интеллекта и машинного обучения. Разработчики могут использовать такие инструменты, как ML.NET, для включения интеллектуальных функций в свои приложения — от обработки естественного языка до прогнозного анализа.

Облачные и бессерверные архитектуры

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

WebAssembly и кроссбраузерная совместимость

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

Продолжающееся сотрудничество сообщества и отрасли

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

Заключение

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

Мы — ИТ кадровое агентство, которое поможет вам найти разработчиков за менее чем 2 недели. Гарантируем поиск самого сильного кандидата, а не самого дорогого. За 10 лет мы закрыли более 5500 вакансий и собрали более 25 команд с нуля. Вы можете ознакомиться с отзывами наших клиентов о нашем рекрутинговом агентстве. Если вам нужны дополнительные референсы, напишите нам в Telegram.


Платформа .NET Framework – это специальная технология, предназначенная для выполнения различных веб-служб и создания приложений на ОС Windows. Так нам говорит официальный источник Microsoft.

Что все это означает для программиста и обычного пользователя – разберемся в сегодняшней статье.

Что такое .NET?

Первый выпуск .Net Framework состоялся еще в далеком 2002 году. Тогда платформа была разработана как альтернатива Java. Основное отличие .Net заключалось в том, что платформа официально рассчитывалась на работу с операционными системами семейства Microsoft Windows.

Прошло уже целых 20 лет, но .Net до сих пор пользуется популярностью несмотря на то, что есть платформы нового поколения, например .Net Core. Сегодня .Net позволяет использовать одни и те же пространства имен, библиотеки и API для разных языков:

  • C#;
  • Visual Basic;
  • Visual C++;
  • F#.

Когда программист создает программу на одном из этих языков, то в первую очередь ему необходимо подключить пространство имен System. Это позволяет организовать код программы в логические блоки, объединить и отделить от остального кода некоторую функциональность. Если бы не было .Net, то приходилось бы создавать отдельный System для каждого языка программирования, а это бы уже нарушало один из главных принципов программирования: «Не повторяйся».

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться


Зачем нужен .NET?

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

Предположим, что нам нужно установить программу, которая была написана на языке программирования C#. Для нее также потребуется установить и среду для C#. Если нам нужна программа на другом языке, то для нее нужно установить уже другую среду, и так со всеми языками.

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

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

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

Помимо основных языков, фреймворк поддерживает несколько десятков других языков – это Delphi, Cobra, Oxygene и другие. С полным списком вы можете ознакомиться на Википедии.

Как работает .Net?

Принцип работы .Net довольно прост, достаточно разобраться в понятиях CLI, CIL и CLR.

Принцип работы .Net

CLI (от англ. Common Language Infrastructure – общеязыковая инфраструктура) – определяет архитектуру исполнительной системы .NET.

При такой инфраструктуре у каждого языка есть свой компилятор, однако программы компилируются не в нативный код, а в промежуточный байт-код CIL. Если мы напишем небольшую программу, выводящую надпись «Hello, World» на разных языках, то в результате она сформируется в промежуточный байт-код.

Промежуточный байт код

Когда мы запустим такую программу, то ее байт-код передастся в общеязыковую исполняющую среду CLR (Common Language Runtime). Там он уже компилируется в нативный код и начинает выполняться.

Аналогичным образом работают и виртуальные машины Java, но вот только .Net работает гораздо быстрее и может быть использован на персональных ПК, а не только на серверах.

Где используют .NET?

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

Веб-разработка

Веб-приложения – это одна из распространенных групп приложений, которые пишутся под .Net. Особенность заключается в том, что такие приложения работают через браузер и требуют стабильного интернет-соединения.

Сюда могут входить простые одностраничные сайты, но чаще всего это крупномасштабные проекты, требующие больших усилий. Например, Stack Overflow – сайт, известный каждому разработчику.

Для написания веб-приложений под .Net надо знать C#, а также владеть фреймворком ASP.NET MVC. Кроме того, нужно понимать, что такое клиент/сервер, как устроен протокол HTTP, как работает REST.

Клиентские приложения

Клиентские приложения – продукты, которые запускаются на персональных компьютерах и мобильных устройствах.

С применением .NET были разработаны такие приложения Windows, как блокнот и калькулятор. Но это лишь малая часть того, что можно сделать на .Net. Например, технология была использована в NinjaTrader и Tradesignal, а также в приложении для бизнес-аналитиков Microsoft Power BI.

Существуют клиентские приложения и для смартфонов, но в них, как правило, используется более современная технология .Net Core. С помощью нее и Xamarin.Forms можно написать приложение и опубликовать его в Apple Store или Google Play.

Компьютерные игры

Используя .Net, можно создавать различные игры под Unity. Примеры: Inside, Kerbal Space Program, Endless Legend и даже Pokemon Go. Для создания подобных игр необходимо знать язык программирования C# и использовать библиотеки платформ Mono и Unity.

Интернет вещей

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

Здесь также можно применять .NET, например, с использованием Raspberry PI с Windows 10 IoT Core. Если вы планируете развиваться в данном направлении, то первым делом почитайте в интернете про Azure IoT и Azure IoT Hub.

Enterprise

Enterprise – это область разработки продуктов для решения проблем бизнеса. К таким продуктам можно отнести CRM для отслеживания поведения клиентов, а также системы менеджмента информации и документооборота.

Подобные системы – это чаще всего комбинация веба, десктопных и мобильных приложений. Чтобы начать работать с Enterprise, потребуются знания в C#, .NET и JavaScript, а также в инструментах, которые являются базой для проектируемого Enterprise-продукта.

Стоит ли учить .NET?

Технология .Net привлекательна среди молодых специалистов, так как она открывает обширные возможности. Например, можно пойти в backend и стать профессионалом в WCF или ASP.NET Core. Использование Razor/Blazor позволит создавать под .NET полноценные веб-приложения как с клиентской, так и с серверной частью.

Если говорить о современных технологиях по типу React, NG или Vue, то обучение для backend-разработчика станет более понятным с использованием языка TypeScript, который был разработан Microsoft специально для C#-программистов.

Также не стоит забывать и о том, что .Net – это фреймворк, заточенный под Windows. Не нужно ничего устанавливать, все уже под рукой. Если же взять тот же Java, то потребуется установить много дополнительного ПО, а для работы с iOS вовсе нужен Mac.

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

Заключение

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

Назначение Windows Forms – обеспечение разработки традиционных Windows-приложений на основе сервисов Microsoft.NET и соответствующих библиотек классов.

Особенности разработки – унификация доступа:

• к библиотекам классов;

• механизмам распространения сервисов;

• механизмам поддержки версий;

• сервисам безопасности.

Вывод: создание Windows-приложений в архитектуре Microsoft.NET дает разработчикам существенные преимущества, поскольку огромное количество классов уже реализовано, и остается заполнить пробелы только с реализацией бизнес-логики по сравнению с традиционным API-ориентированным подходом.

Назначение Web Forms — основа веб-сервисов и веб-приложений в архитектуре Microsoft.NET.

Особенность – программная модель основана на ASP+ – новом поколении активных серверных страниц (эволюция технологии ASP – более 1 млн разработчиков).

Идея веб-форм (из Visual Basic 6): отделение логики веб-приложения от интерфейса (за счет объединения в рамках формы ASP– и HTML-кода).

Преимущества:

• более строгая структурированность приложений;

• широкий спектр (серверных) интерфейсных элементов;

• простая и мощная объектная модель;

• легкость разработки (и масштабирования) веб-приложений.

Основное средство для разработки приложений и сервисов в архитектуре. NET – Microsoft Visual Studio.NET (современная версия Microsoft Visual Studio).

Вот какого рода веб-сервисы можно создавать в. NET, так выглядит общая архитектура (рис. 8.6).

Рис. 8.6. Веб-сервисы в. NET

Веб-сервисы в. NET:

1) программируемые компоненты приложений, доступные посредством стандартных интернет-протоколов;

2) центральная часть архитектуры. NET;

3) распределяют функциональность по глобальной сети;

4) строятся на существующих и развивающихся стандартах: HTTP, XML, SOAP, UDDI, WSDL.

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

Поддерживаемые форматы: HTTP, XML, SOAP, UDDI, WSDL и др.

Компонентное программирование в. NET. Компоненты – это:

• независимые, повторно используемые и тиражируемые модули, из которых строятся приложения;

• в целом более крупные, чем объект (объекты – конструкции уровня ЯП);

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

• независимы от языка реализации.

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

Компонентная объектная модель (COM):

• основной стандарт Microsoft для компонентов;

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

• основа для ActiveX, OLE и многих других технологий взаимодействия;

• поддерживается в Visual Basic, C++, NET и др.

Модель Java Beans:

• основной стандарт Sun Microsystems для компонентов;

• зависима от языка реализации.

Сравнение компонентно– и объектно-ориентированного программирования.

Основные понятия объектно-ориентированного программирования:

• класс (class);

• интерфейс (interface).

Основные понятия компонентно-ориентированного программирования:

• свойство (property);

• событие (event);

• сборка (assembly).

Говоря об основных возможностях. NET, следует отметить, что кроме плюсов существуют и значительные недостатки.

Наиболее существенные недостатки. NET:

1) высокие требования к аппаратному обеспечению (минимум 256M RAM, 10G HDD для работы с Microsoft Visual Studio.NET);

2) сложности работы с некоммерческими релизами программного обеспечения (некоторая неустойчивость, отсутствие полномасштабной документации); сервис – это не всегда надежно и предсказуемо. Не всегда имеется документация. Некоторые языки не до конца стандартизованы, а некоторые не до конца реализованы как продукты;

3) поддержка ряда теоретически интересных и практически полезных языков программирвоания не в полном объеме (SML для Visual Studio.NET – в процессе реализации);

4) инструментарий. NET и компиляторы для языков программирования не ратифицированы по международным стандартам.

Платформа. NET – выводы.

1. Стратегическая идеология – это и технологическая платформа, и подход, который определяет стратегию Microsoft на ближайшее десятилетие.

2. Несомненное качественное превосходство над аналогами (Borland Delphi, Microsoft Visual Studio и др.) за счет:

• интероперабельности и межъязыкового взаимодействия;

• многоуровневой безопасности, SDL, безопасности на уровне компонентов;

• интеграции с веб-сервисами;

• облегчения разворачивания и использования.

3. Завершенность решения для широкого коммерческого использования в силу концептуальной новизны и грандиозности проекта.

4. NET – развитие платформы Windows, которое позволяет осуществлять компонентное проектирование.

5. NET – фундамент для создания корпоративных приложений нового поколения.

6. Основа. NET – принцип компонентной интеграция приложений на уровне сервисов, взаимодействующих посредством языка XML и протокола SOAP.

7. Стратегическая цель. NET – создание программной инфраструктуры для разработки и функционирования распределенных приложений на базе интернет-стандартов.

Глава 9

Разработка интерфейсов корпоративных систем по технологии Windows Forms

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

Когда говорят о корпорации, речь идет о территориально распределенной структуре, которая решает общие бизнес-задачи. Компании этой структуры отстоят далеко (территориально), но тем не менее необходимо обеспечить функционирование приложений корпоративных систем. Для этого используются разные технологии, в частности Remoting, также Windows Communication Foundation, технологии, связанные с веб-сервисами, которые реализуют решение как сервис, последовательно предлагаемые и реализуемые Microsoft в подходе. NET.

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

1. Лекция 1

2. Развитие программирования

МАШИННЫЙ ЯЗЫК
НИЗКОУРОВНЕВОЕ
ПРОГРАММИРОВАНИЕ
СТРУКТУРНОЕ
ПРОГРАММИРОВАНИЕ
ООП

3. Откуда пришло

Объектное и объектно-ориентированное
программирование (ООП) возникло в
результате развития идеологии
процедурного (структурного)
программирования, где данные и
подпрограммы (процедуры, функции) их
обработки формально не связаны.

4. Что есть сейчас

В современном ООП большое значение
имеют понятия
события (так называемое событийноориентированное программирование)
компонента (компонентное
программирование).

5. Развитие программирования

Структурное
программирование
С
Java
С++
Microsoft
ООП
С#

6. C#. История

Язык C# появился на свет в июне 2000 г., в
результате работы большой группы
разработчиков компании Microsoft,
возглавляемой Андерсом Хейлсбергом
(Anders Hejlsberg).

7. Платформа .NET

Платформа .NET Framework состоит из
общеязыковой среды выполнения (среды
CLR) и библиотеки классов .NET
Framework.

8. Платформа .NET

Платформа
постоянно
развивается, в ней
появляются новые
возможности,
новые библиотеки

9. Среда выполнения

исполняющая среда
для байт-кода CIL
(MSIL), в который
компилируются
программы,
написанные на .NETсовместимых языках
программирования

10. Самое главное

Основным постулатом C# является
высказывание: «всякая сущность есть
объект».
Язык основан на строгой компонентной
архитектуре и реализует передовые
механизмы обеспечения безопасности
кода.

11. ООП

Что это такое?

12. Определение

Объее́ктно-ориентие́рованное
программие́рование (ООП) — парадигма
программирования, в которой основными
концепциями являются понятия объектов
и классов (либо, в менее известном
варианте языков с прототипированием, —
прототипов)

13.

14. 3 концепции

Все языки OOP основаны на трёх
основополагающих концепциях
ИНКАПСУЛЯЦИЯ
НАСЛЕДОВАНИЕ
ПОЛИМОРФИЗМ

15. ИнКАПСУЛяция

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

16. ИнКАПСУЛяция наглядно

17. ИнКАПСУЛяция наглядно

18. Наследование. Аналогия

19. Наследование

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

20. Полиморфизм

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

21. Полиморфизм наглядно

22. Абстракция

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

23. Абстракция

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

24. Классы и объекты

25. Классы

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

26. Классы

27. Объект класса

это переменная от класса
Class1 cl = new Class1();
<Название класса> <имя переменной> =
new <Название класса>(<параметры>);

28. Что есть у классов

Поля
Константы
Свойства
Методы
Конструкторы и деструктор
События
Индексаторы
Операторы
Вложенные типы

29. Поля

Поле — это переменная любого типа,
которая объявлена непосредственно в
классе

30. Поля

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

31. Константы

Константы представляют собой
неизменные значения, известные во
время компиляции и неизменяемые на
протяжении времени существования
программы. Константы объявляются с
модификатором const. Только встроенные
типы C# (за исключением System.Object)
могут быть объявлены как const.

32. Константы

Используемое для
инициализации
константы
выражение может
ссылаться на
другую константу,
если при этом не
создается
циклическая ссылка

33. Свойства

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

34. Свойства

У свойства могут быть два ключевых слова
set и get

35.

36. Свойства. Особенности

37. Методы

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

38. Методы

39. Сигнатура метода

Методы объявляются в классе или в
структуре путем указания модификаторов
доступа, необязательных
модификаторов, (abstract или sealed),
возвращаемого значения, имени метода
и всех параметров этого метода. Все эти
части вместе представляют собой
сигнатуру метода.

40. Вложенные типы

Тип, определенный внутри класса,
называется вложенным типом

41. Модификаторы доступа

public
protected
internal
protected internal
private (по умолчанию)
public class Class1 {…}

42. Зачем они? public

Общий (public) доступ является уровнем
доступа с максимальными правами.
Ограничений доступа к общим членам не
существует.

43. public. Пример

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class Class1
{
public int x;
}
}
public void method()
{
this.x = 6;
}
namespace ConsoleApplication2
{
public class Class2
{
public void method()
{
ConsoleApplication1.Class1 cl = new ConsoleApplication1.Class1();
cl.x = 4;
}
}
}

44. Зачем они? private

Закрытый (private) доступ является
уровнем доступа с минимальными
правами. Доступ к закрытым членам
можно получить только внутри тела
класса, в которой они объявлены.

45. private. Пример

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class Class1
{
private int x;
}
}
public void method()
{
this.x = 6;
}
namespace ConsoleApplication2
{
public class Class2
{
public void method()
{
ConsoleApplication1.Class1 cl = new ConsoleApplication1.Class1();
cl.x = 4;
}
}
}

46. Типы данных

Ссылочные
(классы, массивы,
интерфейсы,
делегаты)
типы-значения
(элементарные типы,
перечисления,
структуры)

47. Типы-значения

Типы значений состоят из двух основных
категорий:
Структуры
Перечисления

48. Структурные типы

Структуры делятся на следующие категории:
Числовые типы
▪ Целочисленные типы
▪ Типы с плавающей запятой
▪ decimal
bool
Структуры, определяемые пользователем.

49. Перечисления

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

50. Перечисления

enum Colors { Red = 1, Green = 2, Blue = 4,
Yellow = 8 };
int xVal = (int)Colors.Red;
Colors t = Green;

51. Упаковка и распаковка

Упаковка представляет собой процесс
преобразования типа значения в тип
object или в любой другой тип
интерфейса, реализуемый этим типом
значения.
Когда тип значения упаковывается средой
CLR, она создает оболочку значения
внутри System.Object и сохраняет ее в
управляемой куче.

52. Упаковка и распаковка

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

53. Boxing и unboxing

Упаковка используется для хранения типов
значений в куче со сбором мусора.
int i = 123;
object o = i;

54. Boxing и unboxing

Распаковка является явным
преобразованием из типа object в тип
значения.
int i = 123;
object o = i;
int j = (int)o;

55. Переполнение

int a = 2000000000;
int b = 2000000000;
Console.WriteLine(«a = {0}\nb = {1}\n», a, b);
Console.WriteLine(«a + b = {0}», a + b);

56. Переполнение

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

57. checked и unchecked

short x = 32767;
short y = 32767;
short z = 0;
try
{
z = checked(x + unchecked(x+y));
}
catch (System.OverflowException e)
{
Console.Writeline(«Переполнение при выполнении сложения»);
}
return z;

58. checked и unchecked

unchecked
{
w = x+y;
}
checked
{
z = x+w;
}

59. Область видимости

Переменные можно объявлять в любом
месте блока. Точка объявления
переменной в буквальном смысле
соответствует месту ее создания.
Новый блок – новая область видимости.
Объекты, объявляемые во внутренних
блоках, не видны во внешних блоках.
Блок ограничивается { }

60. Область видимости

Объекты, объявленные в методе и во
внешних блоках, видны и во внутренних
блоках.
Одноименные объекты во вложенных
областях конфликтуют.
Объекты, объявляемые в блоках одного
уровня вложенности в методе, не видны
друг для друга. Конфликта имен не
происходит.

61. Пример

62. Объявление и инициализация

В чем разница?
int a;
int a = 8;
Console.WriteLine(a.toString());

63. Приоритет операций

1
2
3
4
5
6
7
8
9
10
11
12
13
14
() [] . (постфикс)++ (постфикс)–– new sizeof typeof unchecked
! ~ (имя типа) +(унарный) –(унарный) ++(префикс) ––(префикс)
*/%
+–
<< >>
< > <= => is
== !=
&
^
|
&&
||
?:
= += –= *= /= %= &= |= ^= <<= >>=

64. Привидение типов

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

65. Привидение типов

int a = 10;
short d = 30;
long l = 40005;
int df = a + d +l;
System.Convert

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 10 не открывает внешний жесткий диск
  • Нужно ли устанавливать windows после замены материнской платы
  • Как понизить mtu windows 10
  • Панель инструментов графического редактора paint windows xp
  • Список служб windows powershell