Network:Evolution
Спецификация Net:Evo 2.0
Эволюция проекта определила новую ступень в его развитии.

Ключевым понятием Net:Evo 2.0 стала Среда Окружения. Новая принципиальная концепция, призванная решать те задачи, которые раньше каждый сервер должен был решать отдельно.

Среда Окружения - это сервер (подобно серверам ранних версий, например, Net:Evo 1.6), который также может получать параметры и возвращать результат. Новшество в том, что это фиксированный системный сервер, который является частью самой Net:Evo 2.0. Ранние версии не накладывали ограничений на формат взаимодействия, они лишь фиксировали способ расположения серверов на диске. Проблема заключалась в том, что каждый сервер должен был сам выбирать какой интерфейс ему поддерживать, основываясь на том, что к нему обратится какой-то абстрактный клиент, об интерфейсе которого он совершенно ничего не знает. В NE2 эта проблема решена посредством Среды Окружения (СО). Отныне каждый сервер должен уметь общаться лишь с СО и следовательно реализовывать ее интерфейс. Задача СО - быть посредником между клиентом и сервером и обеспечить поток информации в обоих направлениях в необходимом формате. Т.е. клиент передает СО данные в удобном для себя виде, СО спрашивает у сервера в каком виде он готов принять данные и передает ему уже возможно преобразованные данные. Такой способ взаимодействия абстрагирует клиента и сервера, от них требуется поддерживать спецификации СО, которые и составляют спецификации NE2.

Ряд новшеств представлен и в устройстве механизмов приема-передачи данных. Теперь данные стандартно могут передаваться как в виде параметров командной строки, так и в файле, имя которого передается в командной строке. Кроме того возврат данных осуществляется в файл, который также отдельно задается на стадии запроса. В файле возврата может быть больше одного значения (в Net:Evo 1.6 предполагался возврат лишь одной строки).

А теперь собственно о Среде Окружения 1.00.

Вот команды командной строки, которые он понимает:

-param_file [file_name]
Сообщает среде окружения, что входные параметры содержатся в файле file_name, если за -param_file ничего нет, то используется файл param_file_default
-param [-/param]
сообщает СО, что следующие параметры до -/param и есть входные параметры, если же -/param нет, то все остальное расценивается как входные параметры.
-return_file [file_name]
Сообщает СО, что выходные параметры следует поместить в файл file_name, если файл не задан, то используется файл return_file_default
-run [server_name]
Просит СО запустить сервер server_name учтя все пожелания клиента. Если сервер не задан, то вызывается последний сервер (записывается в файле server_file_default). В случае ошибки обращения к серверу, сообщение об ошибке выводится в выходной поток (выходной файл). Если сервер не найден генерируется ошибка ERROR_SERVER_NOT_FOUND.
-run_file [file_name]
Просит СО запустить все серверы из файла file_name, используя заданные настройки. Если файл не задан, испол ьзуется run_file_default
-use [file_name]
Просит СО прочитать файл file_name и выполнить комманды оттуда. В файле должна быть указана командная строка с необходимыми параметрами. Если файл не задан используется файл use_file_default. В любом файле допустима команда #!--GO--!#, которая сообщает СО, что необходимо искать продолжение содержания в другом файле, имя которого задано после команды. Чтение текущего файла прекращается и СО пробует прочитать следующий файл, добавляя все прочитанное к уже прочитанному ранее. Если происходит ошибка при обращении к файлу, чтение прекрещается и используются те параметры, которые СО успела прочитать, при этом в выходной поток ошибка не передается. Для того чтобы СО передавала ошибку в выходной поток, если не удается считать все файлы нужно использовать команду #!--EGO--!#.

Помимо этого СО понимает команду #!--INCLUDE--!# и #!--EINCLUDE--!#, которые отличаются от GO только тем, что после прочтения дочернего файла СО возвращается на 1 уровень выше и продолжает считывание текущего файла. При этом следует учесть, что выполненние команд произойдет после считывания всех файлов.

-int [file_name]
Выполняет все команды из файла file_name в режиме интерпретатора, при этом различные наборы команд должны быть отделены в файле командой #!--BREAK--!#. Если файл не задан используется файл int_file_default
-ver
Спрашивает у СО текущую версию.
-set_param_file_default [file_name]
Задает файл для param_file_default (в файле setting.set). Проверка на существование файла не производится.
-set_return_file_default [file_name]
Тоже
-set_server_file_default [file_name]
Также задает файл для строки server_file_default, в который записывается последний вызванный сервер.
-set_run_file_default [file_name]
-set_use_file_default [file_name]
-set_int_file_default [file_name]

СО лежит в папке net, имеет запускаемый файл net.exe, системный файл setting.set (обычный текстовый файл), в котором следующие записи (все строки вида параметр=значение): param_file_default=
return_file_default=
server_file_default=
run_file_default=
use_file_default=
int_file_default=

Теперь, наверное, уже понятно как будет устроена Net:Evo 2.00. Чтобы клиенту, обратиться к серверу, он запускает СО, передает все необходимые параметры, СО анализирует их и уже работает с сервером, после чего возвращает результат (который был получен от сервера+необходимая обработка). Осталось осветить этап общения с сервером. Поддержка сервером интерфейса NE2 и означает, что он должен правильно обрабатывать запросы СО.

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

Пока вроде и все. С выходом самого net будет более подробная информация.

Используются технологии uCoz


Vitaly-Stepanov@rambler.ru
3 июля 2004