5408

Введение в Microsoft NET

Реферат

Информатика, кибернетика и программирование

Введение в Microsoft .NET Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться. Языки (C++, VisualBasic, Java), библиотеки (MFC, ATL, STL), архитектуры (COM, CORBA), ...

Русский

2012-12-09

143 KB

3 чел.

Введение в Microsoft .NET

Любому современному программисту, который желает идти в ногу с последними веяниями, каждые несколько лет приходится переучиваться. Языки (C++, Visual Basic, Java), библиотеки (MFC, ATL, STL), архитектуры (COM, CORBA), которые стали вехами в развитии программирования за последние годы, постепенно уходят в тень лучших или по крайней мере более молодых программных технологий. Вне зависимости от того, нравится это программистам или нет, этот процесс неизбежен. Платформа .NET компании Microsoft — это следующая волна коренных изменений

Современное состояние дел

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

Программирование с использованием Win32/C

Изначально под программированием под Windows подразумевалось программирование на С с использованием Windows Application Programming Interface (интерфейсом прикладного программирования Windows, в 32-разрядных версиях Windows — Win32 API). С использованием этой технологии было создано множество вполне достойных приложений, однако вряд ли кто-нибудь будет спорить с тем, что написание приложения с использованием только Windows API — это очень трудоемкая задача.

Еще одна проблема заключается в том, что С — достаточно суровый по отношению к программисту язык. Тем, кто создает на нем свои приложения, приходится вручную заниматься управлением памятью, выполнять расчеты при использовании указателей и работать с совершенно неестественными с точки зрения человеческого языка синтаксическими конструкциями. Кроме того, в С, конечно, недостаточно возможностей для объектно-ориентированного программирования. Если вам приходилось связывать тысячи глобальных функций Win32 API в единые гигантские конструкции, вы не будете сильно удивляться тому, что в подобных приложениях ошибки встречаются очень часто.

Программирование с использованием C++/MFC

C++ — это огромный шаг вперед в отношении новых возможностей по сравнению с исходным языком С. Во многих ситуациях C++ вполне допустимо представить как объектно-ориентированную надстройку над С. Такая надстройка позволяет использовать преимущества «столпов» объектно-ориентированного программирования — инкапсуляции, полиморфизма и наследования. Однако программисты, использующие C++, остаются незащищенными от многих и часто опасных особенностей С (теми же самыми низкоуровневыми возможностями работы с памятью и трудными для восприятия синтаксическими конструкциями).

Существует множество библиотек для C++, основное назначение которых — облегчить написание приложений под Windows, предоставив для этой цели уже готовые классы. Одна из наиболее распространенных библиотек — это MFC (Microsoft Foundation Classes). MFC — это дополнительный уровень над Win32 API, который значительно упрощает работу программиста за счет использования готовых классов, макросов и мастеров. Однако MFC — это лишь частичное решение проблемы. Даже при использовании MFC программисту приходится работать со сложным для чтения кодом, весьма опасным с точки зрения возможных ошибок.

Программирование с использованием Visual Basic

Люди всегда стремятся сделать свою жизнь проще. Повинуясь этому стремлению многие программисты на C++ обратили свои взоры к гораздо более простому и дружелюбному языку, каким является Visual Basic (VB). Visual Basic позволяет работать с достаточно сложными элементами интерфейса пользователя, библиотеками кода (например, СОМ-серверами) и средствами доступа к данным при минимальных затратах времени и сил. Visual Basic в гораздо большей степени, чем MFC, прячет от пользователя вызовы Win32 API и предоставляет большой набор интегрированных средств быстрой разработки.

Однако у Visual Basic есть и недостатки. Главный из них — это гораздо меньшие возможности, которые предоставляет этот язык, по сравнению с C++ (это утверждение справедливо, по крайней мере, для версий более ранних, чем VB.NET). Visual Basic — это язык «для работы с объектами», а не объектно-ориентированный язык в обычном понимании этого слова. В Visual Basic нет классического наследования, нет поддержки создания параметризованных классов, нет собственных средств создания многопоточных приложений — и этот список можно продолжать еще долго.

Программирование с использованием Java

