Введение

NetKernel — британская компания, разрабатывающая программное обеспечение, и программная платформа с тем же названием, используемая для высокопроизводительных вычислений, интеграции корпоративных приложений и энергоэффективных вычислений. Она позволяет разработчикам чётко отделять код от архитектуры. NetKernel может использоваться как сервер приложений, быть встроенным в Java-контейнер или применяться как платформа облачных вычислений. Как платформа, это реализация абстракции ресурсо-ориентированных вычислений (ROC). ROC — это логическая вычислительная модель, которая располагается поверх, но полностью изолирована от физической области кода и объектов. В ROC информация и сервисы идентифицируются логическими адресами, которые разрешаются в физические конечные точки на время запроса и затем освобождаются. Логическое непрямое адресование обеспечивает гибкие системы, которые можно изменять во время работы. В NetKernel граница между логическим и физическим слоями опосредована микроядром уровня операционной системы, способным выполнять различные прозрачные оптимизации. Идея использования ресурсов для моделирования абстрактной информации восходит к архитектурному стилю REST и Всемирной паутине. Идея использования единой модели адресации заимствована из операционной системы Unix. NetKernel можно рассматривать как объединение Web и Unix, реализованное в виде программной операционной системы, работающей на монолитном микроядре в рамках одного компьютера. NetKernel был разработан компанией 1060 Research и предлагается под двойной лицензией открытого исходного кода.

Роджерс рассматривал Web как реализацию общей абстракции, которую он экстраполировал в ROC, но в то время как Web ограничен публикацией информации, он приступил к разработке решения, способного выполнять вычисления, используя схожие принципы. Работая в тесном сотрудничестве с сооснователем Тони Баттерфилдом, они обнаружили метод написания программного обеспечения, которое может выполняться в логической модели, отделенной от физической области кода и объектов. Осознавая потенциал этого подхода, они вышли из HP Labs. Роджерс и Баттерфилд основали свою компанию "1060 Research Limited" в 2002 году в Чиппинг-Содбери, небольшом городке на окраине региона Котсуолдс в Англии, и в течение нескольких лет разработали платформу, которая стала NetKernel. В начале 2018 года 1060 Research объявила о назначении нового генерального директора, Чарльза Рэдклиффа. В феврале 2018 года Рэдклифф сообщил сообществу NetKernel, что команда работает над новой платформой на базе NKEE 6, которая будет полностью размещена, программируема и доступна через веб-облако NetKernel Cloud. Рэдклифф подал в отставку через шесть месяцев.

Ресурс

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

Адреса

Ресурс идентифицируется адресом в адресном пространстве. В NetKernel для идентификации всех ресурсов используются адреса Uniform Resource Identifier (URI). В отличие от Web, который имеет единое глобальное адресное пространство, NetKernel поддерживает неограниченное количество адресных пространств и связи между ними. NetKernel поддерживает различные схемы URI и вводит новые, специально предназначенные для URI-адресации внутри программной системы.

Запрос

Основная операция в NetKernel — это запрос ресурса, или реквест. Реквест состоит из URI-адреса ресурса и глагола. Поддерживаемые глаголы включают SOURCE, SINK, NEW, DELETE, EXISTS и META. Каждый реквест направляется в микроядро, которое разрешает URI-адрес в физическую конечную точку и назначает и планирует поток для обработки. Когда конечная точка завершает обработку, микроядро возвращает ответ инициатору запроса.

Языки сценариев

Необходим механизм для формирования URI-запросов, получения возвращаемых представлений и взаимодействия с клиентами. Языки сценариев выполняются их средой выполнения, которая сама по себе является службой. Например, среда выполнения Groovy запустит программу, содержащуюся в файле file:/program.gy, следующим образом: active:groovy+operator@file:/program.gy.