77227

Реализация подключения виртуальной машины Neko к http-серверу с помощью интерфейса FastCGI

Курсовая

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

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

Русский

2015-02-02

61 KB

2 чел.

Санкт-Петербургский Государственный Университет

Математико-механический факультет

Кафедра системного программирования


Реализация подключения виртуальной машины Neko к http-серверу с помощью интерфейса FastCGI.

Курсовая работа студента 445 группы
Ларчика Евгения Владимировича

Научный руководитель      М. М. Плискин

Санкт-Петербург

2009

Содержание

Оглавление


[1] Оглавление

Введение

В рамках данной курсовой работы рассматривается взаимодействие http-сервера и стремительно набирающей популярность виртуальной машины Neko [1] через интерфейс FastCGI [2]. Интерес к Neko во многом обусловлен тем, что она является одной из платформ, для которых можно писать приложения на языке программирования haXe[3]. Кроме Neko, на haXe можно создавать приложения ещё для трёх платформ: JavaScript, Flash  и с недавнего времени PHP. Помимо стандартной библиотеки языка, работающей одинаково на всех платформах, существуют также платформенно-зависимые библиотеки, реализующие специфические для конкретных платформ возможности. Таким образом, с помощью haXe можно создавать web-приложения на одном языке программировании от начала и до конца, используя возможности Flash и JavaScript в клиентской части приложения, и возможности Neko или PHP – в серверной. Кроме того, программируя на haXe для Neko, можно разрабатывать приложения для командной строки и рабочего стола.

Код на haXe, написанный для Neko, компилируется в байт-код, который хранится в файлах с расширением .n (так называемых neko-модулях) и может быть исполнен виртуальной машиной. Сама виртуальная машина Neko написана на языке С, поддерживает динамическую типизацию и использует внутри себя сборщик мусора. Интересной особенностью Neko является то, что в ней предусмотрена возможность загружать и выполнять код из сторонних библиотек, написанных на С (при условии, что они написаны в терминах (typedefs) виртуальной машины).

Интерфейс FastCGI – это протокол взаимодействия сервера и приложения, расширение технологии CGI. Так же, как и в CGI, FastCGI-приложения выполняются в отдельных процессах, изолированных от http-сервера, а информация о запросе (request) передаётся в приложение при помощи переменных среды. Однако FastCGI ликвидирует множество ограничений CGI-программ. Проблема CGI-программ в том, что они должны быть перезапущены http-сервером при каждом запросе. FastCGI убирает это ограничение, сохраняя процесс запущенным и передавая запросы этому постоянно запущенному процессу. Это позволяет не тратить время на запуск новых процессов и инициализацию ресурсов. Кроме того, FastCGI-приложения могут использовать протокол TCP/IP для взаимодействия с сервером, а значит, могут быть запущены не только на том же компьютере, но и где угодно в сети.

Взаимодействие приложения и http-сервера реализуется при помощи FastCGI-модуля на стороне сервера и использующихся при написании приложения FastCGI-библиотек для различных языков программирования. Эти библиотеки в основном переопределяют стандартные методы ввода/вывода. В рамках данной курсовой работы использовалась библиотека libfcgi, написанная  на языке C.

Постановка задачи

Несмотря на появление в haXe поддержки PHP, виртуальная машина Neko остаётся наиболее часто используемой платформой для создания серверной части web-приложений. Однако её использование накладывает ограничение на выбор http-сервера для размещения приложения, т.к. на данный момент она поддерживается только http-сервером Apache (c помощью модулей mod_neko и mod_tora). И хотя http-сервер Apache является самым популярным, зачастую можно обойтись менее функциональными и оттого менее громоздкими http-серверами (например, lighthttpd, nginx и другими). Соответственно, появляется задача портирования Neko на эти http-серверы. Одним из способов решить эту задачу является использование интерфейса FastCGI. Модули для поддержки FastCGI существуют для всех известных http-серверов, поэтому если реализовать совместную работу Neko и FastCGI, то Neko можно будет подключить к любому http-серверу. Кроме того, для http-сервера Apache использование связки Neko-FastCGI вместо mod_neko позволяет реализовать преимущества FastCGI над CGI, о которых говорилось выше.

Таким образом, цель данной курсовой работы состоит в следующем: исследовать возможность взаимодействия виртуальной машины Neko и http-сервера с помощью FastCGI и реализовать такое взаимодействие.

Результаты

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

Рис.1

Запрос идёт не к neko-модулю напрямую, а к FastCGI-приложению main.fcg (имя исполняемого модуля можно передать параметром запроса, либо задать константой в main.fcg). Этот запрос обрабатывается FastCGI-модулем сервера, который устанавливает значения нужных переменных среды и только затем передаёт управление  непосредственно main.fcg.

main.fcg – это приложение на языке C со следующей структурой:

// создание и инициализация экземпляра виртуальной машины neko 

while (FCGI_Accept() >= 0) {

// загрузка байт-кода исполняемого модуля в виртуальную машину

// исполнение модуля

// обработка ошибок

}

Создание и инициализация виртуальной машины выполняется один раз при первом запросе к main.fcg. При каждом следующем запросе выполняется только тело цикла while. При возникновении ошибок во время выполнения модуля выводится описание ошибки и место её возникновения,  а также стек вызовов методов.