Язык программирования Java — это полностью объектно-ориентированный язык, который в отношении синтаксиса многое унаследовал от C++. Конечно, преимущества Java далеко не исчерпываются межплатформенностью. Язык Java в синтаксическом отношении проще и логичнее, чем C++. Java как платформа предоставляет в распоряжение программистов большое количество библиотек (пакетов), в которых содержится большое количество описаний классов и интерфейсов на все случаи жизни. С их помощью можно создавать стопроцентные приложения Java с возможностью обращения к базам данных, поддержкой передачи почтовых сообщений, с клиентской частью, которой необходим только web-браузер, или наоборот, с клиентской частью, обладающей изощренным интерфейсом.

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

Java — это далеко не идеальный язык во многих ситуациях. Простой пример — если вы попытаетесь создать только на Java приложение, активно работающее с 3D-графикой, скорее всего, вы обнаружите, что работать такое приложение будет не очень быстро. Немного подумав, вы можете прийти к выводу, что для работы с 3D-графикой лучше использовать код, написанный на языке с более развитыми низко-уровневыми возможностями (например, на C++). Однако интегрировать такой код с кодом на Java вам будет очень сложно. Поскольку возможности для обращения к API компонентов, созданных на других языках, в Java очень ограничены, говорить о реальном межъязыковом взаимодействии на основе Java не приходится.

Программирование с использованием СОМ-объектов

Современное состояние дел таково, что если вы не строите Java-приложения, то велика вероятность, что вы осваиваете технологию Microsoft Component Object Model (COM). СОМ-технология провозглашает: «Если вы создаете классы в точном соответствии с требованиями СОМ, то у вас получится блок повторно используемого программного кода». Прелесть двоичного СОМ-сервера заключается в том, что к нему можно обраться из любого языка. Например, программисты, использующие C++, могут создавать классы, которые можно будет использовать из приложения на VBasic. Программисты, использующие Delphi, могут использовать классы, созданные на С и т. д. Однако в межъязыковом взаимодействии СОМ есть свои ограничения. Например, вы не можете произвести новый тип СОМ от существующего (то есть не можете использовать классическое наследование). Для повторного использования существующих типов СОМ вам придется использовать другие, гораздо менее надежные и эффективные средства.

Большое преимущество СОМ заключается в том, что программист может не заботиться о физическом местонахождении компонентов. Такие средства, как Application Identifiers (AppIDs, идентификаторы приложений), стабы (stubs), прокси, среда выполнения СОМ, позволяют избегать при обращении к компонентам по сети необходимости помещать в приложение код для работы с сокетами, вызовами RPC и прочими низкоуровневыми механизмами

Объектная модель СОМ используется очень широко. Однако внутреннее устройство компонентов весьма сложно. Чтобы научиться разбираться в нем, вам придется потратить по крайней мере несколько месяцев. Написание приложений с использованием СОМ-компонентов можно упростить, используя стандартные библиотеки, например библиотеку Active Template Library (ATL) со своим набором готовых классов, шаблонов и макросов.

Некоторые языки (например, Visual Basic) также позволяют скрыть сложность инфраструктуры СОМ. Однако всех сложностей избежать все равно не удастся. Например, даже если вы работаете с относительно простым и поддерживающим COM Visual Basic, вам придется решать не всегда простые вопросы, связанные с регистрацией компонентов на компьютере и развертыванием приложений.

Программирование с использованием Windows DNA

Картина будет неполной, если мы не примем во внимание такую мелочь, как Интернет. За несколько последних лет Microsoft добавила в свои операционные системы большое количество средств для работы с этой средой, в том числе и средства, призванные помочь в создании Интернет-приложений. Однако построение законченного web-приложения с использованием технологии Windows DNA (Distributed iNternet Architecture — распределенная межсетевая архитектура) до сих пор остается весьма сложной задачей.

Значительная часть сложностей возникает от того, что Windows DNA требует использования разнородных технологий и языков (ASP, HTML, XML, JavaScript, VBScript, COM(+), ADO и т. д.). Одна из проблем заключается в том, что синтаксически все эти языки и технологии очень мало похожи друг на друга. Например, синтаксис JavaScript больше похож на синтаксис С, в то время как VBScript является подмножеством Visual Basic. СОМ-серверы, предназначенные для работы в среде выполнения СОМ+, созданы на основе совершенно иных подходов, нежели ASP-страницы, которые к ним обращаются. Конечным результатом является пугающее смешение технологий. Помимо всего прочего, в каждом языке, который входит в состав Windows DNA, предусмотрена своя система типов, что также не является источником большой радости для программистов. Например, тип данных int в JavaScript — это не то же самое, что int в С, который, в свою очередь, отличен от integer в Visual Basic.

Технология .NET

