ИНТЕРФЕЙС ПРОГРАММИРОВАНИЯ ДЛЯ КОМПЬЮТЕРНОЙ ПЛАТФОРМЫ
PROGRAMMING INTERFACE FOR COMPUTING PLATFORM

Область изобретения
Изобретение относится к программному обеспечению и к разработке этого программного обеспечения. Более конкретно, это изобретение относится к интерфейсу программирования, облегчающему использование программной платформы (базовых программных средств) прикладными программами и аппаратными средствами компьютера.
КРАТКОЕ ОПИСАНИЕ ПРИЛОЖЕННЫХ КОМПАКТ-ДИСКОВ
К данному описанию приложен набор из трех компакт-дисков, на которых хранится Набор инструментальных средств Разработки Программного обеспечения (SDK) для операционной системы Microsoft Windows под кодовым названием "Longhorn". В SDK содержится документация для операционной системы Microsoft Windows под кодовым названием "Longhorn". К данному описанию также приложены дубликаты каждого из трех указанных компакт-дисков.
Первый компакт-диск в наборе из трех компакт-дисков (компакт-диск CD 1 из 3) содержит папку файлов, называемую "lhsdk", которая была создана 22 октября 2003 года; размер папки составляет 586 Mbytes (Мегабайт), и она содержит 9 692 подпапок и 44 292 субфайла. Второй компакт-диск в наборе из трех компакт-дисков (CD 2 из 3) содержит папку файлов, называемую "ns", которая была создана 22 октября 2003 года; размер папки составляет 605 Mbytes, и она содержит 12 628 подпапок и 44 934 субфайла. Третий компакт-диск в наборе из трех компакт-дисков (CD 3 из 3) содержит папку файлов, называемую "ns", которая была создана 22 октября 2003 года; размер папки составляет 575 Mbytes, и она содержит 9 881 подпапок и 43 630 субфайла. Файлы на каждом из трех указанных компакт-дисков могут выполняться на вычислительном устройстве, работающем на основе Windows (например, IBM-PC, или эквивалентном), на котором выполняется операционная система серии Windows (например, Windows NT, Windows 98, Windows 2000, Windows XP, и т.д.). Файлы на каждом компакт-диске в указанном наборе из трех компакт-дисков включены в данное описание по ссылке.
Каждый компакт-диск в наборе из трех компакт-дисков непосредственно является однократно записываемым компакт-диском CD-R и соответствует стандарту Международной организации по стандартизации ISO 9660. Содержимое каждого компакт-диска в наборе из трех компакт-дисков соответствует Американскому Стандартному Коду Обмена Информацией (ASCII).
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Программное обеспечение компьютера сразу стало классифицироваться на программное обеспечение "операционной системы" и “прикладное” программное обеспечение. В широком смысле приложением является программное обеспечение, подразумевающее выполнение определенной задачи для пользователя компьютера, например решения математического уравнения или поддержки электронной обработки текстов. Операционной системой является программное обеспечение, управляющее аппаратными средствами компьютера и их контролирующее. Задача операционной системы состоит в том, чтобы сделать вычислительные ресурсы доступными для прикладного программиста, при этом скрадывая сложность фактического управления аппаратными средствами.
Операционная система обеспечивает доступность ресурсов посредством функций, которые в совокупности известны как Интерфейс Прикладного Программирования, или API. Термин API также используется в отношении одной из этих функций. Функции часто группируются на основе ресурсов или служб, обеспечиваемых ими для прикладного программиста. Прикладное программное обеспечение запрашивает ресурсы, вызывая отдельные функции API. Функции API также служат в качестве средства обратной передачи прикладному программному обеспечению сообщений и информации, обеспечиваемых операционной системой.
Дополнительно к изменениям в аппаратных средствах, другим фактором, стимулирующим развитие программного обеспечения операционной системы, являлось стремление к упрощению и ускорению разработки прикладного программного обеспечения. Разработка прикладного программного обеспечения может быть трудоемкой задачей, иногда требующей годы, которые разработчик затрачивает на создание сложной программы с миллионами строк программного кода. Для известной операционной системы, такой как различные версии операционной системы Windows Microsoft, разработчики прикладного программного обеспечения каждый год пишут тысячи различных приложений, использующих операционную систему. Для поддержания такого большого количества разработчиков различных приложений требуется гармоничная и удобная для использования базовая операционная система.
Часто создание более сложной операционной системы может сделать более простой разработку прикладного программного обеспечения. То есть, если функция может использоваться для нескольких различных прикладных программ, то может быть лучше записать ее один раз для включения в операционную систему, чем вынуждать многих разработчиков программного обеспечения писать ее многократно для включения во многие различные приложения. Следовательно, если операционная система поддерживает широкий диапазон общих функциональных возможностей, требуемых для ряда приложений, то может быть получена существенная экономия во времени и в стоимости разработки программного обеспечения приложений.
Независимо от того, где проходит черта между операционной системой и прикладным программным обеспечением, ясно, что для используемой операционной системы, API между операционной системой и прикладным программным обеспечением и аппаратными средствами компьютера столь же существенен, как и непосредственно эффективная внутренняя работа операционной системы.
При разработке приложений разработчики используют разные инструментальные средства для создания графических элементов и другого содержимого (контента). Для отображения и представления графических элементов и других данных имеются дополнительные инструментальные средства. Такие инструментальные средства обычно создаются посредством различных объектов или разработчиками различных инструментальных средств. В результате инструментальные средства не обеспечивают согласованную среду программирования. Таким образом, разработчик, использующий такие различные инструментальные средства, должен научиться использовать каждое из инструментальных средств и попытаться обеспечить их взаимодействие друг с другом. Такие действия могут быть трудоемкими и занимать много времени, отнимая время непосредственно от фактически разрабатываемой задачи.
В течение нескольких прошедших лет всемирное внедрение Интернета и технологии работы с сетями в целом изменило перспективу для разработчиков программного обеспечения. Традиционно разработчики программного обеспечения сосредотачивались на локальных программных приложениях для автономных настольных компьютеров или компьютеров, работающих на основе локальной сети LAN, которые были соединены с ограниченным количеством других компьютеров через локальную сеть (LAN). Такие программные приложения обычно определялись как “упакованные” программы, так как программное обеспечение продавалось в упакованном пакете программ. Приложения использовали строго определенные API для доступа к основной операционной системе компьютера.
С развитием и широким распространением Интернет промышленность начала постигать возможности размещения приложений на различных узлах Всемирной Паутины (или просто "Web"). В сетевом мире клиенты из любого местоположения могут представить запросы к приложениям, работающим на серверах, размещенных в других местоположениях, и в доли секунды получить ответы обратно. Однако такие Web-приложения (приложения для работы во всемирной паутине) обычно разрабатывались с использованием той же платформы операционной системы, которая первоначально была разработана для автономных вычислительных устройств или компьютеров локальной сети. К сожалению, в некоторых случаях эти приложения не переносятся адекватно в режим распределенной обработки данных. Просто нижележащая платформа была создана без учета поддержки неограниченного количества взаимосвязанных компьютеров.
Чтобы осуществить сдвиг к распределенной вычислительной среде, поддерживаемой сетью Интернет, корпорация Microsoft разработала сетевую программную платформу, известную как структура ".NET" (читается, как "Дот Нэт"). Microsoft.NET является программным обеспечением для связи людей, информации, систем и устройств. Платформа обеспечивает возможность создания разработчиками Web-служб, которые должны выполняться через Интернет. Такой функциональный сдвиг сопровождался набором функций API для структуры Microsoft .NET™.
Вместе с тем, как использование структуры .NET™ становилось все более и более общим, определялись способы повышения эффективности и/или качества функционирования платформы. Изобретатели разработали уникальный набор функций API для обеспечения такой повышенной эффективности и/или качества функционирования.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Интерфейс программирования, такой как API, обеспечивает функции для создания приложений, документов, представлений мультимедиа и другого содержимого. Эти функции обеспечивают возможность разработчикам получать услуги из операционной системы, услуги объектной модели или другой системы или службы. В одном варианте осуществления функции обеспечивают возможность создания разработчиком графического интерфейса пользователя.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
В чертежах используется сквозная нумерация.
Фиг.1 иллюстрирует архитектуру сети, в которой клиенты осуществляют доступ к Web-службам через Интернет, с использованием стандартных протоколов.
Фиг.2 - диаграмма архитектуры программного обеспечения для сетевой платформы, содержащей интерфейс прикладного программирования (API).
Фиг.3 - диаграмма подсистемы представления, поддерживаемой API, а также классов функций различных функций API.
Фиг.4 - диаграмма возможного варианта компьютера, на котором может быть выполнена полностью архитектура программного обеспечения или ее часть.
Фиг.5-16 иллюстрируют различные возможные реализации интерфейса программирования.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Данное описание относится к интерфейсу прикладного программирования (API) для сетевой платформы, на которой разработчики могут создавать Web-приложения и услуги. В частности, описан возможный вариант API для операционных систем, использующих сетевую платформу, такую как инфраструктура .NET™, созданная корпорацией Microsoft. Инфраструктура .NET™ является программной платформой для Web-служб и Web-приложений, выполняемых в распределенной вычислительной среде. Она представляет следующее поколение вычислительных средств Интернет, использующих открытые стандарты связи для связи между слабосвязанными Web-службами, которые совместно выполняют определенную задачу.
В описанной реализации сетевая платформа использует XML (расширяемый язык разметки), открытый стандарт для описания данных. XML управляется Консорциумом Всемирной паутины (W3C). XML используется для определения элементов данных на Web-странице и в документах "бизнес - бизнес" (тип интернет-ресурса, который ориентирован на осуществление операций и поддержку отношений между компаниями). XML использует тэговую структуру, подобную HTML, однако в то время как HTML определяет, как элементы отображаются, XML определяет содержимое этих элементов. В HTML используются предварительно определенные тэги, при этом XML обеспечивает возможность определения тэгов разработчиком страницы. Вследствие этого виртуально могут быть идентифицированы любые элементы данных, обеспечивая возможность функционирования Web-страниц, как записей базы данных. Посредством использования XML и других открытых протоколов, таких как Простой Протокол Доступа к Объектам (SOAP), сетевая платформа обеспечивает возможность стыковки и широкого диапазона служб, которые могут быть адаптированы в соответствии с требованиями пользователя. Хотя описанные здесь варианты осуществления описаны в отношении XML и других открытых стандартов, для функционирования заявленного изобретения нет необходимости в использовании этих стандартов. Для реализации описанных здесь изобретений достаточно других в равной степени жизнеспособных технологий.
Здесь фраза Интерфейс Прикладного Программирования, или API, включает в себя стандартные интерфейсы, использующие вызовы функции или способа, а также удаленные вызовы (например, связь через заглушку, программу-посредник) и вызовы SOAP/XML.
Должно быть ясно, что в некоторых из описаний пространств имен, приведенных ниже, оставлены незаполненными описания некоторых классов, интерфейсов, перечислений и делегатов. Более полные описания этих классов, интерфейсов, перечислений и делегатов могут быть найдены в содержании компакт-дисков, на которых хранится SDK, упомянутый выше.
Пример сетевой среды
На фиг.1 изображена сетевая среда 100, в которой может быть реализована сетевая платформа, такая как инфраструктура .NET™. Сетевая среда 100 содержит возможные Web-службы 102(1), …, 102(N), которые обеспечивают службы, к которым может быть осуществлен доступ через сеть 104 (например, Интернет). Web-службы, определенные в общем ссылочной позицией 102, являются программируемыми компонентами приложения, которые могут многократно использоваться и программно взаимодействовать через сеть 104, обычно посредством Web-протоколов промышленного стандарта, таких как XML, SOAP, WAP (беспроводной протокол приложения), HTTP (протокол транспортировки гипертекста) и SMTP (простой протокол электронной почты), однако также могут быть использованы другие средства взаимодействия через сеть связи с Web-службами, такие как удаленный вызов процедуры (RPC) или технология, подобная технологии построения распределенных объектных приложений. Web-служба может быть службой с самоописанием и часто определяется в терминах форматов и порядка сообщений.
Web-службы 102 непосредственно доступны для других служб (как изображено линией 106 связи) или программного приложения, например Web-приложения 110 (как изображено линиями 112 и 114 связи). Каждая Web-служба 102 изображена включающей в себя один или большее количество серверов, на которых выполняется программное обеспечение для обработки запросов на конкретные службы. Такие службы часто поддерживают базы данных, в которых хранится информация, которую служба должна возвратить запрашивающим сторонам. Web-службы могут быть сконфигурированы для выполнения любой из нескольких различных служб. Возможные варианты Web-служб включают проверку регистрационного имени, уведомление, хранение в базе данных, котирование акций, каталоги местоположений, составление схем, музыку, электронный бумажник, календарь/планировщик, списки телефонов, новости и информацию, игры, продажу и покупку билетов и т.д. Web-службы могут комбинироваться друг с другом и с другими приложениями для создания интеллектуальных интерактивных версий.
Сетевая среда 100 также содержит возможные устройства - клиенты 120(1), 120(2), 120(3), 120(4), …, 120(M), которые используют Web-службы 102 (как изображено линией 122 связи) и/или Web-приложение 110 (как изображено линиями 124, 126 и 128 связи). Клиенты могут осуществлять связь друг с другом с использованием стандартных протоколов так же, как представлено линией 130 связи XML, изображенной между клиентами 120(3) и 120(4).
Устройства-клиенты, определенные в общем ссылочной позицией 120, могут быть реализованы многими различными средствами. Возможные варианты реализаций клиента включают в себя переносные компьютеры, стационарные компьютеры, планшетные PC (персональные компьютеры), телевизоры/компьютерные приставки к телевизору, устройства радиосвязи, персональные цифровые ассистенты, игровые пульты, принтеры, фотокопировальные устройства и другие интеллектуальные устройства и т.д.
Web-приложение 110 является приложением, разработанным для выполнения на сетевой платформе, и может использовать Web-службы 102 при обработке и обслуживании запросов от клиентов 120. Web-приложение 110 составляется из одного или большего количества программных приложений 130, выполняемых на инфраструктуре 132 программирования, которые выполняются на одном или большем количестве серверов 134 или других вычислительных систем. Следует отметить, что часть Web-приложения 110 может фактически резидентно храниться на одном или большем количестве клиентов 120. В виде другого варианта, для фактического выполнения задачи, Web-приложение 110 может координироваться с другим программным обеспечением на клиентах 120.
Инфраструктура 132 программирования является структурой, поддерживающей приложения и службы, разработанные разработчиками приложений. Посредством поддержки нескольких языков она обеспечивает возможность многоязычной разработки и “бесшовной” стыковки. Она поддерживает открытые протоколы, такие как SOAP, и инкапсулирует основную операционную систему и службы объектной модели. Инфраструктура обеспечивает устойчивую и защищенную среду выполнения для нескольких языков программирования и предлагает защищенные, интегрированные библиотеки классов.
Инфраструктура 132 является многозвенной архитектурой, включающей в себя уровень 142 интерфейса прикладного программирования (API), уровень 144 единой среды исполнения программ, написанных на различных языках программирования (CLR), и уровень 146 операционной системы/служб. Эта многоуровневая архитектура допускает обновления и изменения для различных уровней без воздействия на другие части структуры. Общая языковая спецификация 140 (CLS) обеспечивает разработчикам различных языков возможности написания кода, который может осуществлять доступ к функциональным возможностям основной библиотеки. Спецификация 140 работает в качестве контракта между разработчиками языка и разработчиками библиотеки, который может использоваться для поддержания возможности взаимодействия языков. В соответствии с CLS, библиотеки, написанные на одном языке, могут быть доступны непосредственно для модулей программ, написанных на других языках, для получения “бесшовной” стыковки между программными модулями, написанными на одном языке, и программными модулями, написанными на другом языке. Одна из возможных рабочих реализаций CLS описана в стандарте ECMA (Европейской Ассоциации производителей компьютеров), созданном участниками ECMA TC39/TG3. Описание находится на Web-узле ECMA www.ecma.ch.
Уровень 142 API представляет группы функций, которые могут быть вызваны приложением 130 для доступа к ресурсам и службам, обеспеченным уровнем 146. Воздействуя на функции API для сетевой платформы, разработчики приложения могут создавать Web-приложения для распределенных вычислительных систем, которые осуществляют полное использование сетевых ресурсов и других Web-служб, без необходимости понимания сложных взаимодействий фактического функционирования сетевых ресурсов, или того, как сетевые ресурсы делаются доступными. Дополнительно, Web-приложения могут быть написаны на любом количестве языков программирования, и транслированы в промежуточный язык, поддерживаемый единой средой 144 исполнения программ, и включены как часть общей языковой спецификации 140. Вследствие этого, уровень 142 API может обеспечивать способы для широкого многообразия приложений.
Дополнительно, инфраструктура 132 может быть сконфигурирована для поддержания вызовов API из удаленных приложений, выполняющихся удаленно от серверов 134, на которых размещена структура. Возможные приложения 148(1) и 148(2), резидентно хранящиеся на клиентах 120(3) и 120(M), соответственно, могут использовать функции API посредством вызовов непосредственно, или опосредованно, к уровню 142 API через сеть 104.
Инфраструктура также может быть реализована на клиентах. Клиент 120(3) изображает случай, где инфраструктура 150 реализована на клиенте. Эта инфраструктура может быть идентична инфраструктуре 132, работающей на сервере, или изменена для задач клиента. В виде другого варианта, инфраструктура, работающая на клиенте, может быть сокращена в случае, когда клиент является устройством с ограниченными или специализированными функциями, например сотовым телефоном, персональным цифровым ассистентом, карманным калькулятором или другим вычислительным устройством/устройством связи.
Инфраструктура программирования для разработчиков
Фиг.2 более подробно изображает инфраструктуру 132 программирования. Уровень 140 общей языковой спецификации (CLS) поддерживает приложения, написанные на нескольких языках 130(1), 130(2), 130(3), 130(4), …, 130(K). Такие языки приложений включают Visual Basic, C++, C#, COBOL, Jscript, Perl, Eiffel, Python и т.д. Общая языковая спецификация 140 определяет подмножество функций или правил относительно функций, которые, если им следовать, обеспечивают возможность взаимодействия различных языков. Например, некоторые языки не поддерживают заданный тип (например, тип "int*"), который иначе может поддерживаться единой средой 144 исполнения программ. В этом случае общая языковая спецификация 140 не включает в себя указанный тип. С другой стороны, типы, которые поддерживаются всеми или большинством языков (например, тип "int[]") включены в общую языковую спецификацию 140, вследствие чего разработчики библиотек могут использовать указанный тип, и он гарантированно может обрабатываться языками. Возможность такого взаимодействия приводит к “бесшовной” стыковке между программными модулями, написанными на одном языке, и программными модулями, написанными на другом языке. Так как выполнению определенных задач особенно хорошо соответствуют различные языки, то “бесшовная” стыковка между языками обеспечивает возможность выбора разработчиком определенного языка для определенного программного модуля с возможностью использования этого программного модуля с модулями, написанными на других языках. Единая среда 144 исполнения программ обеспечивает многоязычную “бесшовную” разработку с перекрестным наследованием языков и обеспечивает надежную и защищенную среду выполнения для нескольких языков программирования. Более подробная информация относительно общей языковой спецификации 140 и единой среды 144 Исполнения программ содержится в заявках, находящихся в процессе одновременного рассмотрения, называемых "Method and System for Compiling Multiple Languages" (Способ и система для компилирования нескольких языков), зарегистрированной 06/21/2000 (регистрационный номер 09/598105) и "Unified Data Type System and Method" (Способ и система унифицированных типов данных), зарегистрированной 7/10/2000 (регистрационный номер 09/613289), которые включены в содержание изобретения по ссылке.
Инфраструктура 132 инкапсулирует операционную систему 146(1) (например, операционные системы серии Windows) и службы 146(2) объектной модели (например, объектную модель компонентов Microsoft (COM) или Распределенную COM). Операционная система 146(1) обеспечивает стандартные функции, такие как управление файлами, уведомления, обработку событий, интерфейсы пользователя (например, управление окнами, меню, диалоги, и т.д.), защиту, аутентификацию, верификацию, процессы и потоки, управление памятью и т.д. Службы 146(2) объектной модели обеспечивают интерфейс с другими объектами для выполнения различных задач. Вызовы, сделанные на уровень API 142, передаются на уровень 144 общей среды исполнения программ для локального выполнения операционной системой 146(1) и/или службами 146(2) объектной модели.
API 142 группирует функции API в несколько пространств имен. Пространства имен, по существу, определяют коллекцию классов, интерфейсов, делегатов, перечислений и структур, которые в совокупности называются "типами" и обеспечивают определенный набор взаимосвязанных функциональных возможностей. Класс представляет управляемые данные с зарезервированной памятью для использования ее программой в процессе выполнения, которые имеют семантику присваивания ссылки. “Делегат” является объектно-ориентированным указателем на функцию. “Перечисление” является типом значения специального вида, представляющим именованные константы. “Структура” представляет статически распределенные данные, которые имеют семантику присваивания значения. Интерфейс определяет контракт, который могут реализовывать другие типы.
Разработчик, используя пространства имен, может организовывать набор типов в иерархическое пространство имен. Разработчик может создать из набора типов несколько групп, каждая из которых содержит по меньшей мере один тип, который представляет логически связанные функциональные возможности. В возможной реализации API 142 сформирован для включения трех корневых пространств имен. Следует отметить, что, хотя на фиг.2 изображены только три корневых пространства имен, в API 142 могут быть включены также дополнительные корневые пространства имен. Тремя корневыми пространствами имен, изображенными в API 142, являются первое пространство 200 имен для подсистемы представления (которое включает в себя пространство 202 имен для оболочки интерфейса пользователя), второе пространство 204 имен для Web-служб и третье пространство 206 имен для файловой системы. Затем каждой группе может быть назначено имя. Например, типам в пространстве 200 имен подсистемы представления может быть назначено имя "Windows" (Окна), а типам в пространстве 206 имен файловой системы могут быть назначены имена "Storage" (Память). Именованные группы могут быть сформированы под единым "глобальным корневым" пространством имен уровня системы интерфейсов API, таким как общее пространство имен System (Система). При выборе и задании префиксов идентификатора верхнего уровня для типов в каждой группе может быть легко сделана ссылка посредством иерархического имени, которое включает в себя выбранный идентификатор верхнего уровня, заданный в виде префикса для имени группы, содержащей данный тип. Например, ссылка на типы в пространстве 206 имен файловой системы может быть сделана с использованием иерархического имени "System.Storage". Следовательно, отдельные пространства 200, 204 и 206 имен становятся основными ответвлениями от пространства имен System и могут иметь имя, где отдельным пространствам имен задается префикс с именем, таким как префикс "System.".
Пространство 200 имен подсистемы представления относится к программированию и разработке содержимого. Оно поддерживает типы, которые обеспечивают возможность создания приложений, документов, представлений мультимедиа и другого содержимого. Например, пространство 200 имен подсистемы представления обеспечивает модель программирования, которая обеспечивает возможность получения разработчиками служб из операционной системы 146(1) и/или служб 146(2) объектной модели.
Пространство 202 имен оболочки относится к функциональным возможностям интерфейса пользователя. Оно поддерживает типы, которые обеспечивают разработчикам возможность включения в их приложения функциональных возможностей интерфейса пользователя, и дополнительно обеспечивает разработчикам возможность их расширения.
Пространство 204 имен Web-служб относится к инфраструктуре для обеспечения создания широкого многообразия приложений, например таких простых приложений, как приложение интерактивной переписки, которое функционирует между двумя одноранговыми сторонами по интранет, и/или таких сложных приложений, как масштабируемая Web-служба для миллионов пользователей. Описанная инфраструктура обладает преимуществом широкой вариабельности в том смысле, что существует необходимость в использовании только тех частей, которые соответствуют сложности определенного решения. Инфраструктура обеспечивает основу для формирования приложений различного масштаба и сложности, работающих на основе сообщений. Инфраструктура, или структура, обеспечивает интерфейсы API для основной передачи сообщений, защищенной передачи сообщений, надежной передачи сообщений и передачи сообщений транзакций. В варианте осуществления, который описан ниже, соответствующие API были разложены (на составные части) в иерархию пространств имен так, чтобы это наиболее способствовало уравновешиванию, используемости, расширяемости и возможности создания версий.
Пространство 206 имен файловой системы относится к памяти. Оно поддерживает типы, которые обеспечивают возможность хранения и восстановления информации.
В дополнение к инфраструктуре 132 обеспечены инструментальные программные средства 210, способствующие созданию разработчиком Web-служб и/или приложений. Одним возможным вариантом инструментальных программных средств 210 является Visual Studio™, многоязычный набор инструментальных программных средств, предлагаемых Корпорацией Microsoft.
Корневые пространства имен API
На фиг.3 более подробно изображены части подсистемы 200 представления. В одном варианте осуществления пространства имен определены согласно соглашению о иерархическом наименовании, в котором строки имен сцепляются точками. Например, пространство 200 имен подсистемы представления определено корневым именем "System.Windows". Внутри пространства имен "System.Windows" существует другое пространство имен для различных управляющих элементов (Controls), определенное как "System.Windows.Controls", которое дополнительно определяет другое пространство имен для примитивов (Primitives) (не изображено), известное как "System.Windows.Controls.Primitives". В соответствии с указанным соглашением о наименовании далее обеспечивается общий обзор выбранных пространств имен API 142, хотя с равным эффектом могли быть использованы другие соглашения о наименовании.
Согласно фиг.3 подсистема 200 представления включает несколько пространств имен. Пространства имен, изображенные на фиг.3, представляют конкретный вариант осуществления подсистемы 200 представления. Другие варианты осуществления подсистемы 200 представления могут включать в себя одно или большее количество дополнительных пространств имен или могут опускать одно или большее количество пространств имен, изображенных на фиг.3.
Подсистема 200 представления является корневым пространством имен для наибольшей части функциональных возможностей представления из API 142. Пространство 310 имен управляющих элементов включает в себя управляющие элементы, используемые для создания отображения информации, например интерфейса пользователя и классы, которые обеспечивают возможность взаимодействия пользователя с приложением. Возможные варианты управляющих элементов включают в себя "Button" (кнопку), создающую кнопку на дисплее, "RadioButton" (селективную кнопку), создающую кнопку селективного вида (переключатель) на дисплее, "Menu" (меню), создающее меню на дисплее, "ToolBar" (панель инструментов), создающую панель инструментов на дисплее, "Image" (Изображение), создающее изображение на дисплее, и "TreeView" (представление в виде Дерева), создающее иерархическое представление информации.
Некоторые управляющие элементы создаются посредством вложения и компоновки нескольких элементов. Управляющие элементы имеют логическую модель, которая скрывает элементы, используемые для создания управляющих элементов, вследствие чего модель программирования становится более простой. Разработчик или пользователь может определить стиль или тематизировать управляющие элементы (например, изменяя представление и режим кнопок интерфейса пользователя). Некоторые управляющие элементы имеют адресуемые компоненты, которые обеспечивают возможность коррекции стиля отдельных управляющих элементов. Дополнительно, разработчики приложений и разработчики компонентов могут подклассифицировать и расширять управляющие элементы. Управляющие элементы визуализируются с использованием векторной графики для возможности осуществления их изменения в соответствии с требованиями для конкретного интерфейса или другого отображения. Управляющие элементы могут использовать анимацию, например, для расширения интерактивного восприятия интерфейса пользователя и для представления действий и ответных действий.
Пространство 310 имен управляющих элементов включает в себя одну или большее количество панелей, которые являются управляющими элементами, определяющими и упорядочивающими своих потомков (например, вложенные элементы). Например, панель "DockPanel" (стыковочная панель) упорядочивает потомков, состыковывая каждого потомка с верхним, левым, нижним или правым краем дисплея и заполняя оставшееся пространство другими данными. Конкретная панель может состыковать меню и панели инструментов с верхним краем дисплея, строку текущего состояния с нижним краем дисплея, список папок с левым краем дисплея и заполнить оставшуюся часть пространства списком сообщений.
Как упомянуто выше, System.Windows.Controls.Primitives является пространством имен, которое включает в себя несколько управляющих элементов, являющихся компонентами, обычно используемыми разработчиками управляющих элементов в пространстве имен System.Windows.Controls и разработчиками, создающими свои собственные управляющие элементы. Возможные варианты таких компонентов включают в себя "Thumb” (Бегунок) и “RepeatButton" (Кнопку Повтора). "ScrollBar" (Полоса прокрутки), другой компонент, создается с использованием четырех кнопок повтора (одной для "line up" (на строку вверх), одной для "line down" (на строку вниз), одной для "page up" (на страницу вверх), и одной для "page down" (на страницу вниз)) и "Thumb" для перемещения текущей точки обзора на другое место в документе. В другом возможном варианте управляющим элементом, созданным с использованием двух "ScrollBar" и одной "ScrollArea" (Области прокрутки) для обеспечения прокручиваемой области, является "ScrollViewer" (средство просмотра с прокруткой).
Следующий список содержит возможные классы, представленные пространством имен System.Windows.Controls. Указанные классы обеспечивают возможность взаимодействия пользователя, например, с приложением через различные возможности ввода и вывода данных, а также дополнительные возможности отображения.
- AccessKey - элемент FrameworkElement, который покрывает символ, указывая, что требуется получить оформления (декорирование) ключа клавиатуры, обозначающие символ как мнемосхему клавиатуры. По умолчанию, оформлением ключа клавиатуры является подчеркивание.
- Audio - Элемент звука.
- Border прорисовывает рамку, фон или и то и другое вокруг другого элемента.
- Button представляет собой стандартный компонент кнопки, которой, по существу, реагирует на событие щелчка Click.
- Canvas определяет область, в пределах которой пользователь может поместить явно элементы потомков, осуществляя координацию относительно области Canvas.
- CheckBox используется для предоставления пользователю вариантов выбора, например, истина/ложь. CheckBox обеспечивает пользователю возможность выбора из списка вариантов выбора. Управляющий элемент CheckBox позволяет пользователю выбирать комбинацию вариантов выбора.
- CheckedChangedEventArgs - этот класс содержит дополнительную информацию о событии CheckedChangedEvent.
- CheckedStateChangedEventArgs - этот класс содержит дополнительную информацию о событии CheckedStateChangedEvent.
- ClickEventArgs содержит информацию о событии щелчка Click.
- ColumnStyle представляет изменяемый объект ColumnStyle.
- ColumnStyles - объект IList шаблона Changeable, который является коллекцией элементов Changeable.
- ComboBox - управляющий элемент ComboBox.
- ComboBoxItem - управляющий элемент, реализующий выбираемый элемент внутри ComboBox.
- ContactPickerDialog обеспечивает возможность выбора пользователем одного или большего количества контактов.
- ContactPropertyRequest обеспечивает возможность запроса приложением информации о свойстве контакта через ContactPickerDialog. Данный класс не может наследоваться.
- ContactPropertyRequestCollection представляет коллекцию объектов ContactPropertyRequest.
- ContactSelection - информация о выбранном контакте из Файловой Системы Microsoft Windows под кодовым названием “WinFS”, или Microsoft Active Directory .
- ContactSelectionCollection представляет коллекцию объектов ContactSelection.
- ContactTextBox - управляющий элемент редактирования, поддерживающий выбранные контакты или свойства контактов.
- ContactTextBoxSelectionChangedEventArgs - Аргументы события ContactTextBoxSelectionChanged.
- ContactTextBoxTextChangedEventArgs - Аргументы события ContactTextBoxTextChanged.
- ContactTextBoxTextResolvedEventArgs - Аргументы события TextResolvedToContact.
- ContentChangedEventArgs - Аргументы события ContentChangedEven.
- ContentControl - базовый класс для всех управляющих элементов с единой частью содержимого.
- ContentPresenter используется в пределах стиля управляющего элемента содержимым для обозначения местоположения в визуальном дереве (хромовом шаблоне) управляющего элемента, где должно быть добавлено содержимое.
- ContexMenu - управляющий элемент, определяющий меню вариантов выбора для вызова пользователями.
- ContexMenueventArgs - данные, передаваемые по событию ContexMenuEvent.
- Control (управляющий элемент) представляет базовый класс для всех элементов взаимодействия с пользователем. Этот класс обеспечивает базовый набор свойств для своих подклассов.
- Decorator - базовый класс для элементов, накладывающих эффекты на одиночные элементы потомков или вокруг них, например Border.
- DockPanel определяет область, внутри которой можно разместить элементы потомков как в горизонтальном, так и в вертикальном направлении относительно друг друга.
- DragDeltaEventArgs - данный класс содержит дополнительную информацию о событии DragDeltaEvent.
- FixedPanel - это корневой элемент, используемый в документах фиксированного формата, для вмещения фиксированных страниц для разбиения (текста) на страницы. FixedPanel одномоментно отображает одну страницу содержимого, разбитого на страницы, или набор прокручиваемых страниц.
- FlowPannel используется для разрыва, переноса и выравнивания содержимого, которое превышает длину одной строки. FlowPannel обеспечивает свойства разбиения строки и выравнивания, которые могут быть использованы при вероятности превышения длины одной строки потоком содержимого контейнера, например текстовых данных Text.
- Frame это область, которая может загружать содержимое другого дерева разметки.
- Generator - объект, формирующий интерфейс пользователя UI по поручению (от имени) ItemsControl, работающий под управлением GeneratorFactory.
Средства предоставления первого набора функций, формирования графических объектов.
- GeneratorFactory отвечает за формирование UI по поручению ItemsControl. Он поддерживает соответствие между элементами в ItemsCollection управляющего элемента (сглаженное представление) и соответствующими UIElements. Элемент-контейнер управляющего элемента может запросить средство производства для формирования Generator, которое осуществляет фактическое формирование UI.
- GridPanel определяет область сетки, состоящую из столбцов и строк.
- HeaderItemsControl - базовый класс для всех управляющих элементов, которые содержат несколько элементов и имеют заголовок.
- HorizontalScrollBar - класс горизонтальных полос прокрутки ScrollBar.
- HorizontalSlider - класс горизонтальных ползунков.
- HyperLink - этот класс реализует управляющий элемент навигации. Представителем по умолчанию является TextPresenter.
- Image обеспечивает простой способ включения изображения в документ или приложение.
- IncludeContactEventArgs - Аргументы, передаваемые обработчикам события ContactPickerDialog.IncludeContact.
- ItemCollection поддерживает коллекцию отдельных элементов внутри управляющего элемента. Обеспечивает методы и свойства, которые позволяют изменить содержимое коллекции и получить данные относительно содержимого.
- ItemsChangedEventArgs - GeneratorFactory инициирует событие ItemsChanged для передачи средству компоновки информации о том, что коллекция элементов изменилась.
- ItemsControl - базовый класс для всех управляющих элементов, имеющих несколько потомков.
- ItemsView обеспечивает сглаженное представление ItemCollection.
- KeyboardNavigation - этот класс обеспечивает методы для логической (табуляция Tab) и направленной (стрелка Arrow) навигации между управляющими элементами, получающими фокус управления.
- ListBox - управляющий элемент, реализующий список выбираемых элементов.
- ListItem - управляющий элемент, реализующий выбираемый элемент внутри ListBox.
- Menu - управляющий элемент, определяющий меню вариантов выбора для вызова пользователями.
- MenuItem - элемент-потомок меню Menu. Элементы MenuItem могут быть выбраны для вызова команд. Элементы MenuItem могут быть разделителями. Элементы MenuItem могут быть заголовками для подменю. Элементы MenuItem могут быть помечены или не помечены.
- PageViewer представляет составной управляющий элемент просмотра документа, содержащий управляющий элемент разбиения на страницы, инструментальную панель и управляющий элемент полосы страницы.
- PaginationCompleteEventArgs - параметры события для PaginationCompleteEvent.
- PaginationProgressEventArgs - параметры события для PaginationProgressEvent.
- Pane - обеспечивает метод определения свойств окна на языке разметки (например, "XAML"), без запуска нового окна.
- Panel обеспечивает базовый класс для всех элементов панели Panel. Для приписывания значения элементу панели Panel используется конкретный производный класс.
- RadioButton реализует кнопку выбора вариантов (переключатель) с двумя состояниями: истина или ложь.
- RadioButtonList - этот управляющий элемент служит в качестве сгруппированного управляющего элемента для кнопок RadioButton и является частью, которая обрабатывает взаимно исключающие ситуации для кнопок RadioButton. RadioButtonList наследуется из средства выбора Selector. RadioButtonList, по существу, является единым средством выбора режима выбора Single SelectionMode Selector, и концепция выбора Selection (из средства выбора Selector) выключена из помеченных свойств, сгруппированных RadioButton.
- RowStyle изменяемые Changeable элементы изменяемого шаблона Changeable.
- RowStyles - объект IList шаблона Changeable, который является коллекцией изменяемых элементов Changeable.
- ScrollChangeEventArgs описывает изменение в состоянии прокрутки.
- ScrollViewer -
- SelectedItemsCollection - контейнер для выбранных элементов в селекторе Selector.
- SelectionChangedEventArgs - входные данные для обработчика измененного события выбора.
Средства предоставления второго набора функций, обеспечивающих возможность форматирования содержимого для отображения.
- SimpleText - упрощенный многострочный текстовый элемент с единым форматом, предназначенный для использования в сценариях интерфейса пользователя (UI). SimpleText представляет несколько таких же свойств форматирования, что и текстовые данные Text, и может часто использоваться для усиления эффективности за счет определенной гибкости использования.
- StyleSelector обеспечивает возможность составителю приложения обеспечивать логику выбора стиля на заказ. Например, с классом Вид Ошибок в виде содержимого Content можно использовать конкретный стиль Pri1 для ошибок и другой стиль Pri2 для ошибок. Составитель приложения может подменить метод SelectStyle выбора стиля в производном классе селектора и назначить экземпляр этого класса свойству StyleSelector селектора стиля на классе ContentPresenter.
- Text представляет управляющий элемент текстовых данных Text, обеспечивающий возможность воспроизведения нескольких форматов Text. Text лучше всего использовать внутри приложения интерфейса пользователя UI; усовершенствованные сценарии текстовых данных используют преимущество дополнительного набора возможностей текстовой панели TextPanel. В большинстве случаев, где требуется поддержка относительно простых текстовых данных, Text является предпочтительным элементом благодаря простой сущности и диапазону возможностей.
- TextBox представляет управляющий элемент, обеспечивающий доступную для редактирования область, которая принимает входные текстовые данные.
- TextChangedEventArgs - этот класс представляет тип RoutedEventArgs, соответствующих событиям, инициированным TextRange.SetText().
- TextPanel - формат, размер и рисунок текста. TextPanel поддерживает несколько строк текста и несколько форматов текста.
- ToolTip - управляющий элемент для отображения информации при нависании курсора над управляющим элементом.
- ToolTipEventArgs - данные, передаваемые на ToolTipEvent.
- TransformDecorator содержит потомка и применяет к нему заданное преобразование. TransformDecorator реализует логику для определения размеров и размещения потомка в координатах его местоположения (предварительное преобразование), чтобы после преобразования потомок точно вписывался внутрь пространства средства оформления и использовал максимальную область. Вследствие этого потомку не требуется иметь информацию о том, что к нему было применено преобразование.
- UIElementCollection является упорядоченной коллекцией элементов UIElement.
- ValueChangedEventArgs - этот класс содержит дополнительную информацию относительно события ValueChangedEvent.
- VerticalScrollBar - класс вертикальных полос прокрутки ScrollBar.
- VerticalSlider - класс вертикальных ползунков Slider.
- Video - воспроизведение файла потоковой звуковой или видеоинформации в заданном прямоугольнике внутри текущей системы координат пользователя.
- VisibleChangedEventArgs - этот класс содержит дополнительную информацию относительно события VisibleChangedEvent.
Пространство имен System.Windows.Controls также содержит различные перечисления. Следующий список содержит возможные перечисления, соответствующие пространству имен System.Windows.Controls.
- CharacterCase определяет регистр символов в управляющем элементе TextBox текстового окна при выводе на экран текстовых данных.
- CheckState определяет состояние управляющего элемента, наподобие флаговой кнопки, который может быть помечен, не помечен или установлен в неопределенное состояние.
- ClickMode определяет, когда должно быть возбуждено событие Click щелчка.
- ContactControlPropertyPosition управляет позицией и отображением свойства контакта.
- ContactPickerDialogLayout определяет, как ContactPickerDialog должен отобразить выбранные свойства.
- ContactPropertyCategory определяет, какие значения должны быть обработаны как значения по умолчанию, в случае, где свойство имеет несколько значений, из которых пользователь может сделать выбор. Например, если "Работа" определена в виде предпочтительной категории при запросе свойства номера телефона из ContactPickerDialog, и пользователь выбирает контакт с работой и с номером домашнего телефона, то появится номер телефона работы как вариант выбора, заданный по умолчанию. Далее пользователь может использовать интерфейс пользователя UI для выбора номера домашнего телефона вместо номера телефона работы.
- ContactPropertyType определяет свойство контакта, которое ContactPickerDialog может запрашивать у пользователя.
- ContactType определяет, какие типы контакта отобразить в ContactPickerDialog.
- Direction - этот перечень используется в GeneratorFactory и Generator для определения направления, в котором формирователь создает UI.
- Dock определяет позицию состыковки элемента потомка внутри стыковочной панели DockPanel.
- GeneratorStatus - этот перечень используется в GeneratorFactory для указания своего состояния.
- KeyNavigationMode - тип свойства TabNavigation, определяющий, как будет перемещен контейнером фокус, когда произойдет навигация Tab.
- MenuItemBehavior определяет различные режимы, которые может иметь MenuItem.
- MenuItemType определяет различные типы расположения для MenuItem.
- Orientation - типы ориентации ползунка Slider.
- PageViewerFit осуществляет выбор, как должны быть вписаны страницы в область Client средства PageViewer.
- PageViewerMode осуществляет выбор текущего режима для PageViewer, отображенного в ниспадающем средстве просмотра режимов.
- ScrollerVisibility определяет режим просмотра полосы прокрутки Scrollbar.
- SelectionMode определяет режим выбора для ListBox.
Позиция "Position" является возможным вариантом структуры, соответствующей пространству имен System.Windows.Controls. С использованием этой структуры пользователь формирователя Generator описывает позиции. Например для начала формирования в прямом направлении с начала списка элементов определяется позиция (-1, 0) и направление вперед Forward. Для начала формирования в обратном направлении с конца списка определяется позиция (-1, 0) и направление назад Backward. Для формирования элементов после элемента с индексом k определяется позиция (k, 0) и направление вперед Forward.
Следующий список содержит возможные варианты делегатов, соответствующих пространству имен System.Windows.Controls.
- CheckedChangedEventHandler - этот делегат используется обработчиками события CheckedChangedEvent.
- CheckStateChangedEventHandler - этот делегат используется обработчиками события CheckStateChangedEvent.
- ClickEventHandler представляет методы, обрабатывающие событие щелчка Click.
- ContactTextBoxSelectionChangedEventHandler - обработчик делегатов для события ContactTextBoxSelectionChanged.
- ContactTextBoxTextChangedEventHandler - обработчик делегатов для события ContactTextBoxTextChanged.
- ContactTextBoxTextResolvedEventHandler - обработчик делегатов для события TextResolvedToContact.
- ContentChangedDelegate - делегат для ContentChangedEvent.
- ContextMenuEventHandler - тип обратного вызова для обработки ContextMenuEvent.
- DragDeltaEventHandler - этот делегат используется обработчиками события DragDeltaEvent.
- IncludeContactEventHandler - обработчик для события ContactPickerDialog.IncludeContact.
- ItemsChangedEventHandler - делегат для использования для обработчиков, которые получают ItemsChangedEventArgs.
- OpenedEventHandler - обработчик для события ContactPickerDialog.Opened.
- PaginationCompleteDelegate - делегат для PaginationCompleteEvent.
- PaginationProgressDelegate - делегат для PaginationProgressEvent.
- ScrollChangeEventHandler - этот делегат используется обработчиками события ScrollChangeEvent.
- SelectionChangedEventHandler - тип делегата для обработки события измененного выбора.
- TextChangedEventHandler - делегат для использования для обработчиков, которые получают TextChangedEventArgs.
- ToolTipEventHandler - тип обратного вызова для обработки ToolTipEvent.
- ValueChangedEventHandler - этот делегат используется обработчиками события ValueChangedEvent.
- VisibleChangedEventHandler - этот делегат используется обработчиками события VisibleChangedEvent.
Другое пространство имен System.Windows.Controls.Atoms является подпространством имен пространства имен System.Windows.Controls. System.Windows.Controls.Atoms включает в себя соответствующие управляющие элементы, параметры события и обработчики события. Следующий список содержит возможные варианты классов, соответствующих пространству имен System.Windows.Controls.Atoms.
- PageBar представляет прокручиваемый управляющий элемент разбиения на страницы.
- PageElement воспроизводит определенную страницу содержимого, разбитого на страницы. Страница, которая должна быть воспроизведена, определяется свойством PageSource.
- PageHoveredEventArgs обеспечивает информацию относительно того, где находится указатель мыши.
- PageScrolledEventArgs содержит информацию, относящуюся к событию PageScrolledEvent.
- PageSelectedEventArgs PageSelectedEvent инициируется, когда делается новый выбор диапазона строк/столбцов.
- PageSelector - РageSelector обеспечивает возможность выбора пользователем диапазона строк/столбцов страниц для отображения.
- PageSource определяет источник содержимого, которое должно быть разбито на страницы. Также обеспечивает свойства и способы для форматирования содержимого, разбитого на страницы.
Следующий список содержит примеры делегатов, соответствующих пространству имен System.Windows.Controls.Atoms.
- PageHoveredEventHandler - этот делегат используется обработчиками события PageHoveredEvent.
- PageScrolledEventHandler - этот делегат используется обработчиками события PageHovered.
- PageSelectedEventHandler - тот делегат используется обработчиками события PageSelectedEvent.
Пространство имен System.Windows.Controls.Primitives является другим подпространством имен пространства имен System.Windows.Controls. Как упомянуто выше, подпространство Primitives имен примитивов включает в себя управляющие элементы, которые предназначены для использования в качестве примитивов другими более сложными управляющими элементами. Следующий список содержит возможные варианты классов, соответствующих пространству имен System.Windows.Controls.Primitives.
- ButtonBase - при подмене в производном классе определяет соответствующие события и свойства и обеспечивает обработчики для соответствующих входных событий.
- Popup - управляющий элемент, создающий всплывающее окно, которое содержит содержимое.
- RangeBase представляет базовый класс для элементов, имеющих определенный диапазон. Возможными вариантами таких элементов являются полосы прокрутки и индикаторы выполнения. Этот класс определяет соответствующие события и свойства и обеспечивает обработчики для событий.
- RepeatButton - управляющий элемент RepeatButton добавляет семантику повторения, когда происходит событие щелчка Click.
- ScrollArea является действующим элементом для осуществления прокрутки. Он содержит усеченное содержимое и обеспечивает свойства для представления (раскрытия) смещения и протяженности содержимого. Он также обеспечивает заданную по умолчанию обработку входных данных, чтобы прокрутка могла управляться программно или через клавиатуру или колесико мыши.
- ScrollBar - класс полосы прокрутки ScrollBar.
- Selector - базовый класс для управляющих элементов, которые выбирают элементы среди своих потомков.
- Slider - класс ползунка Slider.
- Thumb - управляющий элемент бегунка обеспечивает основные функциональные возможности перемещения посредством перетаскивания для полос прокрутки и элементов управления окном, изменяющих размеры окна.
"IEnsureVisible" является примером интерфейса, соответствующего пространству имен System.Windows.Controls.Primitives. IEnsureVisible реализован на визуальном средстве для просмотра через прокручивание/перемещение визуальных потомков.
Следующий список содержит возможные варианты (примеры) перечислений, соответствующих пространству имен System.Windows.Controls.Primitives.
- ArrowButtonStates -
- CloseModeType описывает, как всплывающий элемент должен реагировать на разные события мыши.
- Part - перечисление Part используется для указания семантического использования управляющих элементов, выполняющих полосу прокрутки.
- PartStates - состояния части полосы прокрутки ScrollBar.
- PlacementType описывает, где должен быть расположен всплывающий элемент на экране.
- SizeBoxStates -
Пространство 312 имен документов является коллекцией семантических и форматирующих элементов, которые используются для создания документов с большими возможностями форматирования и большими семантическими возможностями. В одном варианте осуществления, "элемент" является классом, который используется в первую очередь в совокупности с иерархией элементов (определенной как "дерево"). Эти элементы могут быть интерактивными (например, при получении данных, вводимых пользователем через клавиатуру, мышь или другое устройство ввода данных), могут выполнять изображения или объекты и могут способствовать размещению других элементов. Примеры элементов включают в себя элемент "Block", который реализует общий блок, элемент "Body", который представляет содержимое, включающее тело таблицы, элемент "Cell", который содержит табличные данные внутри таблицы, элемент "Header", который представляет содержимое, включенное в заголовок таблицы, и элемент "PageBreak", который используется для разбиения содержимого по нескольким страницам.
Следующий список содержит примеры классов, представленных пространством имен System.Windows.Documents.
- AdaptiveMetricsContext обеспечивает корневой элемент для документов в адаптивном поточном формате. При инкапсулировании панели потомка в элемент AdaptiveMetricsContext содержимое панели обрабатывается Механизмом Считывания Показателей - Reading Metrics Engine (RME). Размер панели потомка используется для вычисления количества и размера всех столбцов, а также оптимальных размеров шрифта и высот строк.
- Block реализует общий элемент блока, который не порождает режим, выполняемый по умолчанию.
- BlockElement реализует базовый класс для всех элементов Block блока.
- Body представляет содержимое, которое содержит тело элемента Table таблицы.
- Bold реализует элемент Bold в полужирном формате, производный от встроенного Inline.
- BreakRecord сохраняет информацию, для которой требуется продолжить форматирование содержимого через разбиение на страницы. Для обеспечения поддержки разбиения на страницы осуществляется наследование этого класса. Является абстрактным классом.
- Cell - ячейки Cell содержат табличные данные внутри таблицы Table. Элементы Cell содержатся внутри строки Row.
- CellCollection - упорядоченная коллекция ячеек таблицы.
- Column - элемент столбца Column используется для распределения содержимого панели GridPanel сетки или таблицы Table.
- ColumnCollection является упорядоченной коллекцией столбцов Column.
- ColumnResult представляет информацию, относящуюся к просмотру столбца.
- ContainerParagraphResult обеспечивает доступ к вычисляемым параметрам компоновки для объекта Paragraph, который только содержит другие объекты Paragraph абзаца.
- ContentPosition - представляет позицию содержимого внутри абзаца. Для описания позиции ассоциированного содержимого осуществляется наследование этого класса. Является абстрактным классом.
Средства предоставления третьего набора функций, обеспечивающих возможность создания компонентов графических объектов
- Document - задача класса Document состоит в разъединении содержимого документа с окружающим его "хромом" (цветовым оформлением) интерфейса пользователя UI. "Разъединение" означает, что обеспечивается возможность создания документа без необходимости обдумывания (и фиксирования) его UI. Класс Document содержит содержимое документа, обычно текстовую панель TextPanel или фиксированную панель FixedPanel и потомков. Визуальное дерево (по умолчанию, средство просмотра страницы PageViewer) связано с этим элементом через механизм WPP управления стилем.
- DocumentPage представляет информацию о компоновке для управляющего элемента, соответствующего странице документа, которая подлежит разбиению на страницы. Для реализации описания информации о компоновке для указанных управляющих элементов осуществляется наследование этого класса. Является абстрактным классом.
- DocumentPageParagraphResult обеспечивает доступ к вычисляемым параметрам компоновки для объектов, на которые осуществляется воздействие разбиения на страницы.
- FindEngine - базовый класс для алгоритмов поиска.
- FindEngineFactory - средство производства (конструирования) алгоритмов поиска.
- FixedPage обеспечивает доступ к одной странице содержимого внутри документа, скомпонованного в фиксированном формате.
- Footer представляет содержимое, которое включает нижний колонтитул элемента таблицы Table.
- Header представляет содержимое, которое включает заголовок элемента таблицы Table.
- Heading реализует элемент уровня блока, который реализует текстовые данные в виде заголовка.
- HyphenationDictionary представляет словарь, предназначенный для обеспечения поддержки расстановки переносов внутри приложений. Он может содержать встроенный словарь и ссылку на внешний словарь. Встроенный словарь имеет более высокий приоритет и будет применяться до вхождений во внешний словарь.
- Hyphenator - объект расстановки переносов Hyphenator поддерживает ссылку на данные с расстановкой переносов внутри словаря HyphenationDictionary, а также выполняет расстановку переносов.
- Inline реализует общий встроенный элемент Inline, который не порождает режима воспроизведения, определенного по умолчанию.
- InlineElement реализует общий встроенный элемент в качестве базового класса для всех встроенных элементов.
- Italic реализует элемент Italic курсива, производный от встроенного элемента Inline.
- LineBreak представляет элемент разметки, который принудительно реализует обрыв строки.
- LineResult обеспечивает доступ к вычисляемой информации строки текста.
- List - реализует элемент списка List. Списки List являются элементами уровня блока, разработанными для их форматирования маркерами, например буллитами или нумерацией.
- ListElementItem реализует ListElementItem, поддерживающий маркеры, например буллиты или нумерацию.
- Note реализует элемент Note примечания, который является аналогом элемента примечания в HTML.
- PageBreak представляет элемент разметки, используемый для разбиения содержимого по многим страницам.
- PageDescriptor реализует дескриптор страницы PageDescriptor, в котором хранится информация, необходимая для создания компоновки с разбиением на страницы.
- Paragraph реализует элемент уровня блока, используемый для воспроизведения текста в (формате) абзаца. Режим воспроизведения аналогичен режиму для элемента абзаца в HTML.
- ParagraphResult обеспечивает доступ к вычисляемым параметрам компоновки для объекта Paragraph абзаца.
- Row определяет строку внутри элемента Table таблицы или панели GridPanel сетки.
- RowCollection представляет упорядоченную коллекцию cтрок Row.
- RowGroup определяет свойства, заданные по умолчанию, для группы строк в таблице Table или панели GridPanel сетки.
- Section реализует общий элемент контейнера. Режим воспроизведения аналогичен режиму для элемента div в HTML.
- SmallCaps реализует встроенный элемент SmallCaps. SmallCaps капителя является печатными формами, которые воспроизводят такие же малые прописные символы для выделительного шрифта, как в заглавии.
- Subscript представляет встроенный элемент нижнего индекса Subscript. Символы Subscript пишутся непосредственно ниже других символов, ниже и слева, или ниже и справа от других символов.
- Superscript представляет встроенный элемент верхнего индекса Superscript. Символы Superscript обычно являются буквами или числами и воспроизводятся непосредственно выше, выше и слева, или выше и справа от других символов.
- Table - используется для отображения сложных данных в табличной форме с использованием языка разметки (например, "XAML").
- TextArray - основной API для доступа к текстовым данным и манипулирования ими.
- TextChangedEventArgs определяет параметры события, передаваемые при изменении TextArray.
- TextElement обеспечивает функциональные возможности диапазона текстовых данных TextRange для дерева текстовых данных TextTree. Он является постоянным непрерывным TextRange с фиксированными конечными точками. Он обеспечивает поддержку ввода элемента содержимого ContentElement Input, фокусирования Focus и событий Eventing. Он также обеспечивает поддержку свойства DependencyObject.
- TextNavigator может перечислять содержимое текста. Реализует перемещаемую позицию текста TextPosition. Он может перемещаться при прогоне текста или позиционироваться в известном местоположении в тексте.
- TextParagraphResult обеспечивает доступ к вычисляемым параметрам компоновки для текста, включая плавающие объекты и данные.
- TextPosition является объектом, представляющим определенную позицию в массиве TextArray текстовых данных. Контактный объект компактного размещения, представляющий позицию в тексте, который автоматически поддерживает позицию при изменении текста. К позициям внутри одного массива TextArray текстовых данных (одного содержимого) применимы только операции cравнения. TextPosition может быть статическим или перемещаемым. Свойство IsChangeable дает информацию о виде позиции.
- TextRange является абстрактным классом, обеспечивающим общую связь нулевого количества или большего количества поддиапазонов со свойствами. Манипулирование поддиапазоном определено в производных классах.
- TextRangeMovable является абстрактным классом для перемещаемых диапазонов текстовых данных TextRange. Он обеспечивает дополнительную возможность перемещения начальной и конечной точек, основанных на TextUnits.
- TextTreeChangedEventArgs определяет параметры события, передаваемые при изменении TextArray.
- TextTreeDumper - TreeDumper является классом тестирования дерева, который является открытым вследствие проблем упаковки.
- TextTreeNavigator является объектом, представляющим некоторую перемещаемую позицию в TextTree. Он является определенной реализацией TextNavigator для использования только в TextTree.
- TextTreePosition является объектом, представляющим некоторую постоянную позицию в TextTree. Он является определенной реализацией TextPosition для использования только в TextTree.
- TextTreeRange обеспечивает средство диапазона текстовых данных TextRange для дерева текстовых данных TextTree. Является изменяемым непрерывным диапазоном текстовых данных TextRange с перемещаемыми конечными точками.
- TextTreeRangeContentEnumerator - перечислитель Enumerator потомков объекта непосредственно по диапазону дерева текстовых данных TextTreeRange.
- TextUnit - расширяемый блок навигации по тексту.
- TextUnits - блоки текста, обычно используемые для позиции в текстовых данных TextPosition и диапазона текстовых данных TextRange.
- Typography обеспечивает доступ к широкому набору свойств типографской разметки текста открытого типа OpenType.
- UIElementParagraphResult - ParagraphResult для абзаца, который составлен полностью из элементов интерфейса пользователя UIElement. Используется для плавающих объектов Floaters, рисунков Figures и внедренных элементов UIElements уровня блока.
- Underline реализует элемент подчеркивания Underline, производный от встроенного элемента InlineElement.
Следующий список содержит примеры интерфейсов, соответствующих пространству имен System.Windows.Documents.
.
- IDocumentContentHost - этот интерфейс реализуется на хосте (хост-компьютере), на котором хранится содержимое, чтобы потомки хоста могли уведомлять хост при изменении содержимого
- IDocumentFormatter - этот интерфейс реализуется на элементе для обеспечения поддержки функций документа, таких как разбиение на страницы.
- ITextDocumentResult - этот интерфейс реализуется для обеспечения информации, поддерживающейся для документа.
- ITextParagraphResult - этот интерфейс реализуется для обеспечения текста и информации позиционирования для абзацев текста.
Следующий список содержит примеры перечислений, соответствующих пространству имен System.Windows.Documents.
- ElementEdge - идентифицирует край объекта, где расположена позиция в текстовых данных TextPosition.
- FindAdvancedOptions - усовершенствованные опции поиска, используемые алгоритмом поиска FindAlgorithm (инициализация поиска) и классами TextRangeMovable/TextSelection (выполнение упрощенного поиска).
- FindOptions - опции упрощенного поиска, используемые в методах TextBox.Find.
- LogicalDirection определяет логическое направление для перемещения по тексту. Также используется для определения того, куда будет перемещаться позиция в текстовых данных TextPosition при вставке содержимого в TextPosition.
- TextArrayRunType идентифицирует часть, где расположена позиция в текстовых данных TextPosition с учетом LogicalDirection.
- TextChangeOptions - возможные изменения текста для CanChangeText.
- TextMoveOptions управляет перемещением навигатора по тексту TextNavigator, определяя условия останова навигации.
Следующий список содержит возможные варианты делегатов, соответствующих пространству имен System.Windows.Documents.
- ObjectCloneDelegate - метод обратного вызова для обеспечения клона или копии объекта зависимости DependencyObject при копировании или перемещении части массива текстовых данных TextArray.
- TextChangedEventHandler - этот делегат вызывается с TextChangedEventArgs каждый раз, когда содержимое добавляется в дерево текстовых данных TextTree или удаляется из него.
Пространство имен 314 форм является коллекцией элементов векторной графики, используемых для создания изображений и объектов. Использование элементов векторной графики обеспечивает возможность простого изменения размеров элементов в соответствии с требованиями определенного интерфейса или устройства отображения.
Следующий список содержит примеры классов, представленных пространством имен System.Windows.Shapes.
- Ellipse прорисовывает эллипс.
- Glyphs - представляет форму глифа на языке разметки, например, "XAML". Глифы используются для представления шрифтов.
- Line прорисовывает прямую линию между двумя точками.
- Path прорисовывает ряд соединенных линий и кривых.
- Polygon прорисовывает многоугольник (соединенный ряд линий, формирующих замкнутую форму).
- Polyline прорисовывает ряд соединенных прямых линий.
- Rectangle прорисовывает прямоугольник.
- Shape - абстрактный класс, обеспечивающий основные функциональные возможности для элементов формы, таких как эллипс, многоугольник и прямоугольник.
Пространства имен System.Windows.Controls, System.Windows.Documents и System.Windows.Shapes обеспечивают комплексную систему для разработки приложений и соответствующих компонентов. Данная комплексная система обеспечивает общую модель программирования для всех трех пространств имен, вследствие этого упрощая разработку прикладных программ. Такая возможность взаимодействия всех трех пространств имен обеспечивает возможность изучения разработчиками единой архитектуры программирования, которая применяется к любым элементам определения класса, обеспечиваемым тремя пространствами имен. Например, во всех трех пространствах имен используется общий язык разметки. Общий язык разметки обеспечивает соответствие классов и свойств, определенных в разметке XML для дерева объектов с приписанными значениями.
Дополнительно, в трех пространствах имен используются согласованная модель программирования и согласованные службы (услуги). Например, для инициализации и обработки различных событий используется согласованная система событий. Общая система свойств используется для задания стиля различных свойств, связывания данных со свойством или для анимации свойства, независимо от того, соответствует ли это свойство пространству имен "Controls", "Documents" или "Shapes". Дополнительно, одинаковые входные парадигмы и обработка компоновки являются общими для всех трех пространств имен. Например, различные управляющие элементы из пространства имен System.Windows.Controls могут быть вложены в середине содержимого документа, определенного с использованием пространства имен System.Windows.Documents.
Возможные исходные файлы должны включать набор окон и субокон (также определенных как "страницы"), которые определены декларативно с использованием "Controls", "Documents" и "Shapes". Для окон и субокон также обеспечена интерактивная логика. Интерактивная логика определяет программный код, который выполняется в ответ на определенное действие пользователя или в ответ на возникновение события или действия. Интерактивная логика определяется, например, с использованием языка единой среды исполнения программ, написанных на различных языках программирования (CLR). CLR является средой выполнения, которая обрабатывает выполнение программного кода (например, программного кода .NET) и обеспечивает различные услуги, такие как услуги, относящиеся к защите, и услуги, связанные с памятью. Примеры языков CLR включают в себя C# и Visual Basic. Исходные файлы также могут включать в себя файлы других автономных языков программирования, например, C# или Visual Basic.
Хотя данная часть описания относится к интеграции пространств имен "Controls", "Documents" и "Shapes", может использоваться интеграция любых или всех пространств имен и подпространств имен из данного описания.
Пространство 316 имен данных включает в себя классы и интерфейсы, используемые для связывания свойств элементов с источниками данных, классами источников данных и реализациями представлений коллекций данных и видов. Эти классы и интерфейсы также используются для обработки исключений в записях данных и обеспечивают возможность оперативного создания интерфейса пользователя на основе информации из различных источников данных. Данные могут быть отображены в текстовом виде или могут быть использованы для изменения формата отображения, например отображения в красном цвете сумм в долларах, если они являются отрицательными. Возможные варианты классов включают в себя класс "Bind" (Связывания), который представляет объект объявления связывания, управляющий связыванием между интерфейсом пользователя с динамическими свойствами и исходными данными, и класс "XmlDataSource", который служит в качестве источника данных для связывания данных с узлами содержимого XML.
Пространство 318 имен мультимедиа обеспечивает различные классы мультимедиа. Разработчики приложений, так же как разработчики компонентов, могут использовать эти классы для разработки различных функциональных возможностей представления. Возможные варианты классов в пространстве имен 318 мультимедиа включают класс "ImageEffect", который обеспечивает некоторые эффекты формирования изображения (например, размывания и полутонов) и класс "Brush" (Кисть), который обеспечивает механизм для заполнения области с использованием чистых цветов, градиентов, изображений, видеоинформации и т.д.
Пространство 318 имен мультимедиа включает в себя подпространство имен System.Windows.Media.Animation, которое включает в себя услуги, обеспечивающие разработчику свойства анимации и координирующие набор анимаций с набором временных шкал. Анимация является объектом, значение которого изменяется в течение времени. Эффекты анимации включают в себя перемещение объекта по изображению на дисплее и изменение размера, формы или цвета объекта. Для реализации разных эффектов анимации обеспечено несколько классов анимации. Эффекты могут быть получены посредством сопоставления анимации значению свойства элемента. Например, для создания прямоугольника, который постепенно появляется и исчезает, свойству непрозрачности прямоугольника сопоставляется одна или большее количество анимаций.
Пространство 318 имен мультимедиа также включает в себя подпространство имен System.Windows.Media.TextFormatting, которое обеспечивает различные текстовые услуги. Например, средство работы с текстом "TextFormatter" (Форматтер текстов) обеспечивает услуги для разбиения текстовых строк и форматирования текста, представленного на дисплее. "TextFormatter" может обрабатывать различные форматы символа текста и стили абзаца, а также обрабатывать международную схему расположения текста.
Пространство 320 имен разработки обеспечивает классы, обеспечивающие возможность редактирования форм и текста, форматирования данных и совместного использования пересекающихся данных. Указанные классы обеспечивают расширяемую инфраструктуру для редактирования документов, приложений и другого содержимого.
Пространство 322 имен ввода данных включает в себя управляющую программу для ввода данных, координирующую входные данные, принимаемые системой. Пространство 322 имен ввода данных также включает в себя классы, способствующие управлению различными устройствами ввода данных, такими как клавиатура или мышь, и обеспечивающие контроль над ними.
Пространство 324 имен навигации обеспечивает набор классов и услуг, обеспечивающих возможность формирования приложений с парадигмами навигации, таких как приложения браузера (просмотра). Указанные классы и услуги обеспечивают возможность разработки приложений с настраиваемыми “навыками” навигации. Например, при покупке продукта или службы у интерактивного торговца щелчок кнопкой "Back" (Назад) приводит к отображению приложением другой страницы, которая запрашивает пользователя, требуется ли ему отменить или изменить свой заказ. В другом возможном варианте, активизация кнопки "Refresh" (Обновить) приводит к извлечению приложением новых данных вместо первой перезагрузки приложения, за которой следует извлечение новых данных. Пространство 324 имен навигации также включает в себя функции страницы, обеспечивающие механизм для формирования иерархии запросов, представляемых пользователю.
Пространство 326 имен автоматизации обеспечивает набор классов, поддерживающих автоматизацию интерфейса пользователя и возможности доступа.
Пространство 328 имен сериализации обеспечивает синтаксический анализатор, который может загружать иерархию объектов (например, элементов) из файла XML или файла с двоичным представлением, или сохранять в него иерархию объектов. Этот процесс также устанавливает свойства, соответствующие объектам, и устанавливает ассоциации обработчиков событий.
Пространство 330 имен возможности взаимодействия обеспечивает набор классов, обеспечивающих возможность взаимодействия с другими операционными системами или вычислительными платформами.
Пространство 332 имен Forms.interop обеспечивает элемент, обеспечивающий возможность хостирования приложением операции управления формой.
Другое пространство имен, System.IO.CompoundFile (не изображено на фиг.3) обеспечивает услуги для использования составного файла, в котором хранятся различные распределенные файлы документов. Эти услуги обеспечивают возможность шифрования и сжатия содержимого. Услуги также поддерживают хранение нескольких представлений одного содержимого, например документ с возможностью повторно распределять текст (по колонкам макета) и документ фиксированного формата.
Возможная вычислительная система и среда
Фиг.4 иллюстрирует возможный вариант соответствующей вычислительной среды 400, внутри которой может быть (полностью или частично) реализована инфраструктура 132 программирования. Вычислительная среда 400 может использоваться в вычислительной и сетевой архитектурах, описанных здесь.
Возможная вычислительная среда 400 является только одним возможным вариантом вычислительной среды и не предназначена для наложения какого-либо ограничения на область использования или на функциональные возможности вычислительной и сетевой архитектур. Также вычислительная среда 400 не должна интерпретироваться как зависимая от любого компонента или комбинации компонентов, иллюстрируемых возможной вычислительной средой 400, или как имеющая в них необходимость.
Инфраструктура 132 может быть реализована в отношении некоторых других конфигураций и сред универсальных вычислительных систем и специальных систем. Возможные варианты известных вычислительных систем, сред и/или конфигураций, которые могут быть использованы, включают в себя, например, персональные компьютеры, компьютеры-сервера, многопроцессорные системы, системы, основанные на микропроцессорах, сетевые персональные компьютеры (PC), миникомпьютеры, универсальные компьютеры, распределенные вычислительные среды, содержащие любые из указанных систем или устройств, и т.д. Сжатые или сокращенные версии структуры также могут быть реализованы в устройствах-клиентах с ограниченными ресурсами, таких как сотовые телефоны, персональные цифровые ассистенты, переносные компьютеры или другие вычислительные устройства/устройства связи.
Инфраструктура 132 может быть описана в основном контексте инструкций, выполняемых компьютером, таких как программные модули, выполняемые одним или большим количеством компьютеров или других устройств. По существу, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., выполняющие конкретные задачи или реализующие определенные абстрактные типы данных. Инфраструктура 132 может быть осуществлена практически также в распределенных вычислительных средах, где задачи выполняются удаленными устройствами обработки данных, соединенными через сеть связи. В распределенной вычислительной среде программные модули могут быть размещены на носителях информации локальных и удаленных компьютеров, включая запоминающие устройства.
Вычислительная среда 400 содержит универсальное вычислительное устройство в виде компьютера 402. Компоненты компьютера 402 могут содержать, в частности, один или большее количество процессоров 404, системную память 406 и системную шину 408, соединяющую различные компоненты системы, включая процессор 404, с системной памятью 406.
Системная шина 408 представляет один или большее количество из нескольких возможных типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт AGP и шину процессора или локальную шину, использующие любую из многих архитектур шины. В виде возможного варианта такие архитектуры могут включать шину ISA архитектуры, соответствующей промышленному стандарту (АПС), шину MCA микроканальной архитектуры (МКА), шину EISA расширенной стандартной архитектуры для промышленного применения (РАПС), локальную шину VESA Ассоциации по стандартам в области видеоэлектроники (АСВЭ) и шину PCI взаимодействия периферийных устройств (также известную, как шина Mezzanine) и т.д.
Компьютер 402 обычно содержит несколько носителей информации, считываемых компьютером. Такой носитель информации, считываемый компьютером, может быть любым доступным носителем информации, к которому может осуществить доступ компьютер 402 и который включает в себя энергозависимый и энергонезависимый носитель информации, съемный и несъемный носитель информации.
Системная память 406 включает в себя носитель информации, считываемый компьютером, в виде энергозависимой памяти, например оперативное запоминающее устройство RAM (ОЗУ) 410 и/или энергонезависимой памяти, например постоянное запоминающее устройство ROM (ПЗУ) 412. Базовая система 414 ввода/вывода BIOS (БИОС), содержащая базовые процедуры, способствующие передаче информации между элементами внутри компьютера 402, например используемые при запуске, хранится в ПЗУ 412. ОЗУ 410 в основном содержит данные и/или программные модули, к которым можно осуществить доступ немедленно и/или с которыми в текущее время оперирует процессор 404.
Компьютер 402 также может содержать другие съемные/несъемные, энергозависимые/энергонезависимые носители информации компьютера. В виде возможного варианта фиг.4 изображает накопитель 416 на жестких дисках для считывания с несъемного, энергонезависимого магнитного носителя информации (не изображен) или для записи на него, накопитель 418 на магнитных дисках для считывания со съемного энергонезависимого магнитного диска 420 (например, “гибкого диска”) или для записи на него, и накопитель 422 на оптических дисках для считывания со съемного энергонезависимого оптического диска 424, например компакт-диска CD-ROM, ПЗУ на цифровом видеодиске DVD-ROM, или другого оптического носителя информации, или для записи на него. Каждый из накопителей накопитель 416 на жестких дисках, накопитель 418 на магнитных дисках и накопитель 422 на оптических дисках - подсоединен к системной шине 408 посредством одного или большего количества интерфейсов 426 носителей данных. В виде другого примера, накопитель 416 на жестких дисках, накопитель 418 на магнитных дисках и накопитель 422 на оптических дисках могут быть подсоединены к системной шине 408 посредством одного или большего количества интерфейсов (не изображены).
Накопители на дисках и соответствующие им носители информации, считываемые компьютером, обеспечивают энергонезависимое хранение инструкций, считываемых компьютером, структур данных, программных модулей и других данных для компьютера 402. Хотя в возможном варианте изображены жесткий диск 416, съемный магнитный диск 420 и съемный оптический диск 424, очевидно, что для реализации возможной вычислительной системы и среды могут быть использованы другие виды носителя информации, считываемого компьютером, на которых могут храниться данные, к которым может осуществить доступ компьютер, например кассеты на магнитной ленте или другие магнитные запоминающие устройства, карточки флэш-памяти, компакт-диски CD-ROM, универсальные цифровые диски (DVD) или другие оптические запоминающие устройства, оперативные запоминающие устройства (RAM), постоянные запоминающие устройства (ROM), электронно-перепрограммируемая постоянная память (EEPROM) и т.д.
На жестком диске 416, магнитном диске 420, оптическом диске 424, ROM 412 и/или RAM 410 может храниться любое количество программных модулей, включая, например, операционную систему 426, одну или большее количество прикладных программ 428, другие программные модули 430 и данные 432 программы. Каждый программный модуль: операционная система 426, одна или большее количество прикладных программ 428, другие программные модули 430 и данные 432 программы (или определенная их комбинация) - может содержать элементы инфраструктуры 132 программирования.
Пользователь может осуществлять ввод команд и информации в компьютер 402 посредством устройств ввода, таких как клавиатура 434 и указательное устройство 436 (например, мышь). В число других устройств 438 ввода (не изображены) могут входить микрофон, джойстик, игровая панель, спутниковая антенна, последовательный порт, сканер и/или подобные устройства. Указанные и другие устройства ввода соединены с процессором 404 посредством интерфейсов 440 для ввода/вывода данных, подсоединенных к системной шине 408, но они могут быть соединены с процессором посредством другого интерфейса и других структур шины, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB).
Также к системной шине 408 посредством интерфейса, такого как видеоадаптер 444, может быть подсоединен монитор 442 или другой тип устройства отображения. В дополнение к монитору 442 другие периферийные устройства вывода могут содержать такие компоненты, как динамики (не изображены) и принтер 446, которые могут быть подсоединены к компьютеру 402 через интерфейсы 440 для ввода/вывода данных.
Компьютер 402 может функционировать в среде с сетевой структурой, используя логические соединения с одним или большим количеством удаленных компьютеров, например удаленным вычислительным устройством 448. Удаленное вычислительное устройство 448 может быть, например, персональным компьютером, переносным компьютером, сервером, маршрутизатором, сетевым компьютером, одноранговым устройством или другим узлом общей сети и т.д. Удаленное вычислительное устройство 448 изображено в виде переносного компьютера, который может содержать многие или все элементы и функции, описанные здесь в отношении компьютера 402.
Логические соединения между компьютером 402 и удаленным компьютером 448 изображены в виде локальной сети LAN (ЛС) 450 и общей глобальной сети WAN (ГС) 452. Такие сетевые среды часто используются в офисах, корпоративных вычислительных сетях, сетях интранет и в Интернет.
При реализации в сетевой среде ЛС компьютер 402 соединяется с локальной сетью 450 посредством сетевого интерфейса или адаптера 454. При реализации в сетевой среде ГС компьютер 402 обычно содержит модем 456 или другое средство для установления связи через глобальную сеть 452. Модем 456, который может быть внутренним или внешним относительно компьютера 402, может быть подсоединен к системной шине 408 посредством интерфейса 440 для ввода/вывода данных или другого соответствующего механизма. Ясно, что изображенные сетевые соединения являются возможным вариантом, и может быть использовано другое средство установления линии(ий) связи между компьютерами 402 и 448.
В среде с сетевой структурой, например иллюстрируемой вычислительной средой 400, программные модули, изображенные в отношении компьютера 402, или их части могут храниться в удаленных запоминающих устройствах. Например, удаленные прикладные программы 458 резидентно хранятся в запоминающем устройстве удаленного компьютера 448. Для пояснения, прикладные программы и другие выполняемые программные компоненты, такие как операционная система, изображены здесь в виде дискретных блоков, хотя понятно, что такие программы и компоненты в разные моменты времени резидентно хранятся в разных компонентах запоминающих устройств вычислительного устройства 402, и выполняются процессором(ами) обработки данных компьютера.
Реализация структуры 132 и, в частности, API 142 или вызовов, делаемых к API 142, может храниться на нескольких видах носителей информации, считываемых компьютером, или передаваться по ним. Носитель информации, считываемый компьютером, может быть любым доступным носителем информации, к которому может осуществить доступ компьютер. В виде возможного варианта, носитель информации, считываемый компьютером, может включать в себя “носитель информации компьютера” и “средство связи” и т.д. “Носитель информации компьютера” включает в себя энергозависимый и энергонезависимый, съемный и несъемный носитель информации, реализованный любым способом или технологией для хранения информации, такой как инструкции, считываемые компьютером, структуры данных, программные модули или другие данные. Носитель информации компьютера включает в себя, в частности, RAM, ROM, EEPROM, флэш-память или другую технологию памяти, компакт-диск CD-ROM, универсальные цифровые диски DVD (УЦД) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, магнитный накопитель на дисках или другие магнитные запоминающие устройства или любое другое средство, которое может использоваться для хранения необходимой информации и к которому может осуществить доступ компьютер.
“Средство связи” обычно воплощает инструкции, считываемые компьютером, структуры данных, программные модули или другие данные в модулированном сигнале данных, например сигнале несущей или в другом механизме переноса информации. Средство связи также включает в себя любое средство доставки информации. Термин «модулированный сигнал данных» означает сигнал, который имеет одну или большее количество из набора его характеристик, или измененный таким образом, чтобы кодировать информацию в сигнале. В виде возможного варианта, средство связи включает в себя проводное средство, такое как проводная сеть или прямое кабельное соединение, и беспроводное средство, такое как акустическое, радио, инфракрасное и другое беспроводное средство и т.д. Комбинации любых упомянутых выше средств также должны быть включены в контекст носителей информации, считываемых компьютером.
В виде другого варианта, части структуры могут быть реализованы в аппаратных средствах или в комбинации аппаратных средств, программного обеспечения, и/или в программно-аппаратных средствах. Например, для реализации одной или большего количества частей структуры могут быть разработаны одна или большее количество специализированных интегральных схем (ASIC) или программируемых логических устройств (PLD).
Интерфейс программирования (или просто интерфейс) может рассматриваться как любой механизм, процесс, протокол для обеспечения возможности взаимодействия одного или большего количества фрагментов кода с функциональными возможностями, обеспечиваемыми одним или большим количеством других фрагментов кода, или для доступа к ним. В виде другого варианта, интерфейс программирования может рассматриваться как один или большее количество механизмов, способов, вызовов функций, модулей, объектов и т.д. компонента(ов) системы, которые могут взаимодействовать с одним или большим количеством механизмов, способов, вызовов функций, модулей и т.д. другого компонента(ов). Термин "фрагмент кода" в предыдущих предложениях подразумевает одну или большее количество инструкций или строк кода и включает в себя, например, модули кода, объекты, подпрограммы, функции и т.д., независимо от применяемой терминологии, от того, по отдельности ли компилировались фрагменты кода и обеспечены ли фрагменты кода в виде исходного, промежуточного или объектного кода, используются ли фрагменты кода в исполняемой системе или в процессе и размещены ли они на одном устройстве, или на разных, или распределены по нескольким устройствам, и реализованы ли функциональные возможности, представленные фрагментами кода, полностью в программном обеспечении, полностью в аппаратных средствах или в комбинации аппаратных средств и программного обеспечения.
Теоретически интерфейс программирования может выглядеть, в основном, как изображено на фиг.5 или 6. Фиг.5 изображает интерфейс Интерфейс1 в виде средства передачи, через которое обмениваются информацией первый и второй фрагменты кода. Фиг.6 изображает интерфейс, который содержит объекты И1 и И2 интерфейса (которые могут составлять часть первого и второго фрагментов кода, а могут не составлять часть указанных фрагментов кода), обеспечивающие возможность передачи информации между первым и вторым фрагментами кода системы через средство (среду) М. Согласно фиг.6 объекты интерфейса И1 и И2 можно считать отдельными интерфейсами одной системы, а также можно считать, что интерфейс составляют объекты И1 и И2 совместно со средством (средой) М. Хотя на фиг.5 и фиг.6 изображен двунаправленный поток и интерфейсы с каждой стороны потока, некоторые реализации могут иметь поток информации только в одном направлении (или не иметь потока информации, как описано ниже) или могут иметь объект интерфейса только с одной стороны. В качестве примера, в определение интерфейса программирования включены, например, такие термины, как прикладное программирование, или интерфейс программирования (API), точка входа, способ, функция, подпрограмма, удаленный вызов процедуры и интерфейс объектной Модели Компонентов Microsoft (COM).
Аспекты такого интерфейса программирования могут включать в себя способ, посредством которого первый фрагмент кода передает информацию (где "информация" используется в самом широком смысле и включает в себя данные, команды, запросы, и т.д.) второму фрагменту кода; метод, посредством которого второй фрагмент кода получает информацию; и структуру, последовательность, синтаксис, организацию, схему, синхронизацию и содержимое информации. В этом отношении нижележащее средство передачи может быть несущественно для функционирования интерфейса, является ли указанное средство проводным или беспроводным или их комбинацией, до тех пор, пока информация передается так, как определено интерфейсом. В некоторых случаях информация не может быть передана в стандартном смысле в одном или в обоих направлениях, так как передача информации может осуществляться либо посредством другого механизма (например, информация, размещенная в буфере, файле, и т.д., отдельно от потока информации между фрагментами кода) или отсутствовать, например, когда один фрагмент кода просто осуществляет доступ к функциональным возможностям, выполняемым вторым фрагментом кода. Любой из этих аспектов или все указанные аспекты могут быть существенны в определенной ситуации, например, в зависимости от того, являются ли фрагменты кода частью системы с слабосвязанной или с сильносвязанной конфигурацией, следовательно этот список должен рассматриваться в качестве пояснения, а не ограничения.
Такое представление интерфейса программирования известно специалистам в данной области техники и очевидно из приведенного подробного описания изобретения. Однако существуют другие способы реализации интерфейса программирования, и, если не определено специально, они также предназначены для включения в формулу изобретения, приложенную к данному описанию. Указанные другие способы могут показаться более сложными или комплексными, чем упрощенный вид, изображенный на фиг.5 и 6, но тем не менее они выполняют аналогичную функцию для достижения идентичного общего результата. Ниже в краткой форме описаны некоторые поясняющие альтернативные реализации интерфейса программирования.
A. РАЗЛОЖЕНИЕ НА ЧАСТИ
Передача информации из одного фрагмента кода в другой может быть выполнена опосредованно, через разделение передачи информации на несколько отдельных (потоков) передачи информации. Это схематично изображают фиг.7 и 8. Как изображено, некоторые интерфейсы могут быть описаны в терминах разделяемых наборов функциональных возможностей. Следовательно, функциональные возможности интерфейса, изображенного на фиг.5 и 6, могут быть разложены на части для достижения идентичного результата, точно так же, как математически можно получить 24, или можно умножить двойку на 2, на 2 и на 3. Соответственно, согласно фиг.7 функция, обеспечиваемая интерфейсом Интерфейс1, может быть подразделена для преобразования (потоков) передачи информации интерфейса на несколько интерфейсов, Интерфейс1A, Интерфейс 1B, Интерфейс 1C и т.д., при этом достигая идентичного результата. Согласно фиг.8 функция, обеспечиваемая интерфейсом И1, может быть подразделена на несколько интерфейсов И1a, И1b, И1c и т.д., при этом достигая идентичного результата. Аналогично, интерфейс И2 второго фрагмента кода, который принимает информацию из первого фрагмента кода, может быть разложен на несколько интерфейсов И2a, И2b, И2c и т.д. При разложении на части нет необходимости в соответствии количества интерфейсов, включенных в 1-й фрагмент кода, количеству интерфейсов, включенных во 2-й фрагмент кода. В любом из случаев, изображенных на фиг.7 и 8, функциональная сущность интерфейсов Интерфейс1 и И1 остается идентичной, изображенной на фиг.5 и 6 соответственно. Разложение интерфейсов на части может также следовать ассоциативным, коммутативным и другим математическим свойствам так, чтобы оно было трудно распознаваемо. Например, порядок операций может быть несущественным, и следовательно, функция, выполняемая интерфейсом, может быть выполнена другой частью кода или интерфейса до достижения интерфейса, или выполнена отдельным компонентом системы. Дополнительно, для знающих программирование очевидно, что существует несколько способов создания различных вызовов функции, которые достигают идентичного результата.
B. ПЕРЕОПРЕДЕЛЕНИЕ
Square
input
precision
output
входные
данные
точность
выходные
В некоторых случаях может существовать возможность проигнорировать, добавить или переопределить некоторые аспекты (например, параметры) интерфейса программирования, при этом достигая намеченного результата. Это иллюстрируют фиг.9 и 10. Например, предполагается, что интерфейс Интерфейс1, изображенный на фиг.5, содержит вызов функции  (, , ) (Возвести в квадрат) данные, точность, выходные данные)), вызов, включающий три параметра: ,  и  данные, и который выдается из 1-го Фрагмента Кода во 2-й Фрагмент Кода. Если средний параметр точности не существенен в данном сценарии, как изображено на фиг.9, то он может быть проигнорирован или даже заменен на незначимый (в этом случае) параметр. Можно также добавить дополнительный несущественный параметр. В любом случае может быть достигнуто выполнение функции возведения в квадрат, так как после возведения входных данных в квадрат вторым фрагментом кода возвращаются выходные данные. Точность может быть значимым параметром для некоторого последующего процесса или другой части вычислительной системы; однако, если выясняется, что точность не является необходимой для узкой задачи вычисления квадрата, то она может быть заменена или проигнорирована. Например, вместо передачи значения допустимой точности, без неблагоприятного воздействия на результат может быть передано незначимое значение, например дата рождения. Аналогично, как изображено на фиг.10, интерфейс И1 заменяется интерфейсом И1', переопределенным для игнорирования или добавления в интерфейс параметров. Интерфейс И2, аналогично, может быть переопределен в интерфейс И2', переопределенный для игнорирования не требующихся параметров, или параметров, которые могут быть обработаны в другом месте.
Суть дела в том, что в некоторых случаях интерфейс программирования может включать аспекты, такие как параметры, которые не являются необходимыми для некоторой задачи, и поэтому они могут быть проигнорированы, или переопределены, или обработаны в другом месте для других задач.
C. ВСТРАИВАЕМОЕ КОДИРОВАНИЕ
input, output
входных
Также может существовать возможность объединения некоторых или всех функциональных возможностей двух отдельных модулей кода так, чтобы "интерфейс" между ними изменял вид. Например, функциональные возможности, иллюстрируемые фиг.5 и 6, могут быть преобразованы в функциональные возможности, иллюстрируемые фиг.11 и 12 соответственно. На фиг.11 прежние 1-й и 2-й Фрагменты Кода, изображенные на фиг.5, объединены в модуль, содержащий оба фрагмента. В этом случае фрагменты кода могут продолжать передавать информацию друг другу, но интерфейс может быть адаптирован к виду, более соответствующему одиночному модулю. Следовательно, например, может исчезнуть необходимость в формальных операторах Call (Вызвать) и Return (Вернуть), но подобные обработка или ответ(ы), соответствующие интерфейсу Интерфейс1, могут все еще быть эффективными. Аналогично, согласно фиг.12 часть (или весь) интерфейс И2, изображенный на фиг.6, может быть встроен в интерфейс И1 для формирования интерфейса И1". Как изображено, интерфейс И2 разделен на И2a и И2b, а часть И2a интерфейса была встроена в код интерфейса И1 для формирования интерфейса И1". Для конкретного примера предполагается, что интерфейс И1, изображенный на фиг.6, выполняет вызов функции square (), получаемый интерфейсом И2, который после обработки вторым фрагментом кода значения, переданного во входных данных (для возведения его в квадрат), передает обратно с выходными данными результат возведения в квадрат. В таком случае обработка, выполняемая вторым фрагментом кода (возведение в квадрат  данных) может выполняться первым фрагментом кода без осуществления вызова к интерфейсу.
D. РАЗДЕЛЕНИЕ
Передача информации из одного фрагмента кода в другой может быть выполнена опосредованно, через разделение передачи информации на несколько отдельных (потоков) передачи информации. Это схематично изображают фиг.13 и 14. Согласно фиг.13 одна или большее количество частей промежуточного программного обеспечения (Интерфейс(ы) Разделения, так как они отделяют функциональные возможности и/или функции интерфейса от исходного интерфейса) обеспечивается для преобразования (потоков) передачи информации в первом интерфейсе, Интерфейс1, для согласования их с другим интерфейсом, в этом случае интерфейсами Интерфейс2A, Интерфейс2B и Интерфейс2C. Например, это могло быть сделано там, где имелась инсталлированная базовая система приложений, разработанная для взаимодействия, например, с операционной системой, в соответствии с протоколом Интерфейса1, но затем операционная система была изменена для использования другого интерфейса, в этом случае интерфейсов Интерфейс 2A, Интерфейс 2B и Интерфейс 2C. Дело в том, что исходный интерфейс, который использовался 2-м Фрагментом Кода, изменился так, что он больше не является совместимым с интерфейсом, используемым 1-м Фрагментом Кода, и, следовательно, чтобы сделать совместимыми старые и новые интерфейсы, используется посредник. Аналогично, согласно фиг.14 третьим фрагментом кода может быть введен интерфейс ИР1 разделения для приема (потоков) передачи информации из интерфейса И1 и интерфейс ИР2 разделения для передачи функциональных возможностей интерфейса, например, интерфейсам И2a и И2b, повторно разработанным для работы с ИР2, при этом обеспечивая идентичный результат выполнения функций. Аналогично, ИР1 и ИР2 могут работать совместно для транслирования функциональных возможностей интерфейсов И1 и И2, иллюстрируемых фиг.6, в новую операционную систему, при этом обеспечивая идентичный или подобный результат выполнения функций.
E. ПЕРЕЗАПИСЬ
Существует еще один возможный вариант, состоящий в динамической перезаписи кода для замены функциональных возможностей интерфейса на что-то другое, который при этом достигает идентичного общего результата. Например, может существовать система, в которой фрагмент кода, представленный на промежуточном языке (например, Microsoft IL, Java ByteCode и т.д.), подается на интерпретатор или компилятор Just-in-Time (JIT) (“на лету”) в оперативной среде (такой, которая обеспечивается структурой .Net, оперативной средой Java, или другими подобными видами оперативных сред). Компилятор JIT может быть написан для динамического преобразования (потоков) передачи информации из 1-го Фрагмента Кода во 2-й Фрагмент Кода, то есть для их согласования с другим интерфейсом, что может требоваться для 2-го Фрагмента Кода (или исходного или другого 2-го Фрагмента Кода). Это изображено на фиг.15 и 16. Как видно на фиг.15, этот подход подобен описанному выше сценарию Разделения. Он может быть реализован, например, там, где инсталлированная базовая система приложений была разработана для взаимодействия с операционной системой в соответствии с протоколом Интерфейса 1, но затем операционная система была изменена для использования другого интерфейса. Для немедленного согласования (потоков) передачи информации из приложений, работающих на основе инсталлированной базовой системы, в новый интерфейс операционной системы может использоваться компилятор JIT. Как изображено на фиг.16, указанный подход динамической перезаписи интерфейса(ов) может применяться для динамического разложения на части или также для иного изменения интерфейса(ов).
Также следует отметить, что описанные выше сценарии для достижения посредством альтернативных вариантов осуществления результата, идентичного или подобного результату интерфейса, также могут быть скомбинированы различным образом, последовательно и/или параллельно, или с другим внедренным кодом. Следовательно, обеспеченные выше альтернативные варианты осуществления не являются взаимно исключающими и могут быть смешаны, согласованы и скомбинированы для формирования сценариев, идентичных или эквивалентных общим сценариям, представленным на фиг.5 и 6. Также следует отметить, что, как в отношении большинства программных структурных компонентов, существуют другие подобные способы достижения идентичных или подобных функциональных возможностей интерфейса, которые не могут быть здесь описаны, но тем не менее отображены в сущности и контексте изобретения, то есть, следует отметить, что по меньшей мере частично представлены функциональные возможности и обеспечены преимущества интерфейса, который переносит “значение” интерфейса.
Заключение
Хотя изобретение было описано языком, характерным для структурных возможностей и/или методологических действий, очевидно, что изобретение, определенное приложенной формулой изобретения, не является ограниченным определенными возможностями или описанными действиями. Точнее определенные возможности и действия описаны в качестве возможных форм реализации заявленного изобретения.