Поскольку исполняемые neko-модули в нашем случае выполняют роль серверной части приложения, то они использую API для работы с запросами и формирования ответов (response). Все методы этого API описываются в классе neko.Web, однако их реализации на этапе компиляции не определены и загружаются динамически. По умолчанию, если модуль исполняется с помощью mod_neko, они загружаются из библиотеки mod_neko.ndll, в противном случае используются реализации-заглушки, которые ничего не выполняют и возвращают нулевые значения. Поэтому механизм загрузки реализаций  методов был изменён так, чтобы поддерживать загрузку методов из реализованной мной библиотеки neko-fastcgi.ndll. Эта библиотека также написана на С и реализует методы для работы с запросами и ответами, используя механизмы FastCGI.

Таким образом, виртуальная машина Neko может быть теперь подключена к любому http-серверу, поддерживающему FastCGI.

Список литературы

  1.  nekoVM

http://nekovm.org

  1.  FastCGI

http://fastcgi.com

  1.  haXe

http://haxe.org

PAGE   \* MERGEFORMAT 5


 

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

28679. Переход Советского государства к новой экономической политике, ее сущность Совершенствование государственного аппарата и законодательства в период перехода к НЭПу 13.46 KB
  Переход Советского государства к новой экономической политике ее сущность Совершенствование государственного аппарата и законодательства в период перехода к НЭПу. X съезд Коммунистической партии принял решение о переходе от продразверстки к продналогу и о переходе к новой экономической политике нэпу. Переход к новой эккой политике означал отказ от методов военного коммунизма. предполагалось начать выпуск новой валюты.
28680. Судебная реформа 1922 г. и создание единой судебной системы. Упразднение чрезвычайных судебных органов. Создание прокуратуры и адвокатуры 13.61 KB
  ВЦИК утвердил Положение о судоустройстве РСФСР положившее начало новой судебной реформе. Положение вводилось в действие на всей терории РСФСР с 1 января 1923 г. Данным нормативным актом создавалась единая судебная система: народный суд в составе постоянного народного судьи; народный суд в составе постоянного народного судьи и 2ух народных заседателей; губернский суд; Верховный суд РСФСР и его коллегии. Параллельно с единой системой народных судов РСФСР действовали специальные суды: военные трибуналы военнотранспортные трибуналы...
28681. Развитие законодательства и его кодификация в 1922 г. Кодексы законов о труде, земле, гражданский и уголовный кодексы 1922 г. 14.06 KB
  ГК РСФСР состоял из 4 разделов: общ. ЗК РСФСР состоял из Оснх положений и 3 частей: о трудовом землепользи о городских землях и госных земельных имвах о землеустройстве и переселении. Кодекс закрепил отмену частной собствти на землю недра воды и леса в пределах РСФСР. КЗоТ РСФСР сост.
28682. Национально-государственное размежевание в Средней Азии и образование новых советских социалистических республик 12.23 KB
  Первыми субъектами СССР были четыре союзные республики: РСФСР УССР БССР и ЗСФСР. В дальнейшем СССР пополнялся новыми субъектами. На первом этапе развития Союза ССР происходило национальногосударственное размежевание в Средней Азии на территории Туркестанской АССР входившей в состав РСФСР и двух самостоятельных государств Хорезмской и Бухарской народных советских республик. были приняты декларации об образовании Узбекской ССР и Туркменской ССР.
28683. Образование СССР. Договор и Декларация об образовании СССР, их правовые основы 13.48 KB
  Образование СССР. Договор и Декларация об образовании СССР их правовые основы. Образование СССР определяется след. предпосылкой образования СССР было существование в республиках аналогичного режима диктатуры пролетариата.
28684. Разработка и принятие Конституции СССР 1924 г. Ее основные положения 12.45 KB
  Разработка и принятие Конституции СССР 1924 г. Конституция СССР 1924г. Она была принята ЦИК СССР 6 июля 1923 г. II Всесоюзным съездом Советов СССР.
28685. Военная реформа 1924 - 1925 гг. Создание территориально-милиционной системы и укрепление кадрового состава Красной Армии 12.76 KB
  Вместо единого Штаба Рабочекрестьянской красной Армии создано 3 самостх управления: Штаб РККА Главное Управление РККА и Инспекторат РККА. Штаб РККА становится основным органом управления в системе военного ведомства на котй возлагались задачи разработки общих вопросов обороны на случай войны. управление ГУ РККА возлагались задачи управления текущей жизнью армии и обеспечения ее повседневных нужд. Инспекторат РККА ведал боевой подготовкой войск и командного состава а также инспектированием Вооруженных сил.
28686. Реконструкция сельского хозяйства. Совершенствование форм управления промышленностью, и сельским хозяйством в конце 20-х - начале 30-х гг. 13.37 KB
  Совершенствование форм управления промышленностью и сельским хозяйством в конце 20х начале 30х гг. С этого времени косвенное регулирование вытесняется элементами непосредственного управления. На место функциональной системы управления экономикой пришел отраслевой и производственнотерриториальный принцип.
28687. Мероприятия партии и правительства по проведению коллективизации: плюсы и минусы 12.53 KB
  началась массовая коллективизация заготовительная компания приняла насильственный характер рыночные механизмы были сломлены. сплошная коллективизация должна была завершиться на Северном Кавказе Нижнем и Среднем Поволжье. Принудительная коллективизация вызвала забой скота и падение урожаев а выкачивание хлеба из села выросло.