Новая технология .NET отражает видение этой "компанией приложении" эпоху Internet. Технология .NET обладает улучшенной функциональной совместимостью, в основе которой лежит использование открытых стандартов Internet. Кроме того, она повышает устойчивость классического пользовательского интерфейса операционной системы Windows — рабочего стола. Разработчикам программного обеспечения технология .NET предоставляет новую программную платформу и великолепные инструментальные средства разработки, в которых основную роль играет язык ХМL (extensible Markup Language — расширяемый язык разметки).

Microsoft .NET — платформа, построенная на верхнем слое операционной системы. Технология .NET явилась главным объёктом инвестиций компании Microsoft. С момента начала работ над этой технологией и до момента ее публичного анонсирования прошло три года. Несомненно, на развитие технологии .NET оказали влияние другие технологические достижения, в частности расширяемый язык разметки XML, платформа Java , a также модель компонентных объектов Microsoft (Component Object ModelCOM).

Платформа Microsoft .NET предоставляет:

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

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

• лежащую в основе открытой модели программирования огромную библиотеку классов .NET Framework. Эти классы содержат многократно используемы и код. Они доступны в любом языке программирования, поддерживаемом платформой .NET;

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

• поддержку нового промышленного стандарта, а именно технологии Web-служб. Технология Web-служб предоставляет новый механизм создания распределенных приложений. По сути, она является распространением технологии создания приложений на базе компонентов и на сферу Internet;

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

• мощные инструментальные средства разработки.

Microsoft и Web

Всемирная паутина (World Wide WebWWW) рассматривалась компанией Microsoft как вызов, и он был принят. В самом деле, Web достаточно хорошо сосуществует с персональными компьютерами (ПК), — сегментом рынка, в котором компания Microsoft традиционно сильна. С помощью приложения, работающего на ПК, — браузера, — пользователь получает доступ к огромному миру информации. В основе построения всемирной сети лежит использование стандартов, в частности, языка гипертекстовой разметки HTML (HyperText Markup Language), протокола передачи гипертекста HTTP (HyperText Transfer Protocol) и языка XML (extensible Markup Language). Эти стандарты играют существенную роль при обмене информацией между различными пользователями, работающими на самых разнообразных компьютерных системах и устройствах.

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

Приложения в эпоху Internet

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

Язык XML предоставляет универсальный способ передачи данных, независимый от формата представления данных. Таким образом, именно язык XML может послужить отправной точкой на пути к достижению договоренности между компаниями относительно стандартов передачи документов и информации, в частности заказов на покупку и счетов. Тогда возникнут предпосылки для автоматизации бизнеса в сети Internet между сотрудничающими компаниями. В последнее время подобный вид электронной коммерции даже получил специальное название — B-to-B (Business-To-Business). Но язык XML всего лишь описывает данные, в нем не предусмотрено выполнение действий над данными. Именно для этой цели и нужны Web-службы.

Web-службы

Поддержка платформой .NET Web-служб является одним из наиболее важных ее свойств. Web-службы, построенные на основе промышленного стандартного протокола SOAP (Simple Object Access Protocol — простой протокол доступа к объектам), позволяют использовать функции ваших приложений в любом месте Internet. С точки зрения программиста, работающего в среде .NET, не существует различия между Web-службами и другими типами служб, которые реализуются с помощью классов в языках программирования, соответствующих спецификации .NET. Используемая при этом модель программирования остается неизменной, независимо от того, вызывается ли функция приложением, отдельным компонентом, установленным на этой же машине, или, как в случае с Web-службами, на другой машине.

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

ASP.NET

Платформа .NET включает также полностью переделанную версию популярной технологии ASP (Active Server Pages), известную теперь под названием ASP.NET. В основе ASP лежит интегрированный сценариев, в который вставлены команды форматирования текста. Код сценариев реализуется на одном из языков с довольно ограниченными возможностями. А технология ASP.NET позволяет писать код на любом языке, поддерживаемом платформой .NET. К таким языкам относится С#, VB.NET, JScript и C++ с управляемыми расширениями. Поскольку полученный при этом код является компилируемым, интерфейсный код может быть отделен от бизнес-логики и помещен  в отдельный файл.

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

Перетаскивание (drag and drop) позволяет очень легко создавать макеты форм в среде Visual Studio.NET. Затем можно добавить код для обработки события формы, например, щелчка.

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

В процессе создания Web-приложений использование Web-служб вместе с полнофункциональными компилируемыми языками программирования, такими как С#, VB.NET и управляемый C++, позволяет широко применять модели объектно-ориентированного программирования. Достичь этого при помощи языков подготовки сценариев, применяемых в ASP, и компонентов, построенных на основе модели компонентных объектов Microsoft (Component Object Model, COM) было бы невозможно.

Открытые стандарты и возможность взаимодействия (функциональная совместимость)

Современная вычислительная среда состоит из множества аппаратных и программных систем. В качестве компьютеров могут использоваться мэйнфреймы и высокопроизводительные серверы, рабочие станции и персональные компьютеры, маленькие мобильные устройства, такие как карманные компьютеры, часто называемые персональными цифровыми помощниками (Personal Digital Assistance, PDA) и даже сотовые телефоны. К числу используемых операционных систем принадлежат традиционные операционные системы, под управлением которых работают мэйнфреймы, различные клоны операционных систем Unix, Linux, несколько версий операционной системы Windows, операционные системы реального времени и специальные операционные системы, наподобие PalmOs, предназначенной для управления мобильными устройствами. На практике используются различные языки программирования, различные базы данных, различные инструментальные средства разработки приложений, а также различное промежуточное программное обеспечение (программное обеспечение, содействующее процессам обмена информацией между клиентом и сервером).

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

Протоколы обмена

Сокеты, используемые протоколом TCP/IP, высокостандартизированы и широкодоступны. Но программирование с применением сокетов рассматривается программистами как слишком низкоуровневое. Именно необходимость программирования на низком уровне препятствует продуктивному написанию устойчивых распределенных приложений. Протокол удаленного вызова процедур RPC (Remote Procedure Call) имеет несколько более высокий уровень. Но протокол удаленного вызова процедур RPC (Remote Procedure Call) является достаточно сложным, и к тому же существует масса его разновидностей. Приобрели популярность такие протоколы высокого уровня, как CORBA (Common Object Request Broker Architecture — архитектура посредника объектных запросов), RMI (Remote Method Invocation — технология удаленного вызова методов), а также распределенная модель компонентных объектов DCOM (Distributed Component Object Model). Эти протоколы все еще сложны и для организации их работы требуется наличие специальной среды как на стороне сервера, так и на стороне клиента. Им присущи также и другие недостатки. Например, в процессе использования данных протоколов возможно возникновение проблем при прохождении пакетов данных через брандмауэры (системы сетевой защиты).

Тем не менее, один протокол получил повсеместное распространение. Это протокол передачи гипертекстовых файлов HTTP (Hypertext Transfer Protocol). Именно по причине повсеместного распространения протокола HTTP, компании Microsoft и другим производителям сетевого программного обеспечения пришлось разработать новый протокол, получивший название SOAP (Simple Object Access Protocol — простой протокола доступа к объектам). Для кодирования запросов методов объектов и сопутствующих данных в протоколе SOAP используются тексты на языке XML (extensible Markup Language). Огромным достоинством протокола SOAP является его простота. Вследствие своей простоты этот протокол может быть легко реализован на многих устройствах. Протокол SOAP (Simple Object Access Protocol) может работать на верхнем слое любого стандартного протокола. Но именно возможность его работы на верхнем слое таких стандартных Internet-протоколов, как протокол передачи гипертекстовых файлов HTTP (Hypertext Transfer Protocol) и протокол SMTP (Simple Mail Transfer Protocol — простой протокол пересылки почты, или простой протокол электронной почты), позволяет пакетам данных проходить через системы сетевой защиты (брандмауэры) без каких-либо проблем, связанных с возможностью соединения.

Windows на рабочем столе

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

Проблемы с Windows

Обслуживание персонального компьютера, работающего под управлением операционной системы Windows, является тяжелой и неприятной задачей, так как имеющиеся приложения достаточно сложны. Они состоят из многих файлов, в процессе инсталляции производятся записи в системном реестре, создаются ярлыки и так далее. Различными приложениями могут использоваться одни и те же динамически подключаемые библиотеки (DLL). При инсталляции нового приложения динамически подключаемая библиотека, уже используемая существующим приложением, может быть перезаписана. Вследствие этого старое приложение может быть повреждено (ситуация, известная как "проклятие (ад) динамически подключаемых библиотек (DLL)"). Деинсталляция приложения также является довольно сложной задачей, которая часто выполняется не до конца автоматически.

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

Первоначально операционная система Windows была разработана еще в те времена, когда персональные компьютеры не были связаны в сеть, и вопрос безопасности не стоял так остро. Несмотря на то, что средства безопасности были встроены в Windows NT и Windows 2000, соответствующую им модель программирования на практике использовать непросто.

Стеклянный дом и тонкие клиенты

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

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

Устойчивая Windows

В связи со всей этой шумихой, поднятой вокруг платформы .NET и Internet, важно четко осознавать, что с появлением платформы .NET изменилась модель программирования. Следствием этого стала возможность создания намного более устойчивых Windows-приложений. Судьба приложения больше не зависит от обширных конфигурационных данных, хранящихся в хрупком системном реестре Windows. .NET-приложения содержат самоописание. Они содержат метаданные в своих исполняемых файлах. Различные версии компонентов могут быть развернуты и существовать одновременно. Благодаря глобальному кэшу сборки (Global Assembly Cache), разные приложения могут совместно использовать одни и те же компоненты. Управление версиями встроено в модель развертывания приложений. Частью платформы .NET является также простая модель безопасности.

Новая платформа программирования

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

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

• Процесс создания приложений на платформе .NET значительно облегчился по сравнению с созданием приложений на основе интерфейса 32-разрядных Windows-приложений (Win32 API) или модели компонентных объектов Microsoft (COM).

• Платформа целиком, как и некоторые ее части, может быть реализована на многих различных типах компьютеров (аналогично Java-машине).

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

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

Платформа .NET имеет также несколько важных характерных особенностей, а именно:

• каркас .NET Framework;

• общеязыковую среду выполнения CLR (Common Language Runtime);

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

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

Каркас NET Framework

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

В каркасе .NET Framework представлено более 2500 классов, содержащих повторно используемый код. Эти классы доступны  в любом языке  программирования, который поддерживается платформой. Библиотека классов .NET "Framework" является расширяемой. На основе ужё существующих базовых классов можно создать новые производные классы, причем производные классы могут быть реализованы на совершенно другом языке программирования.

В состав библиотеки классов .NET Framework, входят классы, которые используются при разработке Windows-приложений, a также~ приложений с 6азами данных. В библиотеке классов .NET Framework имеются также классы, обеспечивающие взаимодействие с языком XML, с моделью компонентных объектов Microsoft (COM) и с любой платформой, поддерживающей интерфейс 32-разрядных Windows-приложений (Win32 API).

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

Среда выполнения предоставляет необходимые службы во время выполнения приложений. Традиционно каждой среде программирования соответствует своя среда выполнения. В качестве примера среды выполнения могут служить стандартная библиотека языка С++, библиотека базовых классов Microsoft (MFC), среда выполнения языка Visual Basic, а также виртуальная машина Java (Java Virtual Machine). Среда выполнения платформы .NET получила название общеязыковой среды выпoлнeния CLR (Common Language Runtime).

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

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

Ограничения, которые накладываются на .NET-код, определяются общей системой типов (Common Type System, CTS), а также ее реализацией в промежуточном языке IL, разработанном корпорацией Microsoft (Microsoft Intermediate LanguageMSIL, или просто IL). Общей системой типов определены типы и операции, которые могут использоваться кодом, работающим в общеязыковой среде выполнения CLR. Так, именно общей системой типов (Common Type System, CTS) на используемые типы накладывается ограничение единичного наследования реализации. Код на промежуточном языке, разработанном корпорацией Microsoft (Microsoft Intermediate Language, MSIL), компилируется во внутренний (собственный) код платформы.

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

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

Память для управляемых данных распределяется и освобождается автоматически. Такое автоматическое освобождение занимаемой памяти называется сборкой мусора (garbage collection). Сборка мусора решает все проблемы утечки памяти и им подобные.

Microsoft и Европейская Ассоциация производителей ЭВМ

Корпорация Microsoft передала с целью стандартизации спецификацию языка С# и основные части библиотеки классов .NET Framework на рассмотрение Европейской Ассоциации производителей компьютеров (European Computer Manufacturers' Association — ЕСМА). Техническими требованиями этой независимой международной организации по стандартам определена независимая от платформы инфраструктура универсального языка CLI (Common Language Infrastructure). Общеязыковую среду выполнения CLR можно представить себе как инфраструктуру универсального языка CLI (Common Language Infrastructure), дополненную библиотеками базовых классов BCL (Basic Class Libraries). Библиотека базовых классов BCL (Basic Class Library) поддерживает фундаментальные типы общей системы типов CTS (Common Type System), а именно: ввод/вывод файлов, строки и форматирование. Поскольку общеязыковая среда выполнения CLR зависит от используемой платформы, в ней используются модели управления процессами и памятью базовой операционной системы.

Спецификацией (техническими требованиями) Европейской Ассоциации производителей компьютеров (European Computer Manufacturers' Association — ЕСМА) определен универсальный промежуточный язык CIL (Common Intermediate Language). Согласно этим требованиям, разрешено интерпретировать код на промежуточном языке CIL или компилировать его в собственный (внутренний) код.

Верифицируемый код

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

Однако, не все приложения, для работы которых требуется общеязыковая среда выполнения CLR, обязаны удовлетворять требованиям типовой безопасности. В частности, такая ситуация реализуется для приложений, написанных на C++. Управляемый код, написанный на C++, может использовать возможности, предоставляемые общеязыковой средой выполнения CLR, например, сборку мусора. Но так как на C++ может быть создан и неуправляемый код, то нет никаких гарантий относительно того, что приложение, написанное на C++, будет удовлетворять требованиям типовой безопасности. В управляемом коде, написанном на C++, нельзя выполнять арифметические операции над управляемыми указателями, или приводить тип управляемого указателя к неуправляемому. Поэтому управляемый код, написанный на C++, можно проверить на безопасность. Но может случиться так, что в этом же приложении, написанном на C++, будут выполняться арифметические операции над указателями или приведение типов управляемых указателей к неуправляемым. А это, по своей сути, ненадежно.

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

Как следует из ее названия, общеязыковая среда выполнения CLR поддерживает многие языки программирования. Для каждого такого языка должен быть реализован компилятор, который генерирует "управляемый код". Сама компания Microsoft реализовала компиляторы для управляемого C++, Visual Basic.NET, Jscript, а также совершенно нового языка программирования С#.

Компиляторы для более чем дюжины других языков реализуются усилиями независимых разработчиков. К числу этих языков программирования принадлежит язык COBOL (его реализацией занимается компания Fujitsu) и язык Perl (его реализацией занимается компания ActiveState). Представьте себе, что миллиарды строк кода, написанных на языке COBOL, после некоторых усилий, связанных с переносом, станут доступными в среде .NET. Чтобы воспользоваться преимуществами среды .NET, программистам, которые пишут приложения на языке COBOL, не придется переучиваться и с начала изучать совершенно новый язык программирования.

Общая картина представлена на рис. 1.1.

Рис. 1.1. Все компиляторы, ориентированные на .NET, генерируют IL-инструкции и метаданные

Может показаться смешным, но двоичные файлы .NET, для которых используются стандартные расширения DLL и ЕХЕ, по своему внутреннему содержанию не имеют абсолютно ничего общего с обычными исполняемыми файлами. Например, файлы DLL не предоставляют свои методы в распоряжение приложений на компьютере. В отличие от компонентов СОМ двоичные файлы .NET не описываются с помощью кода IDL и регистрируются в системном реестре. Однако, пожалуй, самое важное отличие заключается в том, что двоичные файлы .NET не содержат зависящих от платформы команд. Содержимое двоичных файлов .NET — это платформенно-независимый «промежуточный язык», который официально называется Microsoft Intermediate Language (MSIL, промежуточный язык Microsoft), или простоIL.

Преимущества С#

Специально для платформы .NET Microsoft был разработан новый язык программирования С#. С# — это язык программирования, синтаксис которого очень похож на синтаксис Java (но не идентичен ему). Например, в С# (как в Java) определение класса состоит из одного файла (*.cs), в отличие от C++, где определение класса разбито на заголовок (*.h) и реализацию (*.срр). Однако называть С# клоном Java было бы неверно. Как С#, так и Java основаны на синтаксических конструкциях C++. Если Java во многих отношениях можно назвать очищенной версией C++, то С# можно охарактеризовать как очищенную версию Java.

Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic. Например, в С#, как и в Visual Basic, используются свойства классов. Как C++, С# позволяет производить перегрузку операторов для созданных вами типов (Java не поддерживает ни ту, ни другую возможность). С# — это фактически гибрид разных языков. При этом СП синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++. Подводя итоги, еще раз выделим основные особенности С#.

  •  Указатели больше не нужны! В программах на С#, как правило, нет необходимости в работе с ними (однако если вам это потребуется, пожалуйста, — возможности для работы с указателями в вашем распоряжении).
  •  Управление памятью производится автоматически.
  •  В С# предусмотрены встроенные синтаксические конструкции для работы с перечислениями, структурами и свойствами классов.
  •  В С# осталась возможность перегружать операторы, унаследованные от C++. При этом значительная часть возникавших при этом сложностей ликвидирована.
  •  Предусмотрена полная поддержка использования программных интерфейсов. Однако в отличие от классического СОМ применение интерфейсов — это не единственный способ работы с типами, используя различные двоичные модули. .NET позволяет передавать объекты (как ссылки или как значения) через границы программных модулей.
  •  Также предусмотрена полная поддержка аспектно-ориентированных программных технологий (таких как атрибуты). Это позволяет присваивать типам характеристики (что во многом напоминает COM IDL) для описания в будущем поведения данной сущности.

Возможно, самое важное, что необходимо сказать про язык С#, — это то, что он генерирует код, предназначенный для выполнения только в среде выполнения .NET. Например, вы не сможете использовать С# для создания классического СОМ-сервера. Согласно терминологии Microsoft код, предназначенный для работы в среде выполнения .NET, — это управляемый код (managed code). Двоичный файл, который содержит управляемый файл, называется сборкой (assembly). Подробнее об этом будет сказано ниже.

Инструментальные средства разработки

Настоящим ключом к успеху в разработке программного обеспечения является наличие набора эффективных инструментальных средств разработки. Компания Microsoft уже давно предлагает замечательные инструментальные средства разработки, к числу которых принадлежат Visual C++ и Visual Basic. Платформа .NET объединяет средства разработки в единую интегрированную среду, которая имеет название Visual Studio.NET.

• Среда VS.NET обладает широкими функциональными возможностями, которые могут быть использованы при создании приложения на любом языке, поддерживаемом платформой .NET.

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

• Среда VS.NET предоставляет множество различных конструкторов форм, баз данных и других программных элементов.

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

Важность инструментальных средств разработки

Не следует недооценивать значение инструментальных средств разработки приложений. Хорошей иллюстрацией тому может послужить случай, который произошел при работе над проектом языка Ada. Целью данного проекта было создание очень мощного языка программирования. Частью первоначального замысла было также создание стандартизованной среды программирования на языке Ada (Ada Programming Support EnvironmentAPSE). Разработке языка программирования было уделено огромное внимание. В то же время гораздо меньше внимания было уделено надлежащей разработке среды программирования на языке Ada (APSE). Из-за этого у языка программирования Ada так и не появилась среда разработки, которая могла бы сравниться со средой разработки Visual Studio, Smalltalk, или с многочисленными интегрированными средами разработки, которые имеются для языка Java.

Преимущество среды разработки Visual Studio.NET состоит в том, что она является стандартом. Следовательно, она будет тщательно настроена для того, чтобы сделать работу в этой среде продуктивной. Компания Microsoft, по сравнению со многими более мелкими разработчиками, присутствующими на обширном рынке инструментальных средств, располагает гораздо большими ресурсами, которые она в состоянии выделить на поддержку среды Visual Studio.NET. Платформа Java характеризуется высоко стандартизированным языком программирования и интерфейсом прикладного программирования (API). В то же время, инструментальные средства разработки, без которых написание высокопроизводительных приложений немыслимо, не являются в ней стандартизированными.

Роль языка XML

Язык XML в технологии .NET используется повсеместно. В глобальном видении развития приложений в эпоху Internet компания Microsoft также отводит ему особое место. Ниже перечислены некоторые применения языка XML в .NET.

• Язык XML используется для кодирования запросов к Web-службам и ответов, возвращаемых клиенту.

• Язык XML может использоваться для моделирования данных в наборах данных, используемых в технологии доступа к данным ADO.NET.

• Язык XML используется при создании конфигурационных файлов.

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

• Язык XML — лингва-франка (общепринятый язык) для корпоративных серверов, построенных на платформе .NET.

• Язык XML используется технологией Web-служб для описания и передачи данных.

Факторы, определяющие успех Web-служб

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

Важно отдавать себе отчет в том, что технология .NET обладает гораздо более широкими возможностями, чем громко рекламируемые возможности Internet. Более устойчивая платформа, предназначенная для создания Windows-приложений, чрезвычайно мощная библиотека классов .NET Framework, а также инструментальные средства разработки — это именно те особенности технологии .NET, благодаря которым она выдержит испытание временем.

Резюме

Microsoft .NET — это новая платформа, построенная на верхнем слое операционной системы. Она обладает многими возможностями, которые позволяют создавать и развертывать как обычные, так и новые Web-ориентированные приложения. Web-службы позволяют использовать функциональные возможности приложений во всей сети Internet. Как правило, для организации взаимодействия с Web-службами задействован протокол SOAP (Simple Object Access Protocol — простой протокол доступа к объектам). Поскольку в основу протокола SOAP положены широко распространенные стандарты, в частности язык разметки гипертекста HTML (Hypertext Markup Language) и язык XML (extensible Markup Language), этот протокол характеризуется высокой степенью функциональной совместимости, а значит, и высокой способностью к взаимодействию.

Платформа .NET использует управляемый код, для выполнения которого предназначена общеязыковая среда выполнения CLR. Общеязыковая среда выполнения CLR использует общую систему типов (Common Type System) Библиотека классов .NET Framework содержит огромное количество классов, которые в равной степени доступны в любом языке программирования, поддерживаемом платформой .NET. Ключевая роль в технологии .NET принадлежит языку XML Все функциональные возможности, которыми обладает платформа .NET, могут использоваться как для создания более устойчивых Windows-приложений, так и для построения Internet-приложений.


 

А также другие работы, которые могут Вас заинтересовать

80607. Поняття про числівник як частину мови 42.5 KB
  Консультанти знайомлять учнів з темами підготовленими вдома група: Кількісні числівники. група: Порядкові числівники. група: Прості і складні числівники. З якою частиною мови ми познайомилися Що означає числівник На які питання відповідає Які бувають числівники...
80608. Вправи на доцільне використання прикметників у мовленні. Спостереження за формами прикметників найвищого ступеня (без терміна, практично) 58 KB
  Мета: Ключові компетентності: формувати компетентність вміння вчитися організовувати своє робоче місце орієнтуватися в часі та берегти його доводити роботу до кінця; соціальну компетентність продуктивно співпрацювати з різними партнерами в групі підтримувати та керувати власними взаєминами з іншими.
80609. Порівняння числа та значення числового виразу. Складання задач за малюнками. Рівності 45 KB
  Обладнання: картки-підказки завдання від діда Цифроїда картка до ігор Цифри поховались Віночок Склади картинку бджілки маски Зайчика й Лисички. Лиска ця розумна дуже Додає все віднімає Знає лінії множини І задачі всі рішає Коли зробим всі завдання Частування поверне.віддає великий конверт вчителю...
80610. Слова, які звучать і пишуться однаково 39.5 KB
  Мета: ознайомити дітей з омонімами (без уживання терміну); вчити вдумливо сприймати мовлене і записане слово; розвивати інтерес до мови, до лексичних знань слів. Хід уроку Організація класу Перевірка домашнього завдання. Яке слово, що має багато значень є в вірші Що за коса?
80611. Літературні казки 37.5 KB
  Мета: Формувати компетентність вміння вчитися. Загальнокультурну компетентність Соціальну компетентність Предметні компетентності Практично ознайомити учнів з новим автором літературних казок – Василем Чухлібом та його творами Спонукати дітей пильніше оглядати світ навколо себе...
80612. Жива і нежива природа. Значення природи для людини 40.5 KB
  Мета: Розширити і уточнити знання учнів про різноманітність природи; формувати в учнів поняття природа жива і нежива природа; розвивати уміння спостерігати за об’єктами природи відрізняти предмети природи від предметів створених руками людини; виховувати дбайливе ставлення до природи.
80613. В осінні барви шати вдяглись ліси й поля 71 KB
  Мета. Формування у школярів уміння добирати твори, книги із заданої теми; вчити учнів бачити і розуміти прекрасне в природі, в музиці, поезії; розвивати образне мислення й мовлення; вчити визначати тему і мету твору, виразно читати поетичні твори, читати в особах...
80614. Океани Землі (прес-конференція) 38.5 KB
  Мета: Ознайомити учнів із поняттям «океани», їх розміщенням на карті півкуль і глобусі; продовжити навчати читати карту і працювати з нею; висвітлити значення океанів та використання їх багатств людиною; сприяти розвиткові памяті, спостережливості, вихованню бережливого ставлення до природних багатств.
80615. Осінь така мила 61 KB
  Мета: Продовжити знайомство учнів з творами українських поетів, які описували красу осені. Удосконалювати уміння виразно і правильно інтонаційно читати та розповідати текст. Активізувати словниковий запас учнів. Розвивати пам’ять, увагу, спостережливість, мовлення дітей та їх творчу уяву.