СПОСОБ И СИСТЕМА ИНИЦИАЛИЗАЦИИ УСЛУГ ПРОГРАММИРОВАНИЯ
METHOD AND SYSTEM FOR PROGRAMMING SERVICE INITIALISATION

РОДСТВЕННЫЕ ЗАЯВКИ
В настоящей заявке испрашивается конвенционный приоритет по временной заявке US №61/384,803, поданной 21 сентября 2010 г., на изобретение "Торговая площадка для услуг третьих лиц", полное содержание которой вводится здесь ссылкой.
ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится в целом к области обработки данных. Более конкретно, настоящее изобретение относится к системам и способам обеспечения торговой площадки для услуг программного обеспечения (ПО).
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯ
Услуга ПО может быть предложена или обеспечена сервером (например, реализована с использованием одного или нескольких вычислительных устройств). Услуга ПО может быть вызвана (например, клиентским устройством), в результате чего сервер выполняет один или несколько процессов услуги ПО. Например, сервер базы данных (например, продавца обуви) может предлагать услугу считывания данных и может соответствующим образом реагировать на запрос на считывание данных (например, запрос относительно количества обуви на складе) путем считывания и передачи данных (например, количества обуви на складе), что осуществляется сервером базы данных (например, базы данных, содержащей записи складских запасов).
Услуга ПО может иметь прикладной программный интерфейс (API), который используется для вызова этой услуги. Услуга ПО может быть вызвана путем запроса ПО (например, путем вызова услуги ПО). Разные услуги ПО могут иметь разные интерфейсы API. Кроме того, одна услуга ПО может быть разработана одним разработчиком услуг ПО, а другая услуга ПО может быть разработана другим разработчиком ПО. Разработчиком услуги ПО может быть физическое или юридическое лицо, разработавшее ПО, которое размещается на сервере и может выполняться на нем для предоставления услуги ПО.
В терминологии торгового оборота продукт может быть изготовлен производителем и будет доступен для покупки у продавца. Например, продукт может иметь форму товара (например, физического объекта), коммерческой услуги (например, предоставляемой провайдером коммерческих услуг), информации (например, носителя цифровых данных), лицензии (например, разрешения на что-либо или доступа к чему-либо) или любой комбинации указанных продуктов. Изделие может быть образцом (например, одним экземпляром) продукта, и множество изделий может составлять множество экземпляров продукта. Соответственно, продавец продукта может искать возможности продажи одного или нескольких изделий в качестве экземпляров продукта.
При продаже изделия продавец может использовать систему, работающую в сети, для представления изделия пользователю этой системы (например, потенциальному покупателю изделия). Примеры таких систем, работающих в сети, включают торговые системы (например, Интернет-магазины), системы публикаций (например, веб-сайты тематических рекламных объявлений), системы торгов (например, веб-сайты аукционов) и системы транзакций (например, веб-сайты выполнения платежей). Изделие может быть представлено в документе (например, на веб-странице), описывающем изделие или продукт. В процессе покупки изделия один или несколько пользователей могут обращаться к системе, работающей в сети (например, путем передачи запросов), для получения таких документов или аналогичной информации, относящейся к характеристикам изделия или продукта.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Варианты осуществления изобретения, которые являются лишь примерами и никоим образом не ограничивают его объем, иллюстрируются на фигурах прилагаемых чертежей, на которых показано:
фигура 1 - схема структуры сетевой среды, подходящей для обеспечения торговой площадки для услуг ПО в соответствии с некоторыми вариантами осуществления изобретения;
фигура 2 - блок-схема, на которой показаны компоненты комплекса торговой площадки в соответствии с некоторыми вариантами осуществления изобретения;
фигура 3 - блок-схема, иллюстрирующая структуры данных в информации регистрации услуги ПО в соответствии с некоторыми вариантами осуществления изобретения;
фигура 4 - блок-схема алгоритма взаимодействия между устройствами разработчика и комплексом торговой площадки в соответствии с некоторыми вариантами осуществления изобретения;
фигура 5 - блок-схема алгоритма взаимодействия между устройством разработчика, комплексом торговой площадки и сервером в соответствии с некоторыми вариантами осуществления изобретения;
фигуры 6, 7 - блок-схемы алгоритма осуществления способа обеспечения торговой площадки для услуг ПО в соответствии с некоторыми вариантами осуществления изобретения;
фигуры 8, 9 - блок-схемы алгоритма осуществления способа обеспечения торговой площадки для услуг ПО в соответствии с некоторыми вариантами осуществления изобретения;
фигура 10 - блок-схема, на которой показаны компоненты вычислительного устройства в соответствии с некоторыми вариантами осуществления изобретения, в котором обеспечивается возможность считывания команд с машиночитаемого носителя и выполнения одного или нескольких способов по настоящему изобретению.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
В настоящем описании рассмотрены примеры способа и системы, предназначенных для обеспечения торговой площадки для услуг ПО. Описанные примеры являются всего лишь возможными вариантами осуществления изобретения. Если явным образом не указано иное, компоненты и функции могут использоваться не во всех вариантах, могут быть использоваться в различных сочетаниях и могут быть разделены, и, кроме того, может варьироваться последовательность действий (стадий), могут использоваться их различные сочетания, и некоторые стадии могут быть разделены. В нижеприведенном описании для обеспечения четкого понимания рассмотренных вариантов осуществления настоящего изобретения указаны различные конкретные детали. Однако специалисту в данной области техники будет ясно, что изобретение может быть осуществлено и без некоторых таких конкретных деталей.
Комплекс торговой площадки может обеспечивать место для продаж одной или нескольких услуг ПО, разработанного одним или несколькими разработчиками. Комплекс торговой площадки может формировать часть или всю систему торговой площадки для услуг ПО, которую конфигурируют для регистрации услуги ПО (например, от разработчика), настройки одного или нескольких серверов для размещения (например, предоставления) услуги ПО и представления (например, рекламы) услуги ПО потенциальным потребителям (например, другим разработчикам). Кроме того, комплекс торговой площадки может формировать часть или всю систему торговой площадки для услуг ПО, которую конфигурируют для приема запроса (например, "звонка") на вызов услуги ПО, направление запроса в сервер, сконфигурированный для обеспечения услуги ПО и регистрации (например, учета) использования услуги ПО. В соответствии с различными вариантами, когда услуга ПО запрашивается потребителем такой услуги (например, одним из других разработчиков), комплекс торговой площадки может начислять потребителю плату за использование услуги ПО. Комплекс торговой площадки может также формировать и обеспечивать отчет об использовании услуги ПО (например, потребителю или разработчику услуги ПО).
Услуга ПО, разработанная одним разработчиком, может быть полезной для других разработчиком программных приложений или для других услуг ПО, и разработчик одной услуги ПО может быть заинтересован в продвижении и продаже этой услуги ПО для использования (например, путем вызовов) другими разработчиками. Примеры услуг ПО включают услугу ПО, которая регистрирует продукт и создает его описание на электронной торговой площадке, услугу ПО, которая обеспечивает доступ ко всем продуктам, зарегистрированным в некоторой категории на электронной торговой площадке, с формированием совокупности средних цен продаж продуктов, а также услугу ПО, которая обеспечивает доступ к описаниям всех продуктов, зарегистрированных на электронной торговой площадке для определенного местонахождения, с формированием совокупности средних цен продаж продуктов. Другим примером услуги ПО является услуга ПО, обеспечивающая определение количества изделий в некоторой категории, которые продаются продавцом, проверяет запасы изделий, и осуществляет заказ на пополнение запаса, если количество изделий падает ниже заданного порога. Еще одним примером является услуга ПО, обеспечивающая доступ к базам данных электронной торговой площадки и осуществляющая анализ трендов для определенного продукта, идентифицируемого универсальным кодом продукта (UPC).
В соответствии с разными вариантами осуществления изобретения регистрация, конфигурирование и реклама услуги ПО (например, интерфейса API) могут выполняться комплексом торговой площадки до запуска программного приложения, которое использует услугу ПО (например, до вызова услуги ПО) или до вызова другой услуги ПО, которая использует услугу ПО. Для регистрации услуги ПО комплекс торговой площадки может получать информацию регистрации, которая описывает услугу ПО (например, область применения, наименование, пространство имен, описание, метаданные и одна или несколько конечных точек). Информация регистрации может включать метаданные, такие как информация о кэшировании, информация, касающаяся уровня доступа (например, открытый доступ, ограниченный доступ или доступ с исключением), информация о стоимости (например, бесплатно, плата за время пользования, плата за каждое выполнение процесса, плата за каждое выполнение уникального процесса, фиксированная или договорная цена), информация о качестве услуги (QoS) (например, большое или малое время ожидания) или любые подходящие сочетания указанных данных. В информации регистрации может указываться единственная конечная точка (например, сервер осуществления услуги) или несколько конечных точек (например, сервер осуществления услуги и сервер среды выполнения приложения(" sandbox server")).
В соответствии с разными вариантами осуществления изобретения вызов услуги ПО осуществляется комплексом торговой площадки и может включать прием и маршрутизацию запроса на вызов услуги ПО, а также проверку уровня доступа (например, доступа к услуге ПО). В процессе выполнения ПО или после него комплекс торговой площадки может отслеживать использование услуги ПО (например, использование услуги ПО, использование операций, предлагаемых услугой ПО, использование уникальных операций, предлагаемых услугой ПО, время использования услуги ПО или использование услуги ПО с определенным уровнем QoS).
В процессе выполнения ПО или после него комплекс торговой площадки может начислять плату за использование услуги ПО (например, в соответствии с зарегистрированным использованием). Плата может включать оплату услуги (например, за операции, выполненные комплексом торговой площадки). Комплекс торговой площадки может получать плату от потребителя (например, от вызывающего лица) услуги ПО, и по меньшей мере часть платы может быть перечислена разработчику (например, продающему лицу) услуги ПО.
В процессе выполнения ПО или после него механизм торговой площадки может обеспечивать один или несколько отчетов, которые отражают использование и/или плату для некоторой услуги ПО. Отчет может содержать сводные показатели использования некоторой услуги ПО (например, количество операций или уникальных операций). Отчет может формироваться для потребителя услуги ПО (например, может содержать сводные показатели потребления различных услуг ПО, суммарную стоимость за некоторый временной период, стоимость по каждому разработчику, стоимость по каждой услуге ПО, ошибки по каждой услуге ПО и соответствие качества QoS). Отчет может формироваться для продавца услуги ПО (например, может содержать доходы и прибыльность по каждой услуге ПО, доходы и прибыльность по каждому потребителю, ошибки по каждой услуге ПО и соответствие качества QoS).
В некоторых вариантах комплекс торговой площадки обеспечивает улучшение данных для сервера, сконфигурированного для размещения услуги ПО. После того как результат работы услуги ПО передается в устройство, запросившее вызов услуги ПО, это устройство может передать в комплекс торговой площадки и/или в сервер сформированные данные. Получив эти данные, комплекс торговой площадки может внести изменение в плату, начисленную за использование услуги ПО (например, путем применения скидки). Соответственно, различные варианты осуществления изобретения дают возможность потребителю услуги ПО оплачивать использование услуги наличными средствами, информацией или использовать любые подходящие сочетания указанных возможностей.
На фигуре 1 приведена схема структуры сетевой среды 100, подходящей для обеспечения торговой площадки для услуг ПО в соответствии с некоторыми вариантами осуществления изобретения. Сетевая среда 100 включает базу 102 данных, комплекс 110 торговой площадки, серверы 120 и 130, а также устройства 140 и 150 разработчиков, соединенные друг с другом по сети 190. Как можно видеть, база 102 данных может формировать всю сетевую коммерческую систему 101 (например, торговый веб-сайт) или часть такой системы. Аналогично, комплекс 110 торговой площадки и сервер 120 могут формировать всю систему 105 торговой площадки для услуг ПО или часть такой системы. Соответственно, сервер 120 может рассматриваться как внутренний объект системы 105 торговой площадки для услуг ПО. Напротив, сервер 130 может рассматриваться как внешний объект системы 105 торговой площадки для услуг ПО. Например, сервер 130 может соответствовать третьему лицу (например, физическому или юридическому лицу), который предоставляет сервер 130 для использования вместе с системой 105 торговой площадки для услуг ПО. Каждый из серверов 120 и 130 может быть сконфигурирован для размещения (например, для обеспечения, реализации и выполнения одной или нескольких операций) услуги ПО или нескольких услуг ПО.
Сетевая коммерческая система 101 показана в качестве примера сетевой системы, содержащей базу данных (например, базу 102 данных), которая может быть доступна для обращения при выполнении процесса услуги ПО (например, сервером 120 или сервером 130). Например, сетевая коммерческая система 101 может поддерживать веб-сайт торговли (например, электронный торговый зал), и база 102 данных может быть хранилищем данных (например, сервером базы данных), в котором хранится информация (например, в форме записей), относящаяся к изделиям или к продуктам, продаваемым или доступным для продажи на веб-сайте торговли.
На фигуре 1 также указаны разработчики 142 и 152. Разработчик 142 может быть разработчиком услуги ПО, который также является продавцом этой услуги (например, провайдер или продавец интерфейса API для услуги ПО). Разработчик 152 может быть разработчиком другой услуги ПО, который также является потенциальным потребителем услуги ПО, разработанной разработчиком 142. Например, разработчик 152 может быть потребителем или покупателем интерфейса API для услуги ПО, разработанной разработчиком 142. Разработчик 142 и/или разработчик 152 может быть человеком, вычислительным устройством (например, программой, предназначенной для обеспечения взаимодействия с устройством 140 разработчика) или подходящим сочетанием человека и вычислительного устройства (например, человеком, выполняющим свои функции с помощью вычислительного устройства, или вычислительным устройством, выполняющим свои функции под контролем человека). Разработчик 142 не является частью сетевой среды 100, однако он связан с устройством 140 разработчика и может быть пользователем этого устройства. Например, устройством 140 разработчика может быть настольный компьютер, планшетный компьютер или смартфон, принадлежащий разработчику 142. Аналогично, разработчик 152 не является частью сетевой среды 100, однако он связан с устройством 150 разработчика и может быть пользователем этого устройства. Например, устройством 150 разработчика может быть планшетный компьютер, принадлежащий разработчику 152.
Любые из указанных комплексов, серверов, баз данных или устройств, показанных на фигуре 1, могут быть реализованы на универсальном компьютере с соответствующими модификациями (например, запрограммированными соответствующим образом) с помощью ПО для превращения его в специализированный компьютер, предназначенный для выполнения функций, указанных в настоящем описании для этого комплекса. Например, ниже со ссылками на фигуру 10 описывается вычислительная система, в которой могут быть осуществлены любые способы, раскрытые в настоящем описании. Термин "база данных", как он используется в настоящем описании, относится к ресурсу хранения данных, в котором могут храниться данные, структурированные как текстовые файлы, таблицы, электронные таблицы, реляционные базы данных, хранилища триплетов (triple store) или любые подходящие сочетания указанных типов данных. Более того, где это уместно, любые два или более комплексов, представленных на фигуре 1, могут быть объединены в один комплекс, и функции, указанные в настоящем описании для любого одного комплекса, могут быть разделены между несколькими комплексами.
В качестве сети 190 может использоваться любая сеть, которая обеспечивает возможность обмена информации между вычислительными устройствами (например, между комплексом 110 торговой площадки и устройством 140 разработчика). Соответственно, сетью 190 может быть проводная сеть, беспроводная сеть (например, сеть мобильной связи) или любые подходящие сочетания таких сетей. Сеть 190 может включать одну или несколько частей, которые составляют частную сеть, сеть общего пользования (например, Интернет) или любые подходящие сочетания таких частей.
На фигуре 2 представлена блок-схема, на которой показаны компоненты комплекса 110 торговой площадки в соответствии с некоторыми вариантами осуществления изобретения. Комплекс 110 торговой площадки включает модуль 210 регистрации, модуль 220 управления, модуль 230 публикаций, модуль 240 соединений, модуль 250 маршрутизации, модуль 260 использования, модуль 270 биллинга и модуль 280 отчетов, причем все указанные модули могут обмениваться информацией между собой (например, по шине, с использованием общей памяти или коммутатора). Один или несколько модулей, рассмотренных в настоящем описании, могут быть реализованы с использованием аппаратных средств (например, процессора вычислительного устройства) или сочетания аппаратных и программных средств. Кроме того, любые два или более модулей могут быть объединены в один модуль, и функции, указанные в настоящем описании для одного модуля, могут быть разделены между несколькими модулями.
Модуль 210 регистрации конфигурируют для приема информации регистрации, описывающей услугу ПО, разработанную разработчиком 142. Услугу ПО конфигурируют таким образом, чтобы она обеспечивала выполнение сервером (например, сервером 120 или сервером 130) процесса (например, из множества имеющихся процессов) услуги ПО при получении ее вызова (например, посредством интерфейса API услуги ПО). Соответственно, услуга ПО при ее размещении на сервере обеспечивает выполнение сервером процесса в ответ на вызов услуги ПО (например, посредством интерфейса API услуги ПО). Модуль 210 регистрации может принимать информацию регистрации из устройства 140 разработчика.
Модуль 220 управления конфигурируют для конфигурирования сервера (например, сервера 120 или сервера 130) для размещения на нем услуги ПО в соответствии с информацией регистрации, полученной модулем 210 регистрации. После конфигурирования модулем 220 управления сервер реагирует на запрос вызова услуги ПО (например, посредством интерфейса API).
В некоторых вариантах модуль 220 управления конфигурирует сервер для обеспечения размещения на нем множества услуг ПО (например, группы услуг ПО), которые включают услугу ПО, разработанную разработчиком 142. В некоторых вариантах сервер 120 представляет собой или содержит хост-машину, которая входит в состав системы 105 торговой площадки для услуг ПО, и модуль 220 управления конфигурирует сервер 120 для размещения на нем услуги ПО. В некоторых вариантах сервер 130 представляет собой или содержит хост-машину, которая не входит в состав системы 105 торговой площадки для услуг ПО, и модуль 220 управления конфигурирует сервер 130 для размещения на нем услуги ПО. В соответствии с некоторыми вариантами устройство 140 разработчика может быть сконфигурировано как хост-машина (например, как хост-машина, которая не входит в состав системы 105 торговой площадки для услуг ПО), и модуль 220 управления конфигурирует устройство 140 разработчика для размещения на нем услуги ПО.
Модуль 230 публикаций конфигурируют для обеспечения извещения о том, что услуга ПО доступна для вызова (например, посредством интерфейса API). Извещение может обеспечиваться для устройств 140 и 150 разработчиков или для любых их сочетаний (например, путем циркулярной рассылки сообщений на устройства разработчиков). В некоторых вариантах модуль 230 публикаций обеспечивает результаты поиска, содержащие по меньшей мере некоторую часть информации регистрации, описывающей услугу ПО. Например, обеспечение извещения может включать обеспечение результатов поиска, которые могут включать часть информации регистрации, полученной модулем 210 регистрации. В некоторых вариантах модуль 230 публикаций принимает запрос на идентификацию услуги ПО среди множества услуг ПО, доступных для вызова, и извещение может осуществляться в ответ на принятый запрос и может содержать результаты поиска.
В некоторых вариантах информация регистрации, полученная модулем 210 регистрации, включает информацию о безопасности данных, которая указывает на степень доступности услуги ПО, и модуль 230 публикаций может обеспечивать извещение в соответствии со степенью доступности, указанной в информации о безопасности данных. В некоторых вариантах информация регистрации, полученная модулем 210 регистрации, включает информацию о стоимости, которая указывает плату, начисляемую за вызов услуги ПО, и модуль 230 публикаций может обеспечивать указание о том, что вызов услуги ПО является платным. Например, модуль 230 публикаций может обеспечивать извещение о доступности услуги ПО, с указанием того, что за вызов этой услуги может начисляться плата. В различных вариантах информация регистрации содержит информацию о качестве услуги, которая указывает время ожидания выполнения услуги ПО после ее вызова, и модуль 230 публикаций может обеспечивать указание времени ожидания выполнения услуги ПО после получения соответствующего запроса. Например, модуль 230 публикаций может обеспечивать извещение о доступности услуги ПО, с указанием времени ожидания выполнения этой услуги.
Модуль 240 соединений конфигурируют для обеспечения приема запроса (например, посредством интерфейса API) на вызов услуги ПО, разработанной разработчиком 142. Вызов услуги ПО может быть запрошен (например, устройством 150 разработчика) посредством интерфейса API услуги ПО (например, с использованием API-вызова, представляющего запрос или часть запроса). Например, запрос может быть получен из устройства 150 разработчика 152 (выступающего, например, в качестве потребителя услуги ПО, разработанной разработчиком 142). Услуга ПО может быть размещена на сервере (например, на сервере 120 или на сервере 130) или на устройстве 140 разработчика, сконфигурированном для выполнения процесса услуги ПО в ответ на вызов этой услуги (например, с использованием интерфейса API).
Модуль 250 маршрутизации конфигурируют для направления запроса на вызов услуги ПО на сервер (например, на сервер 120 или на сервер 130) или на устройство 140 разработчика, которые конфигурируют для выполнения процесса услуги ПО в ответ на вызов этой услуги (например, с использованием интерфейса API). Например, если модуль 220 управления конфигурирует сервер 120 для выполнения процесса услуги ПО, модуль 250 маршрутизации может направлять запрос на вызов услуги ПО на сервер 120. Как уже указывалось, сервер 120 может быть хост-машиной или может содержать хост-машину, которая входит в состав системы 105 торговой площадки для услуг ПО. В другом примере, если модуль 220 управления конфигурирует сервер 130 для выполнения процесса услуги ПО, модуль 250 маршрутизации может направить запрос на сервер 130. Как уже указывалось, сервер 130 может быть хост-машиной или может содержать хост-машину, которая не входит в состав системы 105 торговой площадки для услуг ПО. Еще в одном примере, если модуль 220 управления конфигурирует устройство 140 разработчика для выполнения процесса услуги ПО, модуль 250 маршрутизации может направить запрос на устройство 140 разработчика. Как уже указывалось, сервер 140 может быть сконфигурирован как хост-машина, которая не входит в состав системы 105 торговой площадки для услуг ПО. В некоторых вариантах модуль 220 управления поддерживает базу данных (например, поисковую таблицу), которая используется модулем 250 маршрутизации для определения сервера, на который должен быть направлен запрос.
В некоторых вариантах модуль 250 маршрутизации определяет, что услуга ПО доступна для разработчика 152 (выступающего, например, в качестве потребителя услуги ПО), и модуль 250 маршрутизации может направлять запрос на сервер в соответствии с определением (например, после определения) того, что услуга ПО доступна для разработчика 152.
Модуль 260 использования конфигурируют для хранения записи процесса услуги ПО, выполняемой сервером, на который направляется запрос модулем 240 соединений. Например, процесс услуги ПО может выполняться сервером 120 в ответ на ее вызов (например, запрос с использованием интерфейса API), и модуль 260 использования может сохранять запись процесса, выполняемого сервером 120 в ответ на запрос вызова услуги ПО. В другом примере, процесс услуги ПО может выполняться сервером 130, и модуль 260 использования может сохранять запись процесса, выполняемого сервером 130 в ответ на запрос вызова услуги ПО. Еще в одном примере, процесс услуги ПО может выполняться устройством 140 разработчика, и модуль 260 использования может сохранять запись процесса, выполняемого устройством 140 разработчика в ответ на запрос вызова услуги ПО.
В некоторых вариантах модуль 260 использования записывает и сохраняет число вызовов услуги ПО. Информация о числе вызовов услуги ПО может быть включена в запись процесса выполнения услуги ПО. Например, модуль 260 использования может хранить запись выполненного процесса путем сохранения числа вызовов, которое указывает число вызовов услуги ПО разработчиком 152 (выступающего, например, в качестве потребителя услуги ПО).
В некоторых вариантах модуль 260 использования сохраняет число выполнений услуги ПО сервером, на который было направлен запрос модулем 240 соединений. Информация о числе выполнений услуги ПО может быть включена в запись процесса выполнения услуги ПО. Например, модуль 260 использования может хранить запись выполненного процесса путем сохранения числа выполнений, которое указывает число выполнений процесса услуги ПО сервером 120 или число выполнений процесса услуги ПО сервером 120 в ответ на вызовы этой услуги, которые запрошены разработчиком 152 (выступающего, например, в качестве потребителя услуги ПО). В другом примере число выполнений услуги ПО может указывать число выполнений процесса услуги ПО сервером 130 или число выполнений процесса услуги ПО сервером 130 в ответ на вызовы услуги ПО, которые запрашиваются разработчиком 152 (выступающего, например, в качестве потребителя услуги ПО).
Модуль 270 биллинга конфигурируют для начисления платы (например, разработчику 152, выступающему в качестве потребителя услуги ПО) за выполнение процесса услуги ПО сервером, на который было направлен запрос модулем 240 соединений. Плата может начисляться в соответствии с вызовами услуги ПО, которые могут запрашиваться разработчиком 152 (например, как потребителем услуги ПО, ее интерфейса API, или и того и другого).
В некоторых вариантах модуль 270 биллинга начисляет плату на основе числа вызовов услуги ПО. Например, модуль 270 может начислять плату разработчику 152 (выступающего, например, в качестве потребителя услуги ПО) на основе числа вызовов, записанного в модуле 260 использования (например, числа вызовов услуги ПО разработчиком 152).
В некоторых вариантах модуль 270 биллинга начисляет плату в зависимости от числа выполнений процесса определенным сервером или определенным сервером в ответ на вызовы услуги ПО, запрашиваемой определенным потребителем. Например, модуль 270 биллинга может начислять плату разработчику 152 (выступающему, например, в качестве потребителя услуги ПО) в зависимости от числа выполнений процесса, записанного в модуле 260 использования (например, от числа выполнений процесса сервером 120, от числа выполнений процесса сервером в ответ на вызовы услуги ПО, запрошенные разработчиком 152, от числа выполнений процесса устройством 140, или от любого подходящего сочетания вышеуказанных показателей).
Модуль 208 отчетов конфигурируют для обеспечения отчетов, которые показывают, что процесс выполнен сервером, которому модулем 240 соединений был направлен запрос. Отчет может быть предоставлен разработчику 142 услуги ПО (например, путем передачи отчета на устройство 140 разработчика), разработчику 152, который запросил вызов этой услуги, например, в качестве ее потребителя (например, путем передачи отчетов на устройство 150 разработчика) или любого подходящего сочетания указанных отчетов. Кроме того, отчет может быть предоставлен в соответствии с вызовом услуги ПО (например, запрошенным с использованием интерфейса API).
В некоторых вариантах модуль 280 отчетов обеспечивает отчет, в котором указывается число вызовов услуги ПО (например, разработчиком 152, выступающим в качестве потребителя услуги ПО). Например, модуль 280 отчетов может включать число вызовов (например, записанное модулем 260 использования и/или использованное модулем 270 биллинга при начислении платы), которое указывает число вызовов услуги ПО (например, разработчиком 152). Соответственно, в отчете указывается число вызовов разработчиком 152 услуги ПО, разработанной разработчиком 142.
На фигуре 3 представлена блок-схема, иллюстрирующая структуры данных в информации 300 регистрации услуги ПО в соответствии с некоторыми вариантами осуществления изобретения. Информация 300 регистрации описывает услугу ПО, и такая информация или сходная структура данных может быть получена модулем 210 регистрации, как это было описано выше со ссылками на фигуру 2. Информация 300 регистрация может представлять собой структуру данных, которая описывает услугу ПО, разработанную разработчиком 142 или содержит такую структуру. Такая структура может быть выражена (например, записана) с использованием расширяемого языка разметки (XML) или любого другого языка, подходящего для описания услуги ПО.
Информация 300 регистрации может содержать область 310 определения. Область 310 определения может быть доменным именем (например, разработчика 142, который разработал услугу ПО).
Информация 300 регистрации может содержать наименование 320 услуги ПО. Наименование 320 услуги ПО может представлять собой текстовую строку (например, строку, сформированную разработчиком 142, который разработал услугу ПО).
Информация 300 регистрации может содержать область 330 имен услуги ПО. Область 330 имен может определять контекст услуги ПО (например, контекст для одного или нескольких идентификаторов, используемых услугой ПО).
Информация 300 регистрации может содержать описание 340 услуги ПО. Все описание 340 или его часть может быть определена (например, записана) с использованием языка описания веб-сервисов WSDL (например, WSDL1.1).
Информация 300 регистрации может содержать метаданные 350 услуги ПО. Метаданные 350 могут включать информацию 352 кэширования (например, параметры, определяющие способ кэширования ПО или данных). Метаданные 350 могут включать информацию 354 о безопасности данных (например, открытый доступ, ограниченный доступ или доступ с исключением). Например, информация 354 о безопасности данных может указывать, что один или несколько процессов услуги ПО или сама услуга ПО доступна любому вызывающему лицу (например, открытый доступ), доступна только ограниченному числу лиц (например, ограниченный доступ), доступна любому вызывающему лицу за исключением лиц, указанных в списке исключений (например, доступ с исключением) или любые подходящие сочетания указанных уровней доступа. Разработчик 152 (например, выступающий в качестве потребителя услуги ПО) может быть примером вызывающего лица.
Метаданные 350 могут включать информацию 356 о стоимости услуги ПО. Информация 356 о стоимости может указывать, начисляется ли какая-либо плата за использование услуги ПО (например, через его ее интерфейс API), и может описывать порядок начисления платы. Например, информация 356 о стоимости может указывать, что услуга ПО может использоваться бесплатно, или что потребителю услуги ПО (например, разработчику 152) может быть начислена плата за определенный временной интервал (например, почасовая оплата, за день, за месяц или за год), может быть начислена плата за вызванный процесс (например, за вызванный и успешно выполненный (без ошибки) процесс), может быть начислена плата за уникальный вызванный процесс, или же применяется абонентская плата, или любое сочетание вышеуказанных возможностей начисления платы.
Метаданные 350 могут включать информацию 358 о качестве QoS услуги ПО. Информация 358 QoS может указывать, какое качество услуги ПО (например, какой уровень качества) должен обеспечиваться в случае вызова этой услуги (например, с использованием ее интерфейса API). Например, информация 358 QoS может определять, что услуга ПО должна обеспечиваться с большим временем ожидания, средним временем ожидания или малым временем ожидания (например, между вызовом услуги ПО и выполнением ее процесса). В некоторых вариантах информация 358 QoS объединяется или связывается с информацией 356 о стоимости, так что одна схема начисления платы может применяться к одному уровню QoS качества (например, более высокая плата для меньшего времени ожидания), в то время как другая схема начисления платы может применяться к другому уровню QoS качества (например, пониженная плата для увеличенного времени ожидания).
Информация 300 регистрации может содержать конечные точки 360 и 370. Каждая из конечных точек 360 и 370 определяет адрес назначения (например, запрошенный при регистрации услуги ПО или выбранный разработчиком 142), по которому должны направляться запросы на вызов услуги ПО. Информация о конечной точке (например, о конечной точке 360) может содержать один или несколько параметров или условий для направления запроса по адресу назначения, дополнительно к заданию самого адреса назначения. Например, информация о конечной точке 360 может задавать сервер (например, сервер 130 или устройство 140 разработчика) выполнения коммерческих операций (транзакций), а конечная точка 370 может определять сервер среды выполнения (например, испытаний или экспериментов) для выполнения моделируемых операций. В некоторых вариантах конечная точка 360 задается без конечной точки 370. В некоторых вариантах задается более двух конечных точек.
На фигуре 4 представлена блок-схема алгоритма взаимодействия между устройствами 140 и 150 разработчика и комплексом 110 торговой площадки в соответствии с некоторыми вариантами осуществления изобретения. Взаимодействие, показанное на фигуре 4, может осуществляться перед запуском программного приложения или услуги ПО, которые используют услугу ПО, разработанную разработчиком 142.
На стадии 410 устройство 140 разработчика передает информацию 300 регистрации в комплекс 110 торговой площадки. Как уже указывалось, информация 300 регистрации может описывать услугу ПО, разработанную разработчиком 142. На стадии 420 комплекс 110 торговой площадки принимает информацию 300 регистрации из устройства 140 разработчика. На стадии 430 в комплексе 110 торговой площадки конфигурируется сервер (например, сервер 120 или сервер 130) или устройство 140 разработчика для размещения услуги ПО, описанной в информации 300 регистрации.
На стадии 440 комплекс 110 торговой площадки обеспечивает извещение о том, что услуга ПО, описанная в информации 300 регистрации, доступна для использования (например, для вызова). Такое извещение может передаваться в устройство 140 разработчика (например, извещение разработчика 142 о том, что услуга ПО зарегистрирована и доступна для вызова потребителями) и/или в устройство 150 разработчика (например, извещение разработчика 152 о том, что услуга ПО доступна для использования в программном приложении или в другой услуге ПО). На стадии 450 устройство 140 разработчика получает извещение из комплекса 110 торговой площадки. Аналогичным образом, на стадии 460 устройство 150 разработчика получает извещение из комплекса 110 торговой площадки.
На фигуре 5 представлена блок-схема алгоритма взаимодействия между устройством 150 разработчика, комплексом 110 торговой площадки и сервером (сервером 120 или сервером 130) или устройством 140 разработчика в соответствии с некоторыми вариантами осуществления изобретения. Любые стадии 510, 520, 530, 540, 550, 560, 570 и 580 могут выполняться в процессе выполнения программного приложения или услуги ПО, которые используют услугу ПО, разработанную разработчиком 142. Стадии 590, 592 и 594 могут выполняться в процессе или после выполнения программного приложения или услуги ПО.
На стадии 510 устройство 150 разработчика (представляющее, например, устройство потребителя) передает запрос на вызов услуги ПО, описанной в информации 300 регистрации. Запрос, который может представлять собой запрос на выполнение процесса услуги ПО или содержать такой запрос, может быть передан в комплекс 110 торговой площадки. На стадии 520 комплекс 110 торговой площадки принимает запрос из устройства 150 разработчика. На стадии 530 комплекс 110 торговой площадки направляет запрос на вызов услуги ПО в сервер (например, в сервер 120 или в сервер 130) или в устройство 140 разработчика, которые конфигурируют для размещения услуги ПО.
На стадии 550 сервер (например, на сервер 120 или сервер 130) или устройство 140 разработчика получает запрос на вызов услуги ПО. На стадии 560 сервер выполняет процесс услуги ПО (например, в соответствии с запросом на вызов услуги ПО). Например, сервер может выполнять процесс услуги ПО путем обращения к базе 102 данных внутри сетевой коммерческой системы 101 и считывания или изменения записи данных, хранящейся в базе 102 данных.
На стадии 570 сервер возвращает результат выполнения процесса (например, в устройство 150 разработчика, которое передало запрос на вызов услуги ПО). Например, сервер может обеспечивать запись данных, считанную из базы 102 данных. В другом примере сервер может обеспечивать подтверждение того, что запись данных в базе 102 данных была успешно считана или изменена. В некоторых вариантах сервер возвращает результаты выполнения услуги ПО в устройство 150 разработчика, и в других вариантах сервер возвращает такие результаты в комплекс 110 торговой площадки (например, через модуль 250 маршрутизации), который направляет результаты в устройство 150 разработчика.
На стадии 540 комплекс 110 торговой площадки записывает для хранения процесс, выполняемый сервером. На стадии 580 устройство 150 разработчика (например, устройство потребителя) получает результаты процесса, передаваемые сервером (например, сервером 120 или сервером 130) или устройством 140 разработчика, выполнившим процесс услуги ПО.
В некоторых вариантах выполняются стадии 590 - 594 (например, после стадии 580). На стадии 590 устройство 150 разработчика передает сформированные данные в комплекс 110 торговой площадки, в сервер (например, в сервер 120 или в сервер 130) и/или в устройство 140 разработчика, выполнившие процесс услуги ПО. Сформированные данные могут включать информацию, полученную в результате выполнения процесса услуги ПО. Это может иметь полезный эффект (например, доступ к сформированным данным) для комплекса 110 торговой площадки и/или сервера. В некоторых вариантах плату за использование услуги ПО (например, вызванное выполнение процесса услуги ПО) снижают или делают скидку на нее в случае такого полезного эффекта. На стадии 592 комплекс 110 торговой площадки получает сформированные данные от устройства 150 разработчика (выступающего, например, в качестве потребителя в отношении услуги ПО). Аналогично, на стадии 594 сервер получает сформированные данные от устройства 150 разработчика (выступающего, например, в качестве потребителя в отношении услуги ПО).
На фигурах 6, 7 представлена блок-схема алгоритма осуществления способа 600 обеспечения торговой площадки для услуг ПО в соответствии с некоторыми вариантами осуществления изобретения. Стадии способа 600 могут быть выполнены комплексом 110 торговой площадки с использованием модулей, описанных выше со ссылками на фигуру 2. Как можно видеть на фигуре 6, способ 600 содержит стадии 420, 430 и 440, которые были уже описаны со ссылками на фигуру 4. В некоторых вариантах для обеспечения торговой площадки для услуг ПО способ 600 объединяют с одним или несколькими дополнительными способами (например, описанными ниже со ссылками на фигуры 8,9).
На стадии 420 модуль 210 комплекса 110 торговой площадки принимает информацию 300 регистрации для услуги ПО, разработанной разработчиком 142. Услуга ПО, размещенная на сервере, может работать таким образом, что сервер будет выполнять процесс услуги ПО (например, в ответ на ее вызов). Например, информация 300 регистрации может быть передана разработчиком 142 через устройство 140 разработчика в комплекс 110 торговой площадки, и модуль 210 регистрации может принимать информацию 300 регистрации из устройства 140 разработчика.
На стадии 430 модуль 220 управления комплекса 110 торговой площадки конфигурирует сервер (например, сервер 120 или сервер 130) или устройство 140 разработчика в соответствии с информацией регистрации, полученной на стадии 420. Комплекс 110 торговой площадки конфигурирует сервер для размещения услуги ПО (например, в ответ на запрос вызова услуги ПО с использованием ее интерфейса API).
На стадии 440 модуль 230 публикаций комплекса 110 торговой площадки обеспечивает оповещение о том, что услуга ПО, разработанная разработчиком 142 доступна для вызова (например, с использованием интерфейса API услуги ПО). Оповещение может обеспечиваться для устройства 140 разработчика и/или для устройства 150 разработчика. В некоторых вариантах устройство 150 разработчика представляет собой устройство разработчика 152, который является разработчиком другой услуги ПО (например, дополнительной услуги ПО), которая не способна вызвать выполнение сервером процесса услуги ПО, разработанной разработчиком 142. Соответственно, разработчик 152 может быть потенциальным потребителем (например, пользователем) услуги ПО, разработанной разработчиком 142 и описанной в информации 300 регистрации.
В некоторых вариантах модуль 230 публикаций обеспечивает извещение в соответствии с уровнем доступа, указанным информацией 354 о доступе в информации 300 регистрации. Например, извещение может содержать указание о том, что услуга ПО является общедоступной. В другом варианте извещение может указывать на то, что услуга ПО недоступна для разработчика 152 (например, включенного в "черный список" разработчиков). Еще в одном варианте извещение может указывать на то, что услуга ПО специально доступна для разработчика 152 (например, включенного в "белый список" разработчиков).
В некоторых вариантах модуль 230 публикаций обеспечивает указание того, что за вызов услуги ПО может начисляться плата. Это указание может обеспечиваться в соответствии с информацией 356 о стоимости, входящей в состав информации 300 регистрации. Например, извещение, обеспечиваемое модулем 230 публикаций, может включать сообщение о том, что за вызов услуги ПО будет начисляться плата.
В другом варианте модуль 230 публикаций обеспечивает указание времени ожидания услуги ПО (например, ожидаемое, прогнозируемое или обязательное) в ответ на запрос вызова услуги ПО. Это указание может обеспечиваться в соответствии с информацией 358 QoS, входящей в состав информации 300 регистрации. Например, извещение, обеспечиваемое модулем 230 публикаций, может содержать сообщение о том, что максимальное время ожидания, равное 50 миллисекундам (например, между моментом вызова услуги ПО и обеспечением результата выполнения процесса этой услуги), может быть гарантировано за определенную плату, в то время как максимальное время ожидания, равное 500 миллисекундам, может быть гарантировано за другую плату.
Как показано на фигуре 7, способ 600 может включать одну или несколько стадий 710, 720, 730, 740, 750, 760, 770 и 780. На стадии 710 модуль 230 публикаций комплекса 110 торговой площадки получает запрос на идентификацию услуги ПО, описанной в информации 300 регистрации, среди множества услуг ПО, которые доступны для вызова (например, от множества серверов). В некоторых вариантах модуль 230 публикаций обеспечивает поисковую машину, эксплуатация которой осуществляется (например, разработчиком 152) для поиска среди множества услуг ПО и идентификации одной или нескольких услуг ПО, удовлетворяющих одному или нескольким критериям поиска. В ответ на запрос, полученный на стадии 710, может быть передан результат поиска, как это описано ниже в отношении стадии 760.
Одна или несколько стадий 720, 730, 740 и 750 могут быть выполнены как часть (например, подпрограмма или блок программы) стадии 430, на которой модуль 220 управления конфигурирует сервер в соответствии с информацией 300 регистрации, полученной на стадии 420. На стадии 720 модуль 220 управления комплекса 110 торговой площадки конфигурирует сервер для размещения на нем множества услуг ПО, которые включают услугу ПО, описанную в информации 300 регистрации. Например, сервер может иметь достаточные вычислительные ресурсы (например, процессор, запоминающее устройство, накопитель данных или устройство ввода/вывода, имеющие высокие характеристики) для размещения тысяч услуг ПО, и модуль 220 управления может конфигурировать сервер для размещения на нем нескольких сотен услуг ПО. В вариантах, которые включают стадию 720, стадия 440 может включать идентификацию услуги ПО, описанной в информации 300 регистрации, среди множества услуг ПО или среди подмножества таких услуг. Например, на стадии 440 при обеспечении извещения о том, что услуга ПО доступна, она может идентифицироваться как одна из десятка услуг ПО в категории "считывание информации о наличном количестве" на торговой площадке, которая предлагает сотни услуг ПО.
На стадии 730 модуль 220 управления комплекса 110 торговой площадки конфигурирует сервер 120, входящий в состав системы 105 торговой площадки для услуг ПО, в качестве хост-машины для услуги ПО, описанной в информации 300 регистрации. На стадии 740 модуль 220 управления конфигурирует сервер 130, не входящий в состав системы 105 торговой площадки для услуг ПО, в качестве хост-машины для услуги ПО, описанной в информации 300 регистрации. На стадии 750 модуль 220 управления конфигурирует устройство 140 разработчика, которое может быть устройством разработчика 142, в качестве хост-машины для услуги ПО, описанной в информации 300 регистрации. В соответствии с некоторыми вариантами модуль 220 управления конфигурирует множество серверов (например, сервер 120 и сервер 130) для улучшения выравнивания нагрузок, для обеспечения резервирования, для управления сетевым графиком или для обеспечения любого подходящего сочетания указанных функций.
Одна или несколько стадий 760, 770 и 780 могут быть выполнены как часть (например, подпрограмма или блок программы) стадии 440, на которой модуль публикаций обеспечивает извещение о том, что услуга ПО доступна. На стадии 760 модуль 230 публикаций обеспечивает результаты поиска, содержащие по меньшей мере некоторую часть информации 300 регистрации, описывающей услугу ПО, разработанную разработчиком 142. Например, модуль 230 публикаций может обеспечивать извещение посредством передачи результата поиска. Передача результата поиска может осуществляться в ответ на получение запроса на стадии 710.
На стадии 770 модуль 230 публикаций обеспечивает извещение, передаваемое в устройство 140 разработчика, которое может быть устройством разработчика 142, разработавшего услугу ПО, описанную в информации 300 регистрации. На стадии 780 модуль 230 публикаций обеспечивает извещение, передаваемое в устройство 150 разработчика, которое может быть устройством разработчика 152 (например, потребителя или пользователя услуги ПО).
На фигурах 8, 9 представлена блок-схема алгоритма осуществления способа 800 обеспечения торговой площадки для услуг ПО в соответствии с некоторыми вариантами осуществления изобретения. Как можно видеть на фигуре 8, способ 800 содержит стадии 520, 530 и 540, которые были уже описаны со ссылками на фигуру 5. В некоторых вариантах способ 800 объединяют с одним или несколькими дополнительными способами (например, со способом 600) для обеспечения торговой площадки для услуг ПО.
На стадии 520 модуль 240 соединений комплекса 110 торговой площадки получает запрос (например, через интерфейс API) на вызов услуги ПО, разработанной разработчиком 142 и описанной в информации 300 регистрации. Например, вызов может быть запрошен с использованием интерфейса API услуги ПО, которая может быть размещена на сервере (например, на сервере 120 или на сервере 130) или на устройстве 140 разработчика, которые могут быть сконфигурированы (например, модулем 220 управления комплекса 110 торговой площадки) для выполнения процесса услуги ПО в ответ на вызов этой услуги. Как уже указывалось, запрос может быть получен из устройства 150, которое может быть устройством разработчика 152 (выступающего, например, в качестве потребителя услуги ПО или ее интерфейса API).
На стадии 530 модуль 250 маршрутизации комплекса 110 торговой площадки направляет (например, передает) запрос на вызов услуги ПО в сервер (например, в сервер 120 или в сервер 130) или в устройство 140 разработчика, которые сконфигурированы для выполнения процесса услуги ПО. Как уже указывалось, сервер принимает запрос, выполняет процесс и возвращает полученный результат (например, в комплекс торговой площадки и/или в устройство 150 разработчика).
На стадии 540 модуль 260 использования комплекса 110 торговой площадки записывает для хранения выполненного процесса услуги ПО сервером, в который был направлен запрос на вызов услуги ПО. Как уже указывалось, сервер может выполнить процесс услуги ПО в ответ на ее вызов, запрошенный через интерфейс API услуги ПО. Модуль 260 использования при выполнении стадии 540 может отслеживать использование услуги ПО (например, использование услуги ПО, использование процессов, осуществляемых услугой ПО, использование уникальных процессов, осуществляемых услугой ПО, время использования услуги ПО или использование услуги ПО с определенным уровнем QoS).
Как показано на фигуре 9, способ 800 может включать одну или несколько стадий 910, 920, 930, 940, 950, 960, 970, 980 и 990. На стадии 910 модуль 250 маршрутизации комплекса 110 торговой площадки определяет, что услуга ПО доступна для разработчика 152 (выступающего, например, в качестве потребителя услуги ПО). Определение доступности услуги ПО может осуществляться на основе информации 354 об уровне доступа в информации 300 регистрации, которая была получена комплексом 110 торговой площадки (например, через модуль 210 регистрации). В некоторых вариантах, включающих стадию 910, модуль 250 маршрутизации может выполнять стадию 530 в соответствии с определением того, что услуга ПО доступна для разработчика 152.
Одна или несколько стадий 920, 930, 940 и 950 могут быть выполнены как часть (например, подпрограмма или блок программы) стадии 530, на которой модуль 250 маршрутизации комплекса 110 торговой площадки направляет запрос на вызов услуги ПО. На стадии 920 модуль 250 маршрутизации направляет запрос в сервер, который сконфигурирован (например, модулем 220 управления) для размещения на нем множества услуг ПО, которые включают услугу ПО, описанную в информации 300 регистрации. Например, модуль 250 маршрутизации может направлять запрос в сервер, сконфигурированный для размещения на нем сотен услуг ПО, включая услугу ПО, разработанную разработчиком 142.
На стадии 930 модуль 250 маршрутизации направляет запрос на вызов услуги ПО в сервер 120, который входит в состав системы 105 торговой площадки для услуг ПО, и может быть сконфигурирован (например, модулем 220 управления) в качестве хост-машины для услуги ПО, описанной в информации 300 регистрации. На стадии 940 модуль 250 маршрутизации направляет запрос на вызов услуги ПО в сервер 130, который не входит в состав системы 105 торговой площадки для услуг ПО, и может быть сконфигурирован в качестве хост-машины для услуги ПО. На стадии 950 модуль 250 маршрутизации направляет запрос на вызов услуги ПО в устройство 140, который может быть устройством разработчика 142, и может быть сконфигурировано в качестве хост-машины для услуги ПО. В некоторых вариантах модуль 250 маршрутизации направляет запрос в несколько серверов (например, в сервер 120 и в сервер 130), которые определяют (например, с использованием алгоритма разрешения конфликтных ситуаций), какой конкретный сервер будет выполнять процесс, требуемый запросом на вызов услуги ПО.
Стадия 960 и/или стадия 950 могут быть выполнены как часть (например, подпрограмма или блок программы) стадии 540, на которой модуль 260 использования комплекса 110 торговой площадки записывает для хранения запрошенный процесс, выполняемый сервером, на котором размещена услуга ПО. На стадии 960 модуль 260 использования комплекса 110 торговой площадки записывает для хранения число вызовов услуги ПО. Например, модуль 260 использования может записывать для хранения число вызовов разработчиком 152 (например, выступающего в качестве потребителя услуги ПО) услуги ПО (например, суммарное число вызовов услуги ПО, суммарное число вызовов любого процесса, осуществляемого услугой ПО, суммарное число вызовов определенного процесса, осуществляемого услугой ПО, суммарное число вызовов услуги ПО в некотором временном интервале или суммарное число вызовов услуги ПО с определенным уровнем QoS).
На стадии 970 модуль 260 использования комплекса 110 торговой площадки записывает для хранения число выполнений процесса услуги ПО сервером, на котором размещена эта услуга. Например, модуль 260 использования может записывать для хранения число выполнений сервером процесса в ответ на один или несколько вызовов услуги ПО, запрошенной разработчиком 152 (выступающим, например, в качестве потребителя услуги ПО).
Стадия 980 и/или стадия 990 могут быть выполнены как часть (например, подпрограмма или блок программы) стадии 540, на которой модуль 260 использования комплекса 110 торговой площадки записывает для хранения информацию о выполняемом процессе. На стадии 980 модуль 270 биллинга комплекса 110 торговой площадки начисляет плату для разработчика 152 (выступающего, например, в качестве потребителя услуги ПО). Плата может начисляться за выполнение процесса услуги ПО сервером в ответ на вызов этой услуги в соответствии с запросом, полученным на стадии 520. В некоторых вариантах модуль 270 биллинга начисляет плату на основе числа вызовов услуги ПО, записанных модулем 260 использования на стадии 960. В некоторых вариантах модуль 270 биллинга начисляет плату на основе числа выполнений услуги ПО, записанных модулем 260 использования на стадии 970.
Как уже указывалось, плата, начисляемая модулем 270 биллинга, может включать плату за услугу (например, за процессы, выполняемые комплексом торговой площадки). В некоторых вариантах модуль 270 биллинга может получать плату от разработчика 152 (например, через устройство 150 разработчика). В некоторых вариантах по меньшей мере часть платы может быть перечислена модулем 270 биллинга разработчику 142 (например, через устройство 140 разработчика) услуги ПО.
На стадии 990 модуль 280 отчетов комплекса 110 торговой площадки обеспечивает отчет, который содержит информацию о выполнении процесса (например, что процесс выполнен) сервером (например, сервером 120 или сервером 130) или устройством 140 разработчиком, которые сконфигурированы для размещения услуги ПО. Как уже указывалось, сервер может выполнить процесс услуги ПО в ответ на ее вызов, запрос на который получен на стадии 520 через интерфейс API. В некоторых вариантах модуль 280 отчетов обеспечивает отчет, в котором указывается число вызовов услуги ПО разработчиком 152 (выступающим, например, в качестве потребителя услуги ПО), например число вызовов, записанных модулем 260 на стадии 960. В некоторых вариантах модуль 280 отчетов обеспечивает отчет, в котором указывается число выполнений сервером процесса в ответ на один или несколько вызовов услуги ПО, запрошенной разработчиком 152 (выступающим, например, в качестве потребителя услуги ПО).
Как уже указывалось, отчет может содержать сводные показатели использования некоторой услуги ПО (например, количество процессов или уникальных процессов). Отчет может указывать вызовы услуг ПО разработчиком 152 (например, может содержать сводные показатели потребления различных услуг ПО, суммарную стоимость за некоторый временной период, стоимость по каждому разработчику, стоимость по каждой услуге ПО, ошибки по каждой услуге ПО и соответствие качества QoS). Отчет может указывать вызовы услуг ПО, продаваемых разработчиком 142 (например, может содержать доходы и прибыльность по каждой услуге ПО, доходы и прибыльность по каждому потребителю, ошибки по каждой услуге ПО и соответствие качества QoS).
В соответствии с различными вариантами один или несколько способов, раскрытых в настоящем описании, могут обеспечивать торговую площадку для одной или нескольких услуг ПО. В частности, один или несколько способов, раскрытых в настоящем описании, могут обеспечивать объединение услуг ПО, их регистрацию и конфигурирование одного или нескольких серверов для размещения услуг ПО, а также представление (например, содействие продажам) этих услуг потенциальным потребителям. Кроме того, один или несколько способов, раскрытых в настоящем описании, могут обеспечивать получение и маршрутизацию запросов на вызов услуг ПО, а также отслеживание выполнения процессов этих услуг, формирование отчетов о выполнении процессов и начисление платы за их выполнение. Также следует отметить, что один или несколько способов, раскрытых в настоящем описании, могут составлять способ ведения деловой деятельности (например, способ ведения деловой деятельности, реализованный с использованием вычислительных устройств), который включает обеспечение, эксплуатацию и поддержание торговой площадки для услуг ПО.
Когда эти действующие факторы рассматриваются в совокупности, один или несколько способов, раскрытых в настоящем описании, могут снизить потребность в расходах или ресурсах, которые в противном случае пришлось бы потратить на налаживание связей между разработчиками (например, потенциальными продавцами и потребителями услуг ПО). Расходы разработчика на нахождение подходящей услуги ПО (например, с приемлемой стоимостью и временем ожидания) могут быть снижены за счет применения одного или нескольких способов, раскрытых в настоящем описании. Аналогично, вычислительные ресурсы, используемые одним или несколькими вычислительными устройствами или базами данных (например, входящими в сетевую среду 100) могут быть снижены. Такие вычислительные ресурсы включают число циклов процессора, трафик в сети, загрузку запоминающего устройства, емкость накопителя данных, потребление электроэнергии и охлаждающую способность.
На фигуре 10 представлена блок-схема, на которой показаны компоненты вычислительного устройства 1000 в соответствии с некоторыми вариантами осуществления изобретения, с возможностью считывания команд с машиночитаемого носителя (например, с машиночитаемого накопителя данных) и выполнения одного или нескольких способов по настоящему изобретению. В частности, на фигуре 10 приведена схема вычислительного устройства 1000 в форме вычислительной системы, которая может выполнять команды 1024 (например, программу) для обеспечения выполнения вычислительным устройством 1000 одного или нескольких способов, рассмотренных в настоящем описании. В других вариантах вычислительное устройство 1000 является автономным или может быть соединено (например, по сети) с другими устройствами. В сетевом варианте вычислительное устройство 1000 может работать как сервер или как клиент в сетевой среде клиент-сервер, или же по схеме пиринговой (или распределенной) сети. Вычислительное устройство 1000 может быть сервером, клиентским компьютером, персональным компьютером (ПК), планшетным ПК, ноутбуком, нетбуком, декодирующей приставкой (STB), карманным персональным компьютером (КПК), сотовым телефоном, смартфоном, веб-устройством, сетевым маршрутизатором, коммутатором или мостом, или любым другим устройством, способным выполнять команд 1024 (последовательные или другие), определяющие действия, которые должны быть выполнены этим устройством. Кроме того, в то время как рассматривается одно вычислительное устройство, термин "вычислительное устройство" также охватывает любое множество вычислительных устройств, которые по отдельности или совместно выполняют команды 1024 для осуществления одного или нескольких описанных здесь способов.
Вычислительное устройство 1000 содержит процессор 1002 (например, центральный процессор, графический процессор, или оба типа процессоров, специализированную интегральную микросхему, радиочастотную интегральную микросхему или их подходящее сочетание), оперативное запоминающее устройство 1004 и постоянное запоминающее устройство 1006, которые обмениваются информацией друг с другом по шине 1008. Вычислительное устройство 1000 может содержать также устройство 1010 отображения, например, жидкокристаллический дисплей, плазменный дисплей или дисплей на электронно-лучевой трубке. Вычислительное устройство 1000 также содержит буквенно-цифровое устройство 1012 ввода информации (например, клавиатуру), устройство 1014 управления курсором (например, мышь), накопитель 1016, устройство 1018 сигнализации (например, громкоговоритель) и устройство 1020 сетевого интерфейса.
Накопитель 1016 содержит машиночитаемый носитель 1022, на котором хранятся команды 1024 (например, программы), которые обеспечивают осуществление одного или нескольких описываемых способов или функций. Команды 1024 также могут размещаться, полностью или частично, в оперативном запоминающем устройстве 1004 и/или в процессоре 1002 (например, в кэш-памяти процессора при выполнении этих команд вычислительным устройством 1000. Соответственно, оперативное запоминающее устройство 1004 и процессор 1002 также могут рассматриваться как машиночитаемый носитель. Команды 1024 могут также передаваться или приниматься по сети 1026 (например, по сети 190) с помощью устройства 1020 сетевого интерфейса.
Термин "запоминающее устройство", как он используется в настоящем описании, относится к машиночитаемому носителю, способному временно или постоянно хранить данные, который включает такие типы запоминающих устройств, как оперативное запоминающее устройство, постоянное запоминающее устройство, буферное запоминающее устройство, флэш-память и сверхоперативное запоминающее устройство (кэш). Хотя машиночитаемый носитель 1022 показан в рассматриваемом варианте в форме одного носителя, однако термин "машиночитаемый носитель" охватывает варианты одного или нескольких носителей (например, централизованная или распределенная база данных и/или буферная память и серверы), в которых хранятся команды (например, команды 1024). Термин "машиночитаемый носитель" также включает любой носитель, который способен хранить команды (например, программы) для их выполнения вычислительным устройством, так что при выполнении этих команд одним или несколькими процессорами вычислительного устройства (например, процессором 1002) обеспечивается выполнение одного или нескольких способов, раскрытых в настоящем описании. Соответственно, термин "машиночитаемый носитель" охватывает хранилища данных в форме твердотельных запоминающих устройств, оптических носителей, магнитных носителей и любых подходящих сочетаний указанных устройств (перечень не является исчерпывающим).
По всему тексту настоящего описания указание компонентов, стадий или структур в единственном числе не исключает их использование во множественном числе. Хотя стадии одного или нескольких способов описываются как отдельные действия, одна или несколько стадий могут быть выполнены одновременно, и совершенно необязательно, чтобы они выполнялись в указанном в описании порядке. Структуры и функциональные возможности, указанные как отдельные компоненты в иллюстративных конфигурациях, могут быть реализованы в форме объединенной структуры или функциональной возможности, соответственно. Аналогично, структуры и функциональные возможности, указанные в единственном числе, могут быть реализованы как отдельные компоненты. Эти и другие варианты, модификации, дополнения и улучшения охватываются объемом настоящего изобретения.
Варианты осуществления изобретения, раскрытые в настоящем описании, включают логические схемы или ряд компонентов, модулей или механизмов. Модули могут содержать программные модули (например, программы, записанные на машиночитаемом носителе или передаваемые в составе сообщений) и/или аппаратные модули. Термин "аппаратный модуль" относится к материальному устройству, который способен выполнять определенные операции и может быть сконфигурирован физически определенным образом. В различных вариантах одна или несколько вычислительных систем (например, автономная вычислительная система, клиентская компьютерная система или серверная компьютерная система) или один или несколько аппаратных модулей вычислительной системы (например, процессор или группа процессоров) могут быть сконфигурированы программно (например, с помощью программного приложения или части такого приложения) как аппаратный модуль, который работает для выполнения некоторых стадий, раскрытых в настоящем описании.
В некоторых вариантах аппаратный модуль может быть реализован как механический компонент, электронный компонент или любое подходящее сочетание указанных компонентов. Например, аппаратный модуль может содержать электронные логические схемы, имеющие постоянную конфигурацию для выполнения определенных действий. Например, аппаратный модуль может представлять собой специализированный процессор, такой как программируемая вентильная матрица или специализированная интегральная микросхема. Аппаратный модуль может также содержать программируемую логику или схемы, которые можно переконфигурировать программно для выполнения определенных операций. Например, аппаратный модуль может содержать программы, размещенные в универсальном процессоре или в другом программируемом процессоре. Будет ясно, что решение по реализации аппаратного модуля с использованием механических средств, в специализированных схемах и в схемах с однократным конфигурированием, или в схемах с возможностью многократного конфигурирования (например, с помощью программных средств) может приниматься по соображениям временных и материальных затрат.
Соответственно, термин "аппаратный модуль" должен пониматься в смысле материального объекта, представляющего собой физическую структуру, сконфигурированную один раз (например, прошитая программа) или многократно конфигурируемую (например, программно) для работы определенным образом и/или для выполнения определенных действий, рассмотренных в настоящем описании. Термин "аппаратно реализованный модуль", используемый в настоящем описании, относится к аппаратному модулю. В тех вариантах, в которых аппаратные модули могут конфигурироваться неоднократно (например, программно), нет необходимости конфигурировать каждый аппаратный модуль в любой момент времени. Например, если аппаратный модуль содержит универсальный процессор, который может конфигурироваться программно, для превращения его в специализированный процессор, то универсальный процессор может конфигурироваться по-разному (разные аппаратные модули) в разные моменты времени. Программа может обеспечивать соответствующее конфигурирование процессора, например, для получения определенного аппаратного модуля в один момент времени и другого аппаратного модуля в другой момент времени.
Аппаратные модули могут передавать информацию в другие аппаратные модули, а также получать из них информацию. Соответственно, рассмотренные аппаратные модули могут рассматриваться как соединенные между собой компоненты с возможностью обмена информацией. Если одновременно используются несколько аппаратных модулей, то обмен информацией между такими аппаратным модулями может осуществляться путем передачи сообщений (например, по соответствующим цепям или шинам). В тех вариантах, в которых несколько аппаратных модулей могут конфигурироваться в разные моменты времени, обмен информацией между такими аппаратными модулями может осуществляться, например, путем хранения и считывания информации из запоминающих устройств, к которым имеют доступ аппаратные модули. Например, один аппаратный модуль может выполнить процесс и сохранить полученные результаты этого процесса в запоминающем устройстве, с которым соединен этот аппаратный модуль. Затем другой аппаратный модуль может обратиться в это запоминающее устройство для считывания и обработки записанных в нем результатов. Аппаратные модули могут также инициировать обмен информацией с устройствами ввода/вывода, и могут работать с ресурсами (например, осуществляющими сбор информации).
Различные стадии описанных вариантов предложенных в настоящем изобретении способов могут быть выполнены, по меньшей мере частично, одним или несколькими процессорами, которым задают постоянную или временную конфигурацию, подходящую для выполнения соответствующих процессов. Независимо от характера конфигурации, временной или постоянной, такие процессоры могут составлять процессорные модули, предназначенные для выполнения одной или нескольких операций или функций. Термин "процессорный модуль", как он используется в настоящем описании, относится к аппаратному модулю, реализованному с использованием одного или нескольких процессоров.
Аналогично, способы, раскрытые в настоящем описании, могут быть по меньшей мере частично реализованы с использованием процессоров. Например, по меньшей мере некоторые стадии способа могут быть выполнены одним или несколькими процессорами или процессорными модулями. Один или несколько процессоров также могут работать таким образом, чтобы поддерживать соответствующие процессы в "облачной" среде или программное обеспечение как услугу (SaaS). Например, по меньшей мере некоторые процессы могут быть выполнены группой компьютеров (например, вычислительными устройствами, содержащими процессоры), причем доступ к этим процессам может осуществляться по сети (например, по сети Интернет) и через один или несколько соответствующих интерфейсов (например, интерфейс API).
Выполнение некоторых процессов может быть распределено между несколькими процессорами, которые могут находиться в одном вычислительном устройстве или распределены между несколькими такими устройствами. В некоторых вариантах один или несколько процессоров или процессорных модулей могут находиться в одном месте (например, в доме, в офисе или в рамках одной серверной фермы). В других вариантах один или несколько процессоров или процессорных модулей могут быть распределены между разными местами.
Некоторые части описания представлены в форме алгоритмов или символических представлений процессов, совершаемых в отношении данных, записанных в форме битов или двоичных цифровых кодов в памяти вычислительного устройства. Эти алгоритмы или символические представления могут быть техническими приемами, которые используются специалистами в области обработки данных для объяснения принципов работы другим специалистам. Термин "алгоритм", как он используется в настоящем описании, представляет собой логически последовательную цепочку действий или аналогичной обработки, приводящей к требуемому результату. В этом контексте алгоритмы и процессы представляют физические действия над физическими величинами. Такие величины могут иметь, например, форму электрических, магнитных или оптических кодов, которые можно хранить, считывать, передавать, объединять, сравнивать и осуществлять иные действия с использованием вычислительных устройств. Такие коды удобно указывать, прежде всего по соображениям широкого использования, как "данные", "контент", "биты", "величины", "элементы", "символы", "выражения", "числа" и т.п. Однако эти термины представляют собой удобные ярлыки и должны связываться с соответствующими физическими величинами.
Если специально не указано иное, то такие термины, как "обработка", "вычисление", "расчет", "определение", "представлении", "отображение" и аналогичные термины, используемые по всему тексту описания, могут относиться к действиям или к способам, выполняемым вычислительным устройством (например, компьютером), которое обрабатывает или преобразует данные, представленные в форме физических величин (например, в электронной, магнитной или оптической форме), в одном или нескольких запоминающих устройствах (например, в оперативных запоминающих устройствах, постоянных запоминающих устройствах или в любых подходящих сочетаниях таких устройств), регистрах или других компонентах вычислительных устройств, которые обеспечивают прием, хранение, передачу или отображение информации. Если специально не указано иное, то, как это обычно для патентных документов, указание в настоящем описании единственного числа, не исключает множественного числа. Наконец, если специально не указано иное, то использование в настоящем описании союза "или" относится к его неисключающему значению (то есть "и/